最近做的比较多的事情就是把公司的eclipse项目转入Android Studio中。很多问题的解决其实凭直觉瞎捣鼓即可,但是总还是能形成一些操作习惯和步骤,记录下来。
1、在AS中新建空项目。具体做法看个人喜好,但我比较偷懒,喜欢一开始就有完整的结构,所以在新建选项中选择自带Empty Activity,因此AndroidManifest.xml也会被一并创建。
2、文件拷贝。尽管Android Studio中已有工具号称协助从Eclipse中Import工程并尝试自动转换为AS项目,但实践证明它并没有足够智能地处理冲突,并且挺容易把原本清晰的文件结构和配置弄的混乱。因此我的做法是,在Android Studio中新建项目B,并从Eclipse项目A文件夹中将文件逐步拷贝过来。具体的,src、res、assets等目录可以手动逐个拷贝,其中res和assets两个目录在AS中应位于src/main中,这点应注意。
3、项目设置。Eclipse项目中的AndroidManifest.xml文件内容可以先全部拷贝,然后将部分内容挪至AS项目的build.gradle文件,主要是compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion,versionCode,versionName这几个。
4、依赖处理。通常有jar包、aar包、library依赖等。当然,首先应先检查依赖包是否可从线上各种maven库中取得,这种幸福的方式不应错过,直接以compile语句形式添加到app的build.gradle中即可。本地文件例如jar或aar,可以直接放入本地文件夹,例如libs。
jar包的引入方式:
compile fileTree(include: ['*.jar'], dir: 'libs')
如果是本地aar文件,则需在module层的build.gradle中加入:
repositories {
...
flatDir {
dirs 'libs'
}
}
然后类似:
compile(name: ‘arcgis-android-v10.2.7’, ext: ‘aar’)
如果是library形式,则在module的settings里边新建模块,导入相应工程,并在自己的app的dependengcies里通过添加Library denpendency的方式将其加入。
5、处理文件重复。例如:Duplicate files copied in APK META-INF/LICENSE,在Module:app的build.grade文件中的android节点中增加packagingOptions选项,并用exclude关键字添加相应文件的路径,例如:
packagingOptions {
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
6、不要忘了删除此前新建AS项目时的java文件,例如EmptyActivity.java之类,以及其资源和Manifest配置。