Titanium 使用ti.map和ti.goosh模块时出现多索引错误

Titanium 使用ti.map和ti.goosh模块时出现多索引错误,titanium,appcelerator,titanium-mobile,appcelerator-titanium,titanium-modules,Titanium,Appcelerator,Titanium Mobile,Appcelerator Titanium,Titanium Modules,我正在制作一个Appcelerator钛应用程序,它使用地图和通知。要提供此类功能,我想使用: ti.map(maps的官方Appcelerator钛模块) 问题在于两者都需要Google Play服务,而Appcelerator Titanium不支持multidex,因此在编译过程中,我总是会遇到一个错误: [ERROR] : Failed to run dexer: [ERROR] : [ERROR] : Uncaught translation error: java.la

我正在制作一个Appcelerator钛应用程序,它使用地图和通知。要提供此类功能,我想使用:

  • ti.map(maps的官方Appcelerator钛模块)
问题在于两者都需要Google Play服务,而Appcelerator Titanium不支持multidex,因此在编译过程中,我总是会遇到一个错误:

[ERROR] :  Failed to run dexer:
[ERROR] :  
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/dynamic/zzd$zza$zza;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/dynamic/zzg$zza;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/dynamic/zzd;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/dynamic/zzd$zza;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/dynamic/zzg;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/dynamic/zze;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/playlog/internal/zza;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/playlog/internal/zzb;
[ERROR] :  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/playlog/internal/zzd;
[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.runMonoDex(Main.java:311)
[ERROR] :   at com.android.dx.command.dexer.Main.run(Main.java:277)
[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
有人建议我应该像前面所描述的那样,使用GooglePlay服务创建自己的.jar文件

不幸的是,我无法创建正确的proguard.conf文件,所以我总是会出现类似的错误

具体而言:

  • 我能够创建proguard.conf文件(但它的内容一定是错误的)
  • 我创建了.jar文件,并将其与原始文件切换

提前感谢您的帮助。

这是应对多索引问题时最尴尬的情况(至少对我而言)。有两种方式可以让你觉得自己很有帮助:

  • 尝试使用相同版本的GooglePlay服务为这两个模块创建.jar库(注意可能需要相同版本的其他问题)

  • 若你们的唯一目的是支持地图和推送,那个么最好的解决方案就是坚持使用钛合金内置的CloudPush和地图模块。(当我必须支持地图和推送功能时,我在我的大多数应用程序中都喜欢这样)


  • 使其工作的唯一方法是创建特殊版本的SDK,为这两个模块提供必要的功能。这被描述为一件非常复杂的事情

    幸运的是,caffeinalab的人提供了很好的描述如何实现它们


    如果您仍然有任何问题,最好检查哪些可以帮助您解决常见错误。

    谢谢您的回答。我添加了我的,因为它更详细地描述了第一种方法。CloudPush的问题是,你需要每月付费才能从Appcelerator发送推送通知,而你却被困在他们的服务器上。我认为你不需要向Appcelerator付费。如果您使用CloudPush模块只是为了检索deviceToken,并且您拥有自己/其他第三方推送服务器,那么您可以永远免费使用Appcelerator模块。当你使用他们的服务器发送推送消息时,他们会收费。