我将整个项目复制到一个新目录,然后在新目录中更新了平台和所有SDK(通过Android Studio),我还添加了对Android v4的支持,现在我遇到了构建错误(主要与v4有关) )。原始构建目录仍然正常工作。在我知道复制的应用程序正在干净地构建之前,我不会弄乱原文。
在复制/更新的项目中,我添加了最新的Android平台:
copiedApp产品:> cordova平台添加android @ latest
/ myOrigApp - // Android 5.1.1,在所有SDK更新后都能正常工作。
/ myCopiedApp - // Android 5.2.1,收到以下错误。
我想'我修复了第一个构建错误:错误1:
Dex: Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$Acces
sibilityServiceInfoVersionImpl;
添加到platform \ adroid \ build.gradle文件:
defaultConfig {
multiDexEnabled true
}
但我现在收到错误2。
`Execution failed for task ':transformClassesWithJarMergingForDebug'.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class`
仍在研究这个,但认为它与额外的v4构建文件或需要删除v4文件夹有关,因为gradle正在安装它们,即使没有在gradle中定义(我可以看到)。
答案 0 :(得分:1)
这几乎肯定是由包含Android v4支持库的多个实例引起的。
查看已安装的插件phonegap-facebook-plugin 0.12.0 "Facebook Connect"
includes it as a JAR。
Facebook插件确实需要更新才能使用Gradle,因为使用此JAR文件会导致与使用Android v4支持库的任何其他插件发生冲突 - 似乎其他人遇到类似问题see here
试试这个(see here):
修改plugins/com.phonegap.plugins.facebookConnect/plugin.xml
并替换以下行:
<framework src="platforms/android/FacebookLib" custom="true" />
与
<framework src="com.android.support:support-v4:+" />
<framework src="com.facebook.android:facebook-android-sdk:3.23.0" />
删除并重新添加平台:
cordova platform rm android && cordova platform add android@latest
就个人而言,我会选择最后一个选项,但我也会考虑分配Facebook插件Github repo并将这些更改应用到我的fork,然后将我的forked插件安装到我的本地项目中,以避免丢失这些本地更改,如果你的{ {1}}文件夹因某种原因被删除:
/plugins