【问题标题】:Android No expanded opcode for R.javaAndroid 没有 R.java 的扩展操作码
【发布时间】:2012-05-24 08:34:02
【问题描述】:

我在编译 Android 应用程序时遇到了一个重要问题。

使用Windev Mobile,生成java代码,编译创建apk,但是创建apk时出错:

命令行:"myjavapath\java.exe" -Xmx1024m -Djava.ext.dirs=.\platform-tools\lib -jar .\platform-tools\lib\dx.jar --dex --output "path\classes.dex" "path\classes" "path\libs"

返回错误: 无法写入输出:No expanded opcode for 0004368d R.java:11@0001: invoke-direct v0:NffffLmynamespace/R$attr;, java.lang.Object.<init>:()v

此外,R.java 中的 R$attr 不包含任何内容:

public static final class attr {
}

我假设有 64k 的硬限制。但是:

  • R.java 文件仅包含 364 行,如果这些行是 字段/方法参考,我离 64k 硬限制很远。
  • 在我的 Windev Mobile 项目中添加特定窗口时发生此错误。我在另一个项目中使用的窗口没有错误。

那么,你认为它来自什么? 如果您需要任何信息或文件,没问题。

提前致谢。

PS:可能我的英文不太好,抱歉。

【问题讨论】:

    标签: android dex opcode


    【解决方案1】:

    dex 文件格式有各种限制。看起来您遇到的方法引用不能超过 64k。此限制适用于 dex 文件中的所有类,而不仅仅是单个类。

    错误发生在该类上的事实与该类本身无关,这只是它碰巧达到限制的地方。

    目前唯一的解决方案是减少代码的大小,或者将一些类拆分成一个单独的 dex 文件,然后动态加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-28
      • 2020-09-02
      • 2021-04-08
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多