前言: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 插件版本的对照关系如下图:
问题二:.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(这位博主写的很详细,我当初也是跟着他的步骤一步步做下来的,这里就不搬过来了,直接给个传送门)