【问题标题】:Dx trouble writing output: already prepared... - Error in consoleDx 写入输出时遇到问题:已经准备好... - 控制台错误
【发布时间】:2015-09-04 02:36:58
【问题描述】:
  • braintree-api-1.6.1-full.jar
  • android:minSdkVersion="14"
  • android:targetSdkVersion="18"

我需要在我的 android 应用程序中实现没有问题的 Braintree,但是当我将 Braintree jar 文件复制到我的项目 libs 文件夹并导入必要的类时,我的应用程序崩溃了。

控制台中的完整错误消息:

Dx 写入输出问题:已经准备好 [2015-06-18 15:31:42 - Dex Loader] 无法执行 dex:多个 dex 文件定义 landroid/support/annotation/AnimRes; [2015-06-18 15:31:42 - foto.studio] 转换为 Dalvik 格式失败:无法执行 dex:多个dex文件定义Landroid/support/annotation/AnimRes;

我已经删除,重新导入所有内容两次,将 Eclipse 包更新为最新版本,并清理了我的项目。但是还是遇到了这个问题。当我删除 Braintree 库时,我的应用程序恢复正常。

有人遇到过同样的问题吗? 谢谢!

=== 解决方案===

最终迁移到 Android Studio。现在一切正常。

=== 更新 ===

正如@Luke 建议的那样,我已将当前版本的braintree 替换为1.5.1,现在我的应用程序可以编译但Braintree 不会初始化,并且在logcat 中出现以下错误:

06-18 18:17:44.581: W/dalvikvm(30518): VFY: 找不到类 在签名中引用 (Lcom/braintreepayments/api/data/BraintreeEnvironment;) 06-18 18:17:44.581: I/dalvikvm(30518): 找不到方法 com.braintreepayments.api.data.BraintreeEnvironment.getMerchantId, 从方法引用 com.braintreepayments.api.BraintreeApi.collectDeviceData 06-18 18:17:44.581:W/dalvikvm(30518):VFY:无法解析虚拟方法 10802: Lcom/braintreepayments/api/data/BraintreeEnvironment;.getMerchantId ()Ljava/语言/字符串; 06-18 18:17:44.581: D/dalvikvm(30518): VFY: 在 0x0000 06-18 18:17:44.581: E/dalvikvm(30518) 处替换操作码 0x6e: 找不到类“com.braintreepayments.api.data.BraintreeData”, 从方法引用 com.braintreepayments.api.BraintreeApi.collectDeviceData 06-18 18:17:44.581:W/dalvikvm(30518):VFY:无法解析新实例 1492 (Lcom/braintreepayments/api/data/BraintreeData;) 在 Lcom/braintreepayments/api/BraintreeApi; 06-18 18:17:44.581: D/dalvikvm(30518): VFY: 在 0x0000 06-18 处替换操作码 0x22 18:17:44.586:E/dalvikvm(30518):找不到类 'com.google.gson.Gson',引用自方法 com.braintreepayments.api.BraintreeApi.getConfigurationString 06-18 18:17:44.586:W/dalvikvm(30518):VFY:无法解析新实例 6903 (Lcom/google/gson/Gson;) 在 Lcom/braintreepayments/api/BraintreeApi; 06-18 18:17:44.586: D/dalvikvm(30518): VFY: 在 0x0004 06-18 处替换操作码 0x22 18:17:44.586:I/TAG(30518):数据源打开! 06-18 18:17:44.586: D/dalvikvm(30518):DexOpt:无法选择在 0x02 处直接调用 0x2a2f Lcom/braintreepayments/api/BraintreeApi;.collectDeviceData 06-18 18:17:44.586: D/dalvikvm(30518): DexOpt: 无法选择直接调用 0xb169 在 0x06 中 Lcom/braintreepayments/api/BraintreeApi;.getConfigurationString 06-18 18:17:44.586:E/dalvikvm(30518):找不到类 'com.google.gson.Gson',引用自方法 com.braintreepayments.api.models.ClientToken.fromString 06-18 18:17:44.586:W/dalvikvm(30518):VFY:无法解析新实例 6903 (Lcom/google/gson/Gson;) 在 Lcom/braintreepayments/api/models/ClientToken; 06-18 18:17:44.586: D/dalvikvm(30518): VFY: 在 0x0017 06-18 处替换操作码 0x22 18:17:44.591:D/dalvikvm(30518):DexOpt:无法选择直接调用 0xb169 在 0x19 中 Lcom/braintreepayments/api/models/ClientToken;.fromString

【问题讨论】:

    标签: java android eclipse e-commerce braintree


    【解决方案1】:

    这只是 1.6.1 和 1.6.0 的完整 jar 的问题。在这些版本中添加了一个新的可选依赖项,完整的 jar 将其拾取并编译。现在您可以使用 1.5.1,未来的版本将不会在完整的 jar 中包含 Google Play 服务。

    当前未解决的问题:https://github.com/braintree/braintree_android/issues/35

    【讨论】:

    • 再次感谢,请参阅我的更新答案。该应用程序编译,但当我尝试初始化 Braintree 这些错误: 1.) 找不到方法 com.braintreepayments.api.data.BraintreeEnvironment.getMerchantId。 2)找不到类“com.braintreepayments.api.data.BraintreeData”,3)找不到类“com.google.gson.Gson”等
    • 那是使用search.maven.org/remotecontent?filepath=com/braintreepayments/… 吗?我刚刚解压了 jar,所有的类都在那里,所以听起来这可能是 Eclipse 的问题。您是否尝试过清理和重建?
    • 是的,我已经对项目进行了多次清理。 Eclipse 最近遇到了很大的问题,我最终将我的项目转移到了 Android Studio,那里一切正常。谢谢!
    • 是的,最终这是最好的解决方案,我听说过很多关于 Eclipse 的问题,但我知道移动并不总是一种选择。很高兴听到它现在对你有用!
    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多