android - Dx 处理外部库需要永远

标签 android dependencies dx

我的 Android 应用程序使用了大量非常重要的外部库。这些库都是用 Java 编写的,并简单地添加到构建路径中。

从 Eclipse 中启动应用程序需要很长时间,大约 5 分钟。这非常令人沮丧!

我启用了详细的 android 构建输出。这表明构建过程正在迭代外部库中的整个 *.class 文件。我得到了数百行:

...
Dx processing android/support/v4/app/FragmentTransaction.class...
Dx processing android/support/v4/app/FragmentManagerImpl$3.class...
Dx processing android/support/v4/app/LoaderManagerImpl.class...
...
Dx processing com/prosysopc/ua/client/ServerStatusListener.class...
...
Dx processing org/opcfoundation/ua/core/BrowseNextRequest.class...
...

(这只是一个小样本,我再次为每个 *.class 得到数百个这样的样本)

我不太确定 Dx 工具在这里做什么,但它确实很烦人!

更糟糕的是,每次启动都会重复这个过程,没有缓存什么都没有...

可能的想法:

  • 有缓存吗?在哪里?也许它是只读的,因此不会持续存在?
  • 我可以为我的开发构建完全禁用“DX 处理”步骤吗?

任何可能的解决方案或至少是想法?这真的让我发疯;-)

谢谢!

最佳答案

dx 工具可以合并dex 文件。因此,一种选择是将这些库预先转换为 dex 格式,并让 dx 将它们与您的主要应用程序类合并。

默认的 ant 构建脚本似乎不立即支持此工作流程,我怀疑 eclipse 构建也有类似的东西。您将不得不手动执行一些步骤,或者调整 ant 构建脚本。

一些注意事项:

  1. 要让 dx 识别和合并库,它需要是包含 classes.dex 文件的 jar/apk/zip
  2. 您仍然需要原始的 java jar,以便您可以针对它们进行编译。您需要阻止将 java jar 传递给 dx,而传递 dex jar。
  3. 如果你使用混淆器之类的东西,事情会变得更加“有趣”:)

我会把所有这些工作和技巧是否值得由您来决定。

关于android - Dx 处理外部库需要永远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777506/

相关文章:

java - Android Studio Volley 库(基本网络错误)

android - kotlin - alertDialog 的自定义字体

java - 优化java赋值

linux - ffmpeg 与 libsoxr 解决依赖关系

java dx 实用程序 : UNEXPECTED TOP-LEVEL ERROR java. lang.ExceptionInInitializerError

c# - 新电子商务网站的 WCF vs WEb api vs Web 服务

java - 如何使用 Maven 中列为依赖项的包中的类?

java - 关于依赖共享的 Maven 多模块项目组合

android - HelloWorld 无法在 dalvikvm 下运行

android - 将 jar 转换为 dex 时保留文件夹