【问题标题】:appcelerator dexer fails with Uncaught translation error when using module使用模块时,appcelerator dexer 失败并出现未捕获的翻译错误
【发布时间】:2017-10-16 11:58:23
【问题描述】:

将 Appcelerator 与 Titanium SDK 6.2.2.GA 一起使用(任何 6.x SDK 都会发生同样的情况)。 我创建了一个新的项目模块,编译它(对于 6.2.2)并将其安装在 SDK(6.2.2)中。 然后我创建一个新的移动应用程序项目(Clasic、单窗口、无云)并将之前创建的模块添加到其中。 我编译运行,结果是:

[ERROR] :  Failed to run dexer:
[ERROR] :  
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$anim;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$animator;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$attr;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$bool;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$color;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$dimen;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$drawable;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/R$id;
[ERROR] :  
[ERROR] :  UNEXPECTED TOP-LEVEL EXCEPTION:
[ERROR] :  java.lang.RuntimeException: Translation has been interrupted
[ERROR] :   at com.android.dx.command.dexer.Main.processAllFiles(Main.java:608)
[ERROR] :   at com.android.dx.command.dexer.Main.runMultiDex(Main.java:366)
[ERROR] :   at com.android.dx.command.dexer.Main.run(Main.java:275)
[ERROR] :   at com.android.dx.command.dexer.Main.main(Main.java:245)
[ERROR] :   at com.android.dx.command.Main.main(Main.java:106)
[ERROR] :  Caused by: java.lang.InterruptedException: Too many errors
[ERROR] :   at com.android.dx.command.dexer.Main.processAllFiles(Main.java:600)
[ERROR] :   ... 4 more

我试过了: 其他 Java 版本 其他安卓构建工具版本

对 SDK 5.x.x.GA 执行相同操作时,它可以正常工作。当我安装 Axway Appcelerator Studio,构建:4.10.0.201709271713 并尝试使用 Titanium SDK 6.2.2.GA 编译我的项目时,问题就开始了。 (在我使用 5.x.x 之前)。

欢迎任何想法。

【问题讨论】:

  • 你有什么构建工具版本?你的构建目标版本是什么?
  • 构建工具是 23.0.3 但我也试过 25。我的模块 build.properties 是 Titanium.platform=C:\\ProgramData\\Titanium\\mobilesdk\\win32\\6.2.2 .GA\\android android.platform=C:\\android-sdk-win\\platforms\\android-25 google.apis=C:\\android-sdk-win\\add-ons\\addon-google_apis- google-25 android.ndk=C:\\android-ndk-r10d 我的应用 SDK 目标是 6.2.2.GA

标签: android module appcelerator


【解决方案1】:

6.2.2.GA 版本要求您使用 Android SDK 26 和构建工具 26。在 6.2 之前您需要构建工具 23。

您可以在 android manifest 部分的 tiapp.xml 文件中强制一个版本

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23"/>

一如既往,检查Compatibilty matrix of Titanium

【讨论】:

  • 我尝试编译 SDK 6.0.3 但结果完全一样。我也检查了模块构建路径,它是正确的。
  • 6.0.3 SDK 需要构建工具 23,而不是 26
【解决方案2】:

卸载 Appcelerator Studio 后,重新安装并设置 NDK 的路径以使用 android-ndk-r11c 并安装 GNU gperf 后问题得到解决。

【讨论】:

  • 最后这并没有永久起作用。我在使用 ant 时工作,但由于某种原因在 SDK 中使用 Publish 后,错误再次出现。我认为最好的解决方案是将 appcelerator 全部转储在一起,因为它会遭受很多无法使用的错误。我认为花时间将我的代码移植到 Xamarin 比花几天时间寻找构建项目的方法更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多