从Eclipse迁移到Android Studio
2015-11-25 16:00
411 查看
本博客与RayXXZhang的博客保持同步更新,转载请注明来自RayXXZhang的博客-从Eclipse迁移到Android Studio
Android Studio发布正式版后,Google的重心转向AS,以后可能也会逐步停止对Eclipse的支持,而且目前开源项目有很多以及不支持Eclipse。因此决心将项目转到Android Studio进行开发。
同时AS的使用需要配合相应位数的JDK,并且JDK的路径需要设置到JAVA_HOME环境变量。
AS的安装包大约300-400MB,但安装好后加上SDK等等其他依赖,占用空间可能达到8GB以上。
因此如果能获取到AS安装后的文件也可以直接复制使用。复制时需要复制Android Studio安装文件夹,SDK文件夹,以及个人目录下的.gradle和.androidstudiox.y文件夹,其中x.y为AS的版本号,其中存放着AS的配置。
然后在AS选择导入非AS工程的选项即可导入,第一次使用由于需要分析构建整个项目,所以速度会比较慢。
可以通过在build.gradle文件中添加jniLibs.srcDirs = [‘so文件的目录’]来导入so库
在打包时gradle就无法决定应META-INF文件夹中应该使用哪个文件。
这种情况下,可以通过在build.gradle文件中排除这些文件来解决。
版权文件的文件名通常是LICENSE, NOTICE, license.txt, notice.txt之一。
因此可以通过如下配置排除:
该方法也可以用于排除其他不想被打包到APK里的文件。
这样,就给我们提供了一个动态修改编译版本号的方法。如果版本控制使用了SVN,就可以通过编写如下函数来实现动态获取SVN版本号和编译时间:
配置debug和release使用一样的签名就避免了在debug和release混合安装的时候出现签名错误需要重新卸载后再安装的问题。
Android Studio发布正式版后,Google的重心转向AS,以后可能也会逐步停止对Eclipse的支持,而且目前开源项目有很多以及不支持Eclipse。因此决心将项目转到Android Studio进行开发。
安装
Android Studio的安装需要联网并且下载Android SDK和gradle等等才能使用。同时AS的使用需要配合相应位数的JDK,并且JDK的路径需要设置到JAVA_HOME环境变量。
AS的安装包大约300-400MB,但安装好后加上SDK等等其他依赖,占用空间可能达到8GB以上。
因此如果能获取到AS安装后的文件也可以直接复制使用。复制时需要复制Android Studio安装文件夹,SDK文件夹,以及个人目录下的.gradle和.androidstudiox.y文件夹,其中x.y为AS的版本号,其中存放着AS的配置。
导入
Eclipse项目迁移到AS的第一步是更新Eclipse的AJDT插件,然后在文件菜单选择导出,将Eclipse工程导出成AS工程。导出后会在目录下生成build.gradle文件,然后在AS选择导入非AS工程的选项即可导入,第一次使用由于需要分析构建整个项目,所以速度会比较慢。
注意事项
so库的支持
如果是纯java的项目,导入后就基本能编译运行了,如果项目中还依赖so库,可以通过在build.gradle文件中添加jniLibs.srcDirs = [‘so文件的目录’]来导入so库
android { // 其他配置 sourceSets { main { //其他配置 jniLibs.srcDirs = ['libs'] } } }
META-INF中文件重复的问题
有些第三方库会在META-INF文件夹中放一些版权说明的文件,如果不止一个库在放了同名的文件,在打包时gradle就无法决定应META-INF文件夹中应该使用哪个文件。
这种情况下,可以通过在build.gradle文件中排除这些文件来解决。
版权文件的文件名通常是LICENSE, NOTICE, license.txt, notice.txt之一。
因此可以通过如下配置排除:
android { // 其他配置 packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/license.txt' exclude 'META-INF/notice.txt' // 还可添加其他要排除的文件 } }
该方法也可以用于排除其他不想被打包到APK里的文件。
小技巧
动态设置编译版本号
build.gradle文件中可以设置编译出的APK的版本号,如果设置了版本号,则会覆盖Manifest.xml中设置的版本号。这样,就给我们提供了一个动态修改编译版本号的方法。如果版本控制使用了SVN,就可以通过编写如下函数来实现动态获取SVN版本号和编译时间:
def getVersionCode = { try { def code = new ByteArrayOutputStream() exec { commandLine '用于获取版本号的命令' standardOutput = code } return Integer.valueOf(code.toString().split("\r\n")[0]) } catch (ignored) { return 0; } } def getVersionName = { try { def code = new ByteArrayOutputStream() exec { commandLine '用于获取版本号的命令' standardOutput = code } def date = new ByteArrayOutputStream() exec { commandLine '用于获取编译时间的命令' standardOutput = date } return code.toString().split("\r\n")[0] + "." + date.toString().split("\n")[0] } catch (ignored) { return ""; } } android { updateSVNInfo() defaultConfig { versionCode getVersionCode() versionName getVersionName() minSdkVersion 8 targetSdkVersion 23 }
APK签名配置
在Eclipse里debug版本的签名只能使用默认的签名,而在Android Studio中可以通过build.gradle来配置签名所使用的证书:android { // 其他配置 signingConfigs { debug { storeFile file("签名密钥路径") keyAlias '密钥Alias' keyPassword '密钥密码' storePassword '存储密码' } // 可以指定其他编译类型的配置,如release } }
配置debug和release使用一样的签名就避免了在debug和release混合安装的时候出现签名错误需要重新卸载后再安装的问题。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories