Articles of android gradle

如何在Android Studio 2.3.2上解决“无法find所请求目标的有效证书路径”的问题

当我尝试创建空活动项目时,我在Android Studio 2.3.2中遇到以下错误。 当我尝试导入项目时,我也得到了这个。 Error:Cause: unable to find valid certification path to requested target 在这里,我的gradle buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:2.3.2’ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) […]

即使没有任何更改,Android多模块Gradle构建速度也很慢

我有一个包含多个模块的Android项目,即使我尝试重建它而不改变任何东西,构建时间也很慢。 其结构类似于: 有更多的“父”(和独立的父兄弟姐妹)和“function”模块,但设置是图片的设置。 我的gradle.properties文件如下: org.gradle.jvmargs=-Xmx4096m -Xms2048m org.gradle.parallel=true org.gradle.daemon=true org.gradle.configureondemand=true 我使用的是Gradle版本3.5和插件版本2.4.0-alpha7。 该项目还使用multidex( javaMaxHeapSize “4g”和jumboMode true ),数据绑定,kotlin和java以及几个注释处理器。 在构建时,我可以看到多个线程在大多数项目中并行运行不同的任务,除了主要用于最终的“app”模块(我认为这是正常的)。 但是很多时间似乎花在了不同的:: compileJavaWithJavac任务上。 即使没有改变任何东西,在具有16 Gb RAM的MacBook Pro i7上构建大约需要30秒。 如果我在function模块的方法中更改了一行代码(甚至没有更改方法的签名),则构建时间超过1:30分钟。 这些正常时期? 有什么我可以进一步优化以改善构建时间吗? 我还检查了一些其他答案: 从这一个 ,设置preDexLibraries = false没有帮助,我已经使用assembleDebug 这里建议的incremental = true不起作用, 不推荐使用 禁用即时运行似乎有所帮助但不多 上面讨论的项目的构建风格已经设置了minSdkVersion 21

在没有google_play_services.json或gradle的情况下设置google_app_id

02-17 18:16:09.870:E / GMPM(12680):GoogleService初始化失败,状态:10,缺少预期资源:’R.string.google_app_id’用于初始化Google服务。 可能的原因是缺少google-services.json或com.google.gms.google-services gradle插件。 我正在尝试删除此错误日志。 我可以使用google_play_services.json这样的链接find一些解决此类问题的建议: GoogleService无法初始化 但我的项目不使用gradle,所以我将在strings.xml中添加google_app_id。 现在我很困惑。 究竟是什么google_app_id? 有人说它是项目编号,有人说它是项目ID …即使在google_play_services.json文件中也有一些名为“project_id”,“project_number”,“mobilesdk_app_id”,“client_id”以及仍然没有“google_app_id”属性的属性。 每个应用程序的独特价值都可以吗? 如果是这样,它将使用项目ID或号码,但我不确定。 先谢谢你。

Android Studio 1.4(RC1,RC2)中的本机调试器未触及断点

我的项目中有一个PDFViewer模块,具体取决于android库模块libPDF 。 本机代码包含在库模块(在jni文件夹中)以及相应的android代码中。 我正在使用Gradle实验0.3.0-alpha4(与0.2.0和0.2.1相同的问题)。 有来自jni文件夹之外的库的本机文件 – 它们包含在android.ndk使用android.sources和带有CFlags的头文件。 该库被编译成.so文件并包含在apk中。 该项目使用PDFViewer的默认调试本机配置进行编译和运行,调试器以警告启动: 注意! 找不到符号目录 – 请检查您的本机调试配置。 调试时,本机代码(和Java代码)中没有断点。 如果我暂停调试器,则执行在一个名为epoll_wait的函数中。 我不知道这是否重要,但在Android Studio 1.3.2中我得到了 Throwable:找不到LLDB服务器 在事件日志中。 如果我尝试使用GDB,它也会引发exception。 我只建造了armae​​bi-v7a版本。 在给定的示例中,我没有看到任何特殊的gradle代码来包含本机代码的调试信息。 或者我错过了什么? 我是否需要自己从本机配置选项添加符号目录? 这些目录是什么以及如何find它们? 调试时示例示例不显示此警告,并且在其本机配置选项中未设置符号目录。 debuggable , jniDebuggable , ndk.debuggable标志设置为true, android:debuggable = true在清单中, CFlags += “-g”在ndk块中,这些都不起作用。 有任何想法吗? 提前致谢。 编辑:这是一个Github链接,其中包含我编写的示例示例以向您显示问题。 如果您尝试使用本机配置调试库中的本机代码,则不会触发任何断点。 新的Gradle实验0.3.0-alpha6无法解决问题。 其他人也有这个问题。 gradle插件仍然是alpha版本,因此库的原生调试仍然没有实现?

如何使用工具:overrideLibrary具有多个库

