本文是基于Eclipse导出gradle文件的方式来导入项目,在此将整个迁移过程以及在迁移的过程中所遇到的问题及解决方案记录,以供查阅。
导出gradle:
- Export 导出gradle文件,eclipse版本最好在22.0.0及以上
- 选择项目根目录生成的 build.gradle导入Android Studio
导出gradle遇到问题:主项目或者library的build.gradle文件未生成,升级/换个高版本eclipse解决,不知原因。
关于导出和修改的准备工作这里很详细,有图有真相。
修改build.gradle文件
Project的build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}module的build.gradle
apply plugin: 'com.android.application' // app
apply plugin: 'android-library' // library
注: AndroidStudio导入根目录下的build.gradle文件,非项目目录
导入前的配置
由于导入时会根据当前的gradle属性配置下载对应的gradle版本,现象卡在build gradle
修改gradle/gradle-wrapper.properties文件
之前 distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
之后 distributionUrl=file\:/E:/workspace/android_studio/gradle/gradle-2.8.zip
避免卡在build的界面,进入AS后,打开界面右上侧Gradle,选择Gradle.Setting,修改
Build Tools/Gradle/use local gradle distribution,选择AS安装目录下的.~/gradle/gradle-xx.xx
遇到问题:
1 Error:(11, 0) Gradle DSL method not found: 'android()'
Possible causes:The project 'eagle-android' may be using a version of Gradle that does not contain the method.
<a href="openGradleSettings">Gradle settings</a>The build file may be missing a Gradle plugin.
<a href="apply.gradle.plugin">Apply Gradle plugin</a></li>
解决方案参考这里
2 Error:The SDK Build Tools revision (18.1.0) is too low for project ':Eagle'. Minimum required is 19.1.0
解决:打开日志对应的项目的build.gradle,修改buildtools版本
3 Error:Error: com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:Process‘command‘/Users/billy/Library/Android/sdk
/build-tools/21.1.2/aapt‘‘ finished with non-zero exit value 42
4 Error:Execution failed for task ':Eagle:transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 2
常见的原因:
1.资源文件名冲突
这个换个文件名就可以了
2.引用包重复
Android studio 下面有了v4包或者v7包,这个时候在libs下又添加了一次包,就会报这个错误,删掉Libs下重复的包就行了。
3.文件名显示的格式与文件本身的格式不对应
这个比较难发现,重新换个正确的文件就可以了。
4.工具栏build/clean,错误日志被依赖的module的minsdk大于依赖的minsdk,修改对应minsdk即可.
5 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.UnsatisfiedLinkError: Couldn't load
JNI相关,.so库没有打包进apk
引用了.so库的module配置
在对应module的build.gradle文件添加代码,sync后会增加一个jnilibs的文件夹
sourceSets {
main {
jniLibs.srcDir 'libs' // <-- Set your folder here! .so库的实际路径
}
}
gradle的配置
-
配置仓库地址列表,设置全局仓库
c:/user_name/.gradle创建init.gradle文件,自动按先后顺序请求仓库,第一个maven的镜像
allprojects {
repositories {
mavenLocal()
maven {
name 'oschina'
url "http://maven.oschina.net/content/groups/public/"
}
maven {
url "http://repo.maven.apache.org/maven2"
}# 可继续添加 } }
其他问题:
1. 图片报错(类似transformEx)
一般是9patch图片的错误,从其他项目拷贝的9patch图片一般不能用(猜测是因为使用不同的SDK的tools所画导致),
解决方法:如果需要9patch,就重画,studio可直接编辑,不需要则修改为普通png图片
2. 运行时安装了多个app,当项目有多个module依赖的时候,如果被依赖的module的清单文件有配置launcher入口的activity时,
会安装一个对应的app,尽管在build.gradle文件配置了apply plugin: 'com.android.library'
解决方案:直接删除<application></application>