ecplise项目升级为android studio项目过程中遇到的问题总结

最近在使用AS常遇到一些问题反复出现。于是整理了一下以前遇到的一些问题,并附带常见的解决办法。

  • 首先简单看一下gradle build的工作流程,如图:

如上图,gradle编译主要分为Load build,Configure build,calculate task graph ,Run tasks四个步骤,但是一般情况主要关注第4步Run tasks,这一步是编译时问题高发地带。大部分错误都是在Run tasks里面寻找。

 

  • android studio寻找错误步骤:

1.点击下图红色区域查看编译错误日志:

7

2. 找到具体出错的task,在Terminal中手动执行任务,以便查看错误。如图:

8

3.在Terminal中用输入命令 gradlew build  --debug/--scan/--stacktrace 编译,以便发现问题,如下图:

0

 

  • 常见错误收集分析:   

:xxx:compileDebugJavaWithJavac错误

描述:比较常见的错误,引发原因有多种,如java代码本身存在错误,代码中引用了不存在的三方库,编译缓存错误等。

发现问题:首先Build->clean project再编译。不行的话就在Terminal中输入gradlew :xxx:compileDebugJavaWithJavac ,其中xxx根据实际情况替换对应出错项目。比如我的执行结果的情况如下:

1

出现该错误的是因为android 6.0(api 23)删除了一些库导致的。

解决办法:

1.找到出错工程gradle文件的compileSdkVersion和targetSdkVersion修改为23以下。

2.在android sdk的安装目录找到对应jar包 比如/Users/xxx/Library/Android/sdk/platforms/android-                      22/optional/org.apache.http.legacy.jar,拷贝到工程的libs目录下,并在gradle文件对应位置添加implementation('org.apache.http.legacy')。 

 

:xxx:transformDexArchiveWithExternalLibsDexMergerForDebug,Program type already present,com.android.builder.dexing.DexArchiveMergerException等错误

描述:比较常见的错误,相同jar包(无论版本号是否相同)在多个工程中同时出现多份。

发现问题: gradlew :xxx:transformDexArchiveWithExternalLibsDexMergerForDebug,我的问题如下:

3

不难看出是android.net.http.CertificateChainValidator出现冲突,在android studio界面双击shift,搜索具体冲突位置。如图:

4

可以看出有两个jar包包含了同一个类。

解决办法:

1. jar包只保留一份,在多个工程中直接引用。

2. jar包保留多份,分别在每个工程中的gradle配置中的dependencies属性中添加compileOnly  ('对应的jar包')

 

:xxx:processDebugManifest, Manifest merger failed with multiple errors等错误

描述:处理AndroidManifest.xml文件是出错,引发原因有多种,比如manifest文件本生配置错误,多个manifest文件中都有设置application属性或启动activity,这样在合并的时候就会出现冲突 。

发现问题:gradlew :xxx:processDebugManifest,我的错误如下:

5

解决办法:如果出现和上图类似的错误,只需找到对应行修改即可。如果多个manifest都设置了启动activity,只保留主工程的即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值