Android编译通过,运行编译错误问题总结

一.   > Could not find com.android.support:support-annotations:28.0.0.
         Required by:
             project :app > com.android.support:support-v4:21.0.3
      > Could not find com.android.support:support-annotations:28.0.0.
         Required by:
             project :app > ch.acra:acra-http:5.3.0 > ch.acra:acra-core:5.3.0 > ch.acra:acra-javacore:5.3.0

       解决方法:

          1.  看异常未找到的是annotations注解包,首先查是否依赖support-annotations,如果依赖了appcompat 包也可以,它的内部包含注解包;

          2.  依赖后不起作用,查看sdk版本,使用版本对应注解包版本,例如:sdk版本为26,而support-v4使用的21的版本,依赖那句代码下面会有红线;

          3.  其实上面的都没用,Could not find 是因为 com.android.support 是在google的maven库中,需要在项目根目录下的build.gradle 中在 repositories 节点下添加 google();

          4.  第三点添加后可能还不能使用,因为google的maven库需要gradle插件版本在3.2.0之上,如下图:

所以在根目录下的build.gradle 中还要提高gradle插件版本,对应的也需要在gradle/wrapper目录下的gradle-wrapper.properties文件中调整gradle版本;

二.   > Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.
           - butterknife-6.0.0.jar (butterknife-6.0.0.jar)
  Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.

      解决方法:

          1.  第一种解决方法如英文提示第一种

                 添加依赖  annotationProcessor "com.jakewharton:butterknife:8.8.1"

          2.  第二种解决方法如英文提示第二种

                 defaultConfig节点下添加   javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } ,最好用第一种,英文提示有说这种会废弃,但是看你项目的具体环境,我使用第一种时还是编辑不通过。

三.   > com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\XQSKKFJ\.gradle\caches\transforms-1\files-1.1\acra-core-5.3.0.aar\339764307da79406ab48d82ea26a52b1\jars\classes.jar

      解决方法:

          1.  最为简单,在build.gradle中设置java jdk版本为1.8

四.   Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: app/build/intermediates/transforms/dexBuilder/debug/目录下无数个n.jar报错(n为整数)

  Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
  Program type already present: org.acra.sender.HttpSender$Method

      解决方法:

          1.  删掉app下的build目录,编译重新生成是没有用的。重要的是看报错信息最下面那句,会提示冲突的位置。例如上面的错误就是org.acra.sender.HttpSender这个类存在两个,一个在本地打的aar中,一个在网络依赖库,我需要是用网络库的,就去掉aar中的。(具体根据自己的使用情况)

猜你喜欢

转载自blog.csdn.net/u012551120/article/details/93459913
今日推荐