新入职了一家公司,发现居然还是用 Eclipse 开发,开发工具岂有倒退的道理,于是立马着手将项目导入到 Studio 。
遇到了一些问题记录一下
问题 1:
Error:Execution failed for task ':app:processDebugManifest'.
>Manifest merger failed with multiple errors, see logs.
解决方法:
一般是Manifest清单文件有误,会标出行数和更改建议。
查看 Messages 点击 Gradle Console,按照建议改就行了。
Eclipse 在清单文件中检查不是非常严格,所以一些权限重复声明等错误会忽略,不影响编译。而 Studio 默认的检查会比较严格,不把错误修改会导致编译失败。
问题 2:
Error:(395, 14) 错误: 找不到符号
符号: 方法 addOnPageChangeListener(<匿名OnPageChangeListener>)
位置: 类型为BannerLayout.IndexViewPager的变量 pager
解决办法:将addOnPageChangeListener()改为setOnPageChangeListener()。
大概原因是 support-v4 的版本问题,现在很少出现了,只有在旧版本的 v4 包才会出现。因为 Eclipse 的 v4 包都是通过复制到 lib 里,Studio 已经变成 compile 依赖,一般不会出现这个问题。
问题 3:
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/os/ParcelableCompat.class
解决办法:看到 ZipException 和 duplicate 大概就知道是包重复冲突,查看一下module是不是有重复导入v4包,版本改成一致
问题 4:
Error:(27) Error: "umeng_socialize_share_content" is not translated in "zh" (Chinese) [MissingTranslation]
从字面上看就是缺少了中文翻译,导致编译检查失败
解决办法有几种:
- 在资源文件忽略检查
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation" >
</resources>
- 在 build.gradle 配置
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
- 在 设置中忽略检查
settings >> Editor >> inspections >> Incomplete translation >> severity 设置warning
当然,这三个方法都是忽略检查来通过编译的。
根本原因还是缺少了 valuse-zh 的翻译字段,要么把 valuse-zh 删了,要么把缺少翻译的字段补全也可解决。
总结
Studio 在 2.0 以后对 Eclipse 的导入功能加强了很多,基本不会出现什么大问题,没花多少时间就成功转换到 Studio 中了。现在已经2017年,开发 android 已经不是推荐而是必须使用 Studio 了,如果还在使用 Eclipse 应该马上换到 Studio 。
欢迎交流讨论。