ADT项目转AS项目

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

1.项目依赖库导入问题

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


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 <application> 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包问题
jar.png

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

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

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


Library.AndroidManifest.png

好,注释掉!

5.Android7.0 Detected problems with app native libraries

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

text relocations.jpg

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

6.项目的JDK问题

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


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

至此,项目已经可以完美的跑起来了。
beautiful.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,532评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,971评论 6 342
  • 1. OKR:对可量化的指标,用kpi考核,对不能量化的创新性指标,用oki考核,企业、部门、个人的目标要逐层分解...
    曲同宁阅读 211评论 0 0
  • 夜宿紫荆城,浊酒独思亲! 泛舟颐园上,难识旧乡音。 莺啼两岸绿,忽闻残笛声。 句句催泪下,久候未识人!
    无_念阅读 119评论 4 1