Articles of android gradle

./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 { … } […]

gradlew appengineEndpointsInstallClientLibs有错误执行失败的任务’:compileJava’。 >无效的源版本:1.7

我无法安装客户端库。 我总是有这个错误。 :tangke-appengine:appengineDownloadSdk :tangke-appengine:compileJava FAILED FAILURE: Build failed with an exception. 什么地方出了错: 任务执行失败’:tangke-appengine:compileJava’。 无效的源版本:1.7 我的java版本是这个。 java版“1.7.0_51” Java(TM)SE运行时环境(版本1.7.0_51-b13) Java HotSpot(TM)64位服务器VM(内置24.51-b03,混合模式)

Checkstyle自定义检查与gradle(android studio)

我目前正在将我的应用程序项目从基于Ant的Eclipse迁移到基于Gradle的Android Studio。 我的eclipse项目将自定义Checkstyle检查配置为自定义,然后自定义包包含在Checkstyle配置XML中。 我正面临将此自定义支票迁移到Android工作室的问题。 不确定我在哪里可以指示gradle拿起这个自定义包。 现在坚持这个问题几天了! 任何帮助真的很感激…… 目前运行到TreeWalker错误无法实例化自定义程序包: [错误] Unable to create a Checker: cannot initialize module TreeWalker – Unable to instantiate jp.myproject.tools.checkstyle.checks.naming.MemberNameCheck [CheckStyle的-packages.xml] [Checkstyle配置文件]

您应该通过DependencyResolution手动设置相同的版本

错误:任务’:app:preDebugBuild’的执行失败。 Android依赖项“com.google.android.gms:play-services-ads”具有不同版本的编译(11.8.0)和运行时(11.0.4)类路径。 您应该通过DependencyResolution手动设置相同的版本 我的项目是: buildscript { repositories { jcenter() google() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.1’ classpath ‘com.google.gms:google-services:3.0.0’ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() google() } } task clean(type: Delete) { delete rootProject.buildDir } 我的模块gradle: apply plugin: […]

gradle如何处理具有不同支持库v4版本的多个模块?

我有一个Android项目,它依赖于不同的模块,每个模块依赖于android support-v4库的不同版本 1)我的应用程序还依赖于最新的android support-v4库(修订版21)所以在这个build.gralde中我放了一行: dependencies { compile ‘com.android.support:support-v4:21.0.0’ } 2)Facebook SDK(v.3.15)模块也依赖于android支持库v4,但是版本13及其build.gradle文件说: dependencies { compile ‘com.android.support:support-v4:13.0.+’ compile files(‘../libs/bolts.jar’) } 3)还有一个模块,在这种情况下我们可以调用Module3,也取决于support-v4,但是与其他模块的修订版本不同,如下所示: dependencies { compile ‘com.android.support:support-v4:19.0.+’ compile files(‘../libs/bolts.jar’) } 问题: 1)gradle如何处理不同的support-v4库修订版? 2)它究竟做了什么? 3)就apk大小而言,它是什么意思?

如何在多项目Android Build中排除重复的C共享库(.so)?

在构建具有两个库模块的父项目时,我遇到了“重复文件”冲突,这两个库模块使用了相同的libc++_shared.so共享库。 ( 注意 :请不要认为这是一个“重复的问题”。我已经阅读了几篇相关的post,这些post帮助我做到了这一点。但是,没有post提供了一个在我的案例中涉及NDK工件的答案。) 当我只有1个这样的库模块时,构建工作正常。 第二个库模块的添加现在正在产生冲突。 考虑以下项目结构:1个父项目,2个“子”项目 – 但每个项目位于相同的目录级别(即不按层次结构嵌套) ProjectA/ (Parent) LibraryModuleA1/ build/exploded-aar/com.package.name/ LibraryModuleB1//jni/armeabi-v7a/libc++_shared.so LibraryModuleC1//jni/armeabi-v7a/libc++_shared.so build.gradle (bgA1) Test_APK_Module A1T/ build.gradle (bgA1T) build.gradle (bgPA) ProjectB/ LibraryModuleB1/ (Uses NDK) build/lib/armeabi-v7a/libc++_shared.so build.gradle (bgB1) build.gradle (bgPB) ProjectC/ LibraryModuleC1/ (Uses NDK) build/lib/armeabi-v7a/libc++_shared.so build.gradle (bgC1) build.gradle (bgPC) 库模块A1依赖于库模块B1和C1。 A1 – > B1 A1 – > C1 项目B和C都具有基于NDK的代码并正确构建/测试。 两者都依赖于libc++_shared.so共享库。 但是,在构建项目A时,我在以下错误中遇到以下错误:LibraryModuleA1:packageDebugTest任务: Error: duplicate […]