今天完成了从Eclipse到Android Studio的迁移,现在记录一下过程。满满的都是坑。
1、
由于这个项目比以前的都要复杂百倍,所以采用的是各个击破方法。
首先导入了两个lib的模块。
然后导入主程序的时候出现问题,这是因为,要通过单击Project通过Module对话框选择Eclipse才能正确导入。
2、
接着提示AAPT2错误。
这个只能将.9.png改成.png。然后让美工改。
3、
然后提示
error: style attribute ‘@android:attr/windowEnterAnimation’ not found.
改成
android:attr/windowEnterAnimation
4、
Program type already present
统一使用gradle,尽量不再使用Jar包解决依赖问题。
5、
由于包依赖太多,有些lib和app共用依赖,则百度了一篇名为《AndroidStudio中多个Module依赖同一个jar的解决方案》的文章,不过provided即将失效,改用compileOnly。
6、
警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用
Method method = cls.getMethod( " hashCode " , new Class[ 0 ]); // 编译通过
Method method = cls.getMethod( " hashCode " , null ); // 编译失败
allMethod[i].invoke(dbInstance, new Object[]{}); // 编译通过
allMethod[i].invoke(dbInstance, null ); // 编译失败
7、
so文件加载不到。
设置好jniLibs,然后切换到Android视图,验证你的jniLibs下面目录直接就是CPU-ABI目录,否则就无法打包进APK。
8、
自动化打包问题
Cannot set the value of read-only property ‘outputFile’
改成
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "driver_${variant.productFlavors[0].name}_v${variant.versionName}.apk"
}
}
9、
混淆问题
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
前者其实是默认的混淆文件,后面的才是自己的。看来自身对Android项目结构还不是很熟悉。
10、
爆出错误提示
Warning:com.hyphenate.chat.EMHuaweiPushReceiver: can't find superclass or interface com.huawei.android.pushagent.api.PushEventReceiver
有华为和小米的,那就简单粗暴的取消掉提示
-dontwarn com.huawei.android.**
-dontwarn com.xiaomi.mipush.sdk.**
并且删除提示Specific twice包,因为这些包安卓默认配置文件已经自动包括了。
然后打开联系人又报错,于是看到了Eventbus,再加上:
-keepattributes *Annotation*
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe ;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }