Android Studio导入Eclipse项目的一系列问题解决

时间:2022-04-03 17:06:03
  • 场景
    今天花了一天时间把公司项目从Eclipse迁移到Android Studio,算是一个中型的App吧,现在将今天遇到的一系列问题以及解决过程记录下。

  • 问题一(导入项目)
    这个简单,File–>Import Project–>选择路径–>按照提示一步步直到Finish。我这里用的是刚更新的Android Studio 2.1.1,只需要导入App主工程,它会自动帮我生成依赖的各个Module,非常方便,但是…编译时问题就多了!

  • 问题二(重复无效的数据)
    因为在之前Eclipse项目中,有不同的资源文件(例如:color、string)中包含了相同名字的资源键值对,或者在AndroidManifest.xml中包含了一些无效的组件节点等,这些都要一一删除。

  • 问题三(libpng error:Not a PNG file)
    在网上找了一些资料都说,这是直接将jpg后缀改为pn*生的问题,有以下两种解决方法:
    1、项目小的话,将res中所有png文件一一打开,看下该文件右上角标的是PNG还是JPEG,如果是后者就需要先将其改为jpg再用转换工具转成png了。
    2、项目大而且不想麻烦的话,在报错Module的build.gradle的android节点中加入以下代码:

    aaptOptions{
        //禁止AAPT优化png文件
        cruncherEnabled = false
    }
  • 问题四(程序包org.apache.http不存在)
    这里compileSdkVersion设的是23,所以会有这个报错,因为Android 6.0默认将Apahce Http Client移除了,再想用到它我们就需要在报错Module的build.gradle的android节点中加入以下代码:
    //使用Apahce Http Client
    useLibrary 'org.apache.http.legacy'
  • 问题五(transformResourcesWithMergeJavaResForDebug)
    这个问题貌似有几种不同情况,有人说这样,在报错Module的build.gradle的android节点中加入:
    packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' }

或者这样,在报错Module的build.gradle的android节点中的defaultConfig节点中加入(我就是用这个方法解决了报错问题)

//也可以解决应用总方法数限制的问题(method ID not in [0, 0xffff]: 65536)
multiDexEnabled true

目前就这些,还有一些待解决的,包括导入后能运行但是编译速度非常慢,运行速度也很慢,会先白屏几秒再进入App,解决了再写进来。