Android编译:有什么区别可以使代码在一台计算机上编译但在另一台计算机上失败

时间:2017-12-11 23:21:30

标签: android cordova android-studio ionic-framework ionic3

我在Ionic中有项目,我正在尝试使用ionic cordova build android --prod --release编译 - 它是完全相同的代码(从相同的远程存储库中提取,相同的提交,干净的位置)。

问题是:在一台计算机上,该命令会按预期生成.apk文件。 在另一台计算机上命令失败(在问题的最后我将发布错误)。

Android Studio几乎是相同的版本(次要版本有一点差异),在偏好设置中,SDK平台,SDK工具和SDK更新站点中的所有设置完全相同。

所有其他相关软件的版本完全相同。

C:\Users\my_user>ionic -version
3.19.0

C:\Users\my_user>java -version
java version "1.8.0_151"

C:\Users\my_user>gradle -v

------------------------------------------------------------
Gradle 4.4
------------------------------------------------------------

Build time:   2017-12-06 09:05:06 UTC
Revision:     cf7821a6f79f8e2a598df21780e3ff7ce8db2b82

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_151 (Oracle Corporation 25.151-b12)
OS:           Windows 10 10.0 amd64

我应该检查的计算机之间有什么不同? 也许一些环境变量?哪些?

编译错误是:

* What went wrong:
Execution failed for task ':transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/PermissionHelper;

然后我通过在multiDexEnabled true文件的defaultConfig部分添加platforms\android\build.gradle来解决此问题,并出现了另一个错误:

* What went wrong:
Execution failed for task ':transformClassesWithJarMergingForRelease'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/cordova/PermissionHelper.class

我应该检查的计算机之间有什么不同? 也许一些环境变量?哪些?

1 个答案:

答案 0 :(得分:0)

发现问题。发布以防万一。

问题是一个不同的cordova版本(用cordova -version得到它)。 一台计算机有7.0.1(可以创建.apk)。 另一台计算机有7.1.0(可以创建.apk)。