鉴于网上无论国内国外对Eclipse项目转移到Android studio的过程大多都说的模棱两可,模糊不清,于是写下这文章让大家少走弯路。(正文是在下面粗体字)
前段时间,打算使用Github上的开源库时发现Github现在遍地都是默认码农们用Android Studio了,下面的使用说明都是像这样:
dependencies {
compile'pl.droidsonroids.gif:android-gif-drawable:1.1.+'
}
“一句话就可以” ,我真是哔了狗了。
使用Eclipse的我简直不知所措,只能把代码硬生生搬到Eclipse了。最恶心的来了,万一需要引用到V4,V7这些包的话,那你也只能放弃了。Android这些兼容包已经不兼容Eclipse了。
于是狠下心来,把Eclipse的项目移到Android Studio上了。
按网上大部分搜到的“如何把Eclipse项目导入到Android Studio”的内容来看。大致流程是这样的。
1)把Eclipse项目export成gradle项目。
2)在Android Studio import刚才那个build.gradle。
这样导过来真是会出好多问题,我一一列举下:(由于我不推荐这种方法所以解决问题不详说了)
1)manifest-merger问题,这个问题主要是项目的引用的jar库也同时定义theme和label,icon,在application的节点添加tools:replace=”android:icon, android:theme”,完美解决。
2)编码问题,有多种情况网上有解决方法。
3)最大的问题来了,compile github的依赖库失败。
第三个问题我国内国外都翻了个遍,至今找不到如何解决此问题。有人质疑是网络问题,我用的vpn也不行,后来有人提出是配置问题,我灵机一动新建了个android studio项目,敲下:
dependencies {
compile'pl.droidsonroids.gif:android-gif-drawable:1.1.+'
}
build成功了。
显然是我之前那个项目的问题。
于是我开始了正确把Eclipse项目转移到Android Studio的过程。(正文开始了
)
1)在Android Studio新建项目,填写项目主包名跟原来Eclipse的主包名一样。假设主包为com.fu_ckproject。
2)清单文件:AndroidMainfest.xml这个问题基本上可以把内容全部覆盖过来。
3)java代码文件:把Eclipse src的包复制过来,这里详细说明一下,程序主包在创建项目的时候已经自动生成了。这里是com.fu_ckproject这个包,那么首先把Eclipse的这个包的java文件copy过去。然后仿照Eclipse的包结构,在Android Studio的java目录下new-package-输入跟Eclipse相同的包名,然后把java文件copy到对应的包里面。注意不要直接从Eclipse copy过去,包名会丢失的。你可以试一下。
4)布局资源文件:Eclipse res下的drawbale ,layout,drawbale-hdpi,values等,copy到Android Studio的res目录下就好了。
4)jar库和so库:在Android Studio 切换成“project”模式,展开找到libs目录,按Eclipse下libs的一样把所有jar库和so库复制过来,正常来说jar库文件一般是直接放libs下的,so库是放armeabi等文件下的。这样一般就可以了,因为新建项目后build.gradle会有一句:compile fileTree(dir:'libs',include: ['*.jar']),这个可以加载所有jar,而so文件放armeabi就搞定了。
5)build一下,运行一下,看有没有错误,如果遇到自定义view的布局“res/...(自定义view类)”这种错误的话,改为“...res-auto”就可以了,android studio会自动识别。还有会有找不到什么theme之类的,一般就是你的compileSdk写的太高了,在build.gradle改为21就好了,如下
defaultConfig {
// applicationId "XXX.XXXXXX"
applicationId"XXX.XXXXXX"
minSdkVersion10
targetSdkVersion21
versionCode1
versionName"1.0"
}
还有导入V4,V7的包,版本别用最新的,用21的就可以。
这样的话,就完美地把Eclipse项目变成了Android Studio项目了,compile github 的开源库也成功了没有压力,一个字就是爽!
感觉说了很多废话,第一次写关于android 开发的文章,大家多多见谅,有什么疑问和建议的可以提出一哈。
网友评论
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
R文件没了,怎么搞?