公司的老项目需要更新摄像头监控的一个SDK,是使用Eclipse开发的一个Android项目,Eclipse已搁置许久不想在动,便导入AS继续修改,更改过程中遇到一些问题做下总结。(AS版本2.2.3)
1.项目依赖库导入问题
在ADT中,依赖库的配置是写在project.properties中,导入是需提前手动更改依赖库的路径,错误的情况下是不能导入项目到AS中。
项目导进来之后,来不及兴奋便一坨坨的异常甩脸上了...
2.项目依赖库冲突问题
Error:Execution failed for task ':dhscs:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
Error:
Attribute application@icon value=(@drawable/ic_logo) from AndroidManifest.xml:62:9-41
is also present at [dhscs:aframework:unspecified] AndroidManifest.xml:13:9-45 value=(@drawable/ic_launcher).
Suggestion: add 'tools:replace="android:icon"' to element at AndroidManifest.xml:59:5-708:19 to override.
错误原因:AndroidStudio的Gradle插件默认会启用Manifest Merger Tool,若你导入的Library项目中也定义了与主项目相同的属性,则此时会合并失败,并报上面的错误。
解决办法:找到AndroidManifest.xml,在manifest标签中加上
xmlns:tools="http://schemas.android.com/tools"
在application标签中加上
tools:replace="android:icon"
如果label和theme属性导致冲突,在application标签中加上
tools:replace="android:icon,label,android:theme"
解决,没问题先跑跑看。啪~又是一坨...
3.项目jar包问题
项目中用的是v4的jar包,AS自动导入了 compile 'com.android.support:support-v4:18.0.0',和原项目的jar包不同,只能找到原项目的jar包手动导入,问题解决,继续跑。
竟然真的跑起来了...但问题还是没有止步!
4.项目桌面图标出现了两个一样的
原因:多个Activity 中添加android.intent.category.LAUNCHER 造成的
找到依赖的Library,发现
好,注释掉!
5.Android7.0 Detected problems with app native libraries
这可以说是一个BUG,也可以说不是。有一些过时的SDK更新了就不会出现了,这也是我这次要做的任务,改完之后就消失了。
贴个链接自行研究 detected problems with app native libraries
当然还有一些在修改过程中发现的一些问题:
6.项目的JDK问题
原来的项目使用的是1.6的JDK,所以在1.6中不会出现的问题在其他版本中可能会报错。
解决方法:在build.gradle中android里加入
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6 //相应的JDK版本
targetCompatibility JavaVersion.VERSION_1_6 //相应的JDK版本
}
或者选中项目按F4,找到Properties - Source Compatibility和Target Compatibility,都改成相应的JDK版本
7.项目的.9图片问题
Eclipse项目中可以直接使用.9图片,在AS中新增了一个对.9图片的安全检查机制,要求.9图片四条边都要进行描边。
解决办法:在build.gradle中android里加入
// 取消掉系统对.9图片的检查
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
至此,项目已经可以完美的跑起来了。