近期在维护一些老代码,是使用Eclipse开发的,我想用过Android Studio的人,再回去用Eclipse是无比难受的,所以趁着周末,赶紧把代码迁移到Android Studio。
迁移步骤
- 打开Android Studio选择Import Project(Eclipse ADT, Gradle,etc.)
- 选择Eclips项目AndroidManifest.xml文件所在的目录,单击确定
- 选择保存转换后项目的路径
- 后面,默认即可,如果项目依赖其它项目,会一同导入。
- 稍等一会,项目就导入完毕
打包指定文件到jar中
经常需要把项目打包成jar,以供其它程序使用,Eclipse导出jar非常方便,Android Studio需要在module的build.gradle中进行配置
android{
......
}
dependencies {
......
}
//打包之前,删除以前的文件
task clearJar(type: Delete) {
delete 'build/libs/test.jar'
}
//打包生成test.jar
task makeLibraryJar(type:org.gradle.api.tasks.bundling.Jar) {
//指定生成的jar名
baseName 'test'
//从哪里打包class文件,可以指定文件和目录
from('build/intermediates/classes/debug/com/example/test/')
//打包到jar后的目录结构
into('com/example/test/')
//去掉不需要打包的目录和文件
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
makeJar.dependsOn(clearJar,build)
在自带命令行下运行
gradle makejar
即可生成需要的jar包
问题和解决方法
迁移完成之后,直接编译可能会遇到一些问题,以下是我遇到的问题和解决方案
配置Android NDK
解决方法:在local.properties文件中加入
ndk.dir = XXXX
Error:(12, 0) Error: NDK integration is deprecated in the current plugin.
解决方法:需要在gradle.properties文件中加入
android.useDeprecatedNdk=true
Error:(2, 18) string: No such file or directory
解决方案:程序使用了C++标准库,需要在模块的build.gradle加上
stl "gnustl_static"
Error:Duplicate files copied in APK META-INF/LICENSE.txt
解决方案:在module的build.gradle中加入
android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
Error:(17, 28) 错误: 程序包org.apache.http.util不存在
解决方案:以前的项目使用了httpclient,而在Android 6.0已经把httpclient相关代码移除,如果需要使用,需要在module的build.gradle中加入
android {
useLibrary 'org.apache.http.legacy'
}
参考
迁移过程参考一下文档:
网友评论