Eclipse项目迁移到Android Studiod的常见错误

前言:Android Studio出来已经有一段时间了,从刚开始的不成熟到现在已然成为了主流的开发工具。我也一直想着从Eclipse转到Android Studio,直到前段时间,公司终于决定将项目迁移到Android Studio,我才正式用上了这高大上的开发工具。项目迁移的道路是曲折的,特此记录迁移过程中遇到的一些问题,让后来的小伙伴们少走一些弯路。


问题一:Gradle加载报错

Could not find any version that matches com.android.tools.build:gradle:1.12.+.
Required by:
    android_app:appName:unspecified

原因:Gradle 插件版本和 Gradle 版本不一致
解决:修改 Project 下的 build.gradle文件,使Gradle 插件版本和gradle/wrapper/gradle下的Gradle 版本一致。
Gradle 和 Gradle 插件版本的对照关系如下图:
Gradle 和 Gradle 插件版本的对照关系图


问题二:.9图片报错

No marked region found along edge

原因:.9图片不符合规范(Android Studio的.9图片的要求比Eclipse严格多啦!)
解决:去掉.9后缀或者重新制作规范的.9图片。(Android Studio集成了.9图片制作工具,可以直接在AS中打开图片进行制作,注意:.9图片的左边框和上边框至少有一个描点,右边框和下边框则有且只有一段描点。)


问题三:找不到Apache HttpClient相关的类

错误:程序包org.apache.http.client不存在

原因:在android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类
解决:在build.gradle文件中声明依赖项:

android {
    useLibrary 'org.apache.http.legacy'
}

问题四:找不到useLibrary()方法

Gradle DSL method not found: 'useLibrary()' 

原因:Gradle plugin版本太低
解决:调高Gradle plugin版本(至少1.3.0)

dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }

问题五:Duplicate files copied in APK

Duplicate files copied in APK 
META-INF/LICENSE.txt 
File 1: android_app:appName/libs/commons-codec.jar 
File 2: android_app:appName/libs/httpmime-4.1.3.jar
File 3: android_app:appName/libs/commons-net-3.3.jar

原因:某些文件重复了,据说是Android Studio 自身的bug
解决:在build.gradle 文件里的在 android 代码块中添加如下代码

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    // ...
}

问题六:找不到类DisplayOutputManager

错误:找不到符号
符号:类DisplayOutputManager
位置:程序包android.os

原因:没有导入Android系统包(在这里我取名:classes.jar,当然你也可以取android.jar、 framework.jar,反正只是个名字而已)
解决方法:
第一步:在项目根目录下新建android_framework文件夹,放入classes.jar
第二步:截图如下:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

第三步:在builder.gradle文件下加入以下代码:

gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
                options.compilerArgs.add('-Xbootclasspath/p:android_framework\\classes.jar')
        }
    }

问题七:引入自己编译的Android framework后,调用系统隐藏的API,仍提示cannot resolve symbol ,即不能引用,但是编译通过,运行通过
解决方法:http://blog.csdn.net/ouo555/article/details/46274095(这位博主写的很详细,我当初也是跟着他的步骤一步步做下来的,这里就不搬过来了,直接给个传送门)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值