ADT项目转AS项目

公司的老项目需要更新摄像头监控的一个SDK,是使用Eclipse开发的一个Android项目,Eclipse已搁置许久不想在动,便导入AS继续修改,更改过程中遇到一些问题做下总结。(AS版本2.2.3)

1.项目依赖库导入问题

在ADT中,依赖库的配置是写在project.properties中,导入是需提前手动更改依赖库的路径,错误的情况下是不能导入项目到AS中。


ADT项目转AS项目_第1张图片
project.properties.png

项目导进来之后,来不及兴奋便一坨坨的异常甩脸上了...

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.
exception.jpg

错误原因: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包问题
ADT项目转AS项目_第2张图片
jar.png

项目中用的是v4的jar包,AS自动导入了 compile 'com.android.support:support-v4:18.0.0',和原项目的jar包不同,只能找到原项目的jar包手动导入,问题解决,继续跑。
竟然真的跑起来了...但问题还是没有止步!

4.项目桌面图标出现了两个一样的

原因:多个Activity 中添加android.intent.category.LAUNCHER 造成的
找到依赖的Library,发现


ADT项目转AS项目_第3张图片
Library.AndroidManifest.png

好,注释掉!

5.Android7.0 Detected problems with app native libraries

这可以说是一个BUG,也可以说不是。有一些过时的SDK更新了就不会出现了,这也是我这次要做的任务,改完之后就消失了。
贴个链接自行研究 detected problems with app native libraries

ADT项目转AS项目_第4张图片
text relocations.jpg

当然还有一些在修改过程中发现的一些问题:

6.项目的JDK问题

原来的项目使用的是1.6的JDK,所以在1.6中不会出现的问题在其他版本中可能会报错。


ADT项目转AS项目_第5张图片
jdk.png

解决方法:在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

至此,项目已经可以完美的跑起来了。
ADT项目转AS项目_第6张图片
beautiful.jpg

你可能感兴趣的:(ADT项目转AS项目)