说到使用androidstudio,除了新建的项目,我们都会面临的问题是原先eclipse的代码该怎么导入到androidstudio中使用。
这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。
ok,进入正题。
google为了让我们更加方便的使用androidstudio,提供了两种导入eclipse代码的方式:一种兼容eclipse,一种是全新的android gradle project.
这里,我们先从兼容模式说起。
兼容模式
这种模式下,保证了eclipse时代的代码目录结构,整体操作和使用和eclipse也差不多。
最重要的,当你使用androidstudio时,你或者其他人也可以方便的使用eclipse,互不干扰。
实现步骤
1. 从eclipse中导出gradle build files
在eclipse菜单中 file –> export–>generate gradle build files
接下来会到达警告界面,这里会提示androidstudio可以直接导入adt的工程,先过,后面有直接导入的讲解。
选中你的项目工程,包括主工程和库工程(library)。
确认生成
2. 修改导出文件参数
导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。
为了保证能够讲解的更清晰,下面分情况讲解一下:
没有库工程,只有主工程
这种情况下你看到的目录是这样的
首先需要更改的是 build.gradle 文件
androidstudio 1.0 ~ 1.0.2 使用的都是 android gradle plugin 1.0.0,因此需要将图中红框内的 0.12.+ 改为 1.0.0
然后还需要更新gradle版本,指定为所需要的2.2.1
在 /gradle/wrapper/gradle-wrapper.properties里面
含有库工程
其实改动方法和上面一样,只需要注意是改动整个项目的build.gradle和 /gradle/wrapper/gradle-wrapper.properties。
而不要尝试去主工程或者库工程里面找build.gradle
3. 导入androidstudio
进入到androidstudio中,选择导入非androidstudio工程
找到需要导入的工程目录,可以看到图标和eclipse创建的工程不一样。
点击ok,进入漫长的加载过程,之后就可以正常使用了。
已经创建过工程的打开androidstudio会直接进入以前的工程
这时候可以选择file–>import project, 选中后点击ok
兼容模式下的bug
使用ide的打包:
在兼容模式只打主工程的,库工程没有加入到apk中,导致无法正常运行。
截止到1.0.2,androidstudio依然存在这个bug。
因为这个bug的存在,你在兼容模式可以使用androidstudio编程,打包时开启eclipse。
ok,兼容模式介绍到这里。 我们开始介绍主角: android gradle project。 这里必须说明的是google更希望我们使用这种方式,如果没有什么团队的压力,还是使用这种吧。
使用新的目录结构
转换目录结构
打开import
新用户:
老用户: file–>import project
直接找到原有的eclipse工程单一工程直接导入即可。
有库工程的需要注意,导入一定要指向主工程,而不是整个项目的目录。指向项目目录是无法进行转换的。
指定目标路径
这个地方需要详细说一下
这里上面两个选项暂且不说,勾选上。
最后一项提一下: 将module名创建为camelcase风格。
驼峰式,这个搞java的都会熟悉,camelcase表示首字母小写的驼峰式风格,camelcase表示首字母大写的驼峰式风格。
不勾选这个选项意味着你原先的工程名是啥样,转换完就是啥样。
这里的androidstudio会去分析eclipse工程下的. project文件,里面的name就是你在eclipse中看到的工程名。(没有此文件时会使用此工程的文件夹名。)
当然也有例外,比如countly-sdk-android转换完就成了countlysdkandroid,下划线我就不知道了,这个没有再仔细研究规则,不过camelcase会保持正常。
这里我比较喜欢让module首字母大写(不知道为啥看这首字母小写难受),原来的工程就是camelcase风格,我就不勾选了。
当然如果这里没注意直接转换成了camelcase但最后又不喜欢怎么办? 可以看后面《如何更改module名称》部分。
ok,配置完点击finish即可
之后需要经过一段时间的转换。成功后可以看到import-summary.txt,这个文件非常有用,后面会讲到。
到这里,你的应用其实已经可以通过androidstudio正常编译,你也可以写代码去了。
但我希望你还能继续看下去,因为这个成功后弹出来的import-summary.txt写了些很重要的东西。
带你看懂import-summary.txt
manifest merging
your project uses libraries that provide manifests, and your eclipse project did not explicitly turn on manifest merging. in android gradle projects, manifests are always merged (meaning that contents from your libraries' manifests will be merged into the app manifest. if you had manually copied contents from library manifests into your app manifest you may need to remove these for the app to build correctly.
这段应该都能看懂,无非就是说你library的清单文件有效啦。
不用手工拷贝到主工程的清单文件中了。以前拷贝过的,要移除才能正确build。
ignored files(这个最重要)
之所以说这部分重要,是因为androidstudio通过这段文字告诉了你,它导入的时候忽略了哪些文件。
也就是说这部分内容,它没给你拷进来,你要是不去自己拷贝,那这部分你新gradle工程里面就没有了。
这里选一些典型的ignore文件来看一下: