大哥大姐们,不知不觉2016年了,android项目是时候和eclipse说拜拜了(不说拜拜也没办法了),前两天我刚把公司的两个android项目从eclipse中迁移到了android studio,再加上之前用AS写的一个项目,所以对android studio也有了一定的认识,今天,我主要带领大家如何从一个eclipse管理的android项目迁移android studio上来。为的就是让大家少走弯路。
首先说明一下我使用的是android studio 2.0预览版,从2.0预览版一出来我就开始用了,所以也有了一定的经验,那么,怎样迁移呢,迁移之前你要确认你有哪些依赖工程,然后新建一个文件夹(这个文件夹名就是在AS中你的工程名字了),把所有的依赖工程和你的主工程全部放进去(若没有依赖工程,只把你的项目放进去就行,这里有人问了,为什么要新建一个文件夹,这是因为android studio的本身的工程目录结构所致,大家了解一点android studio的都知道它不像eclipse一样在同一界面可以打开多个不同的项目,android studio不行,它只能打开一个project,这个project中可以有多个module,在eclipse中我们的主项目和依赖项目到了AS中就变成了一个一个的module了),首先使用eclipse把新文件夹中的项目导入,如图:
这是我公司的一个android项目,用了两个依赖包,然后点击export:
选择generate gradle build files,然后next:
然后next:
这时要注意你的项目和依赖项目都要打上勾,然后next:
这时需要注意的是我这里已经做过一遍这样的操作了,所以右下方的勾我就钩上了。然后finish:
然后再finish,OK,完成了,貌似没什么反应啊,这时候,再打开你的新建的文件夹:
发现除了我们的三个工程(calendlar,fmb_chenaxiu,library)外多了很多文件和文件夹,然后随便再打开一个工程:
发现多了一个build.gradle文件。好了,至此在eclipse端的所用事情已经完成。
然后打开android studio:
选择import project(eclipse 。。。)然后选择刚才新建的那个文件夹:
点击OK,然后就等着吧,等一会之后,进入到了android studio界面:
然后发现有错误:
说是:
Error:The project is using an unsupported version of the Android Gradle plug-in (0.12.2). The recommended version is 2.0.0-alpha1.
哦,原来我的gradle插件版本太老了,
找到工程下面的build.gradle文件(不是module下面的)打开:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-alpha3'
}
}
然后点击上方的try again,基本上就OK了。
现在总结一下容易出现错误的地方:
1.
首先是gradle的版本,这个是需要翻墙下载的
2.
你可能会遇到.9图片错误,错误如下:
AAPT: ERROR: 9-patch image /Users/gefufeng/work/androidstudio/TestDemo/fmb_xxx/res/drawable-hdpi/track_menu_bg.9.png malformed.
Error:Execution failed for task ':fmb_chenaxiu:mergeDebugResources'.
> Crunching Cruncher track_menu_bg.9.png failed, see logs
这时需要用sdk->tools->draw9patch文件夹下的draw9patch工具,不会用的@我。
3.res文件夹下的文件与文件夹不对应,比如anim文件夹下放了drawable文件夹下的文件,打签名包时会报错。
4.Toast.makeToast(context," ",0).show().也会在打签名包时会报错,不要用0。
5.使用百度地图时,debug_keystore的设置,在你的module的build.gradle中,添加:
android {
signingConfigs {
debug {
storeFile file('/Users/gefufeng/Downloads/debug.keystore')
}
}
}
6.使用百度地图时,so文件不能识别,加:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
7.jar包下的文件名重复,比如:
Error:Execution failed for task ':fmb_chenaxiu:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/NOTICE.txt
File1: /Users/gefufeng/work/svn_checkout/AndroidCustomerForAS/fmb_chenaxiu/libs/fastjson-1.1.43.android.jar
File2: /Users/gefufeng/work/svn_checkout/AndroidCustomerForAS/fmb_chenaxiu/libs/commons-codec-1.6.jar
解决办法,将
android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}}
改为:
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
8.若布局中使用了自定义的控件的自定义属性,需要把:
xmlns:myattrs="http://schemas.android.com/apk/res/..."
改为:
xmlns:myattrs="http://schemas.android.com/apk/res-auto"
OK,以上就是我在项目迁移时遇到的一些问题,欢迎大家补充和纠正。
来源:oschina
链接:https://my.oschina.net/u/2270118/blog/601775