我想创建一个与API级别4兼容的Android项目,但仍希望使用UiAutomator测试它,在新设备上需要API级别18。 因此,应用程序也可以在旧设备上运行,但自动测试将在新设备上执行。 因此,我使用Android Studio创建了一个新项目,并添加了UiAutomator测试库: dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) testCompile ‘junit:junit:4.12’ compile ‘com.android.support:appcompat-v7:23.0.1’ androidTestCompile ‘com.android.support:support-annotations:23.0.1’ androidTestCompile ‘com.android.support.test:runner:0.3’ androidTestCompile ‘com.android.support.test:rules:0.3’ androidTestCompile ‘com.android.support.test.uiautomator:uiautomator-v18:2.1.1’ } 编译时我得到错误 Error:Execution failed for task ‘:app:processDebugAndroidTestManifest’. > java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 4 cannot be smaller than version 8 declared in library [com.android.support.test:runner:0.3] /Users/dom/Entwicklung/MacBookPro/git/GradleTest/app/build/intermediates/exploded-aar/com.android.support.test/runner/0.3/AndroidManifest.xml Suggestion: use tools:overrideLibrary=”android.support.test” to force usage […]

./gradlew构建因TypeSystem.getUnannotatedType而失败

我的项目工作正常,但是当我从终端尝试.gradlew构建时,最终会出现此错误。 我不确定我说实话,这有什么帮助吗? Unexpected failure during lint analysis of DatabaseHandler.java (this is a bug in lint or one of the libraries it depends on) TypeSystem.getUnannotatedType(TypeSystem.java:180) ->TypeSystem.getParameterizedType(TypeSystem.java:238) ->TypeSystem.getParameterizedType(TypeSystem.java:261) ->LookupEnvironment.createParameterizedType(LookupEnvironment.java:949) Unexpected failure during lint analysis of DatabaseHandler.java (this is a bug in lint or one of the libraries it depends on) TypeSystem.getUnannotatedType(TypeSystem.java:180) ->TypeSystem.getParameterizedType(TypeSystem.java:238) ->TypeSystem.getParameterizedType(TypeSystem.java:261) ->LookupEnvironment.createParameterizedType(LookupEnvironment.java:949)

运行androidConnectedTest时修复“无法desugar invokedynamic”

我的Android应用程序使用Java 8 lambdas,如下所示: myView.setOnClickListener(view -> someMethod()); 在构建应用程序或运行unit testing时,一切正常。 但是,当我运行./gradlew connectedAndroidTest ,我收到以下错误: Execution failed for task ‘:myModule:transformClassesWithDesugarForDebugAndroidTest’. Exception in thread “main” java.lang.IllegalStateException: Couldn’t desugar invokedynamic for com/…/MyActivity.onClick using java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; (6) with arguments [(Landroid/view/View;)V, com/…/MyActivity.lambda$onViewBound$0(Landroid/view/View;)V (7), (Landroid/view/View;)V] at com.google.devtools.build.android.desugar.LambdaDesugaring$InvokedynamicRewriter.visitInvokeDynamicInsn(LambdaDesugaring.java:474) at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1623) at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1126) at org.objectweb.asm.ClassReader.accept(ClassReader.java:698) at org.objectweb.asm.ClassReader.accept(ClassReader.java:500) at com.google.devtools.build.android.desugar.Desugar.desugarClassesInInput(Desugar.java:477) at com.google.devtools.build.android.desugar.Desugar.desugarOneInput(Desugar.java:361) at com.google.devtools.build.android.desugar.Desugar.desugar(Desugar.java:314) at com.google.devtools.build.android.desugar.Desugar.main(Desugar.java:711) Caused by: […]

任务应用程序执行失败:compileDebugJavaWithJavac,将android studio从3.0.1更新为3.1.0

编辑:最初它看起来不可逾越,我忽略了。 实际问题是一个轻松的胜利。 真正发生的事情是,无意中我创建(或)创建了fragment_feed.xml(v14)文件以及升级到3.1.0后的原始fragment_feed.xml文件。 但是, (v14)fragment_feed.xml中没有Button Id,它们实际上存在于原始fragment_feed.xml文件中,而我已在FeedFragment.java文件中声明它们,但FeedFragment.java仅考虑(v14)fragment_feed.xml而编译。 我在(v14)fragment_feed.xml文件中添加了按钮Id。 然后它工作得很好。 因此,检查是否存在任何v14 kinda xml文件,并检查是否有任何遗漏已在.java文件中声明。 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:app:compileDebugJavaWithJavac’. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) […]

Gradle – DexException:多个dex文件定义

我知道这个问题已经被提出但是我找不到合适的答案来解决我的问题。 我希望你们能帮助我。 该exception说明已Multiple dex files defined并尝试了几种常见方法来解决此问题。 不幸的是,这没有帮助。 * What went wrong: Execution failed for task ‘:app:transformClassesWithDexForDebug’. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java” finished with non-zero exit value 2 Cause: com.android.dex.DexException: Multiple dex files define Lnet/jcip/annotations/GuardedBy; UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lnet/jcip/annotations/GuardedBy; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) […]

如何让Gradle for Android从其他测试代码中查找库的测试代码?

我有一个Android应用程序,下面有两个库层。 每个库都有自己的测试代码。 我想上层库的测试代码扩展下层库的测试代码,但我无法弄清楚如何让Gradlefind下层库的测试代码(它只find生产代码)。 我的文件结构如下所示: myproject/ + myapp/ + src/ + main/ + java + com/myapp + lib1/ + src/ + main/ + java + com/myapp/lib1 + androidTest + java + com/myapp/lib1/test + lib2/ + src/ + main/ + java + com/myapp/lib2 + androidTest + java + com/myapp/lib2/test 该应用程序的gradle文件如下所示: apply plugin: ‘com.android.application’ android { … } […]