问题标签 [android-multidex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Multidex 后 Robolectric 单元测试失败
所以我最近将我的 robolectric 3.0 升级与我们的主线合并,它为我们的应用程序添加了 multidex 支持。不幸的是,这有一个不幸的副作用,导致我们的测试失败/不运行 - 它们只会在第一次尝试安装 MultiDex 失败后停止,并带有以下堆栈跟踪:
我尝试实现各种解决方案,例如在我的 Multidex.Install 中捕获 RuntimeException (如此处所述https://github.com/robolectric/robolectric/issues/1328)并使用 Robolectric 提供的影子 MultiDex,但这根本失败带有 Gradle TaskExecutionException 并以值 255 退出。
有没有人想出解决这个问题的方法?这真的减慢了我的工作流程。
android - 如何在使用多 dex 构建 android 应用程序时限制第一个 dex 大小
首先,我面临这个问题:</p>
所以,我尝试分割谷歌提供的dex。参考Building Apps with Over 65K Methods
我解压了apk,它确实包含两个dex文件,第一个dex仍然太大,导致apk无法通过cmd安装在android 2.3中。
如何做到这一点,以便应用程序可以安装在 android 2.3 中。
java - 关于 MultiDex 的 Android 错误
在 Android 中构建应用程序时出现以下错误:
错误:任务“:app:packageAllDebugClassesForMultiDex”执行失败。java.util.zip.ZipException:重复条目:oauth/signpost/http/HttpResponse.class
我的 build.gradle 看起来像这样:
关于我可能做错了什么的任何想法?
android - 方法引用过多:107085;扩展 MultiDexApplication 后最大值为 65536
我有这个错误,我已经用 MultiDexApplication 扩展了我的应用程序类,但我仍然收到这个错误。
还在我的应用程序中添加了 attachBaseContext 方法。
请指导我如何避免此编译错误并成功运行我的应用程序。
android - 应用程序未在 android studio 中以 multidexEnabled true 启动 - 著名的 65k 参考方法
早些时候我使用的是 Eclipse IDE,由于我使用了很多来自 Amazon 的库,我开始收到 65K 方法引用错误。所以我从 Eclipse 转移到了 Android studio 最新的预览频道版本。我的毕业典礼看起来像:
我的 gradle 构建成功,并且我已将构建变体设置为 devDebug,但是当我单击运行(绿色图标)时,该应用程序未安装在设备上。我等了 45 分钟,但它只是显示我的 Gradle 任务正在运行。
我有扩展 MultiDexApplication 的应用程序类,还添加了 attachBaseContext 方法。
我现在正在尝试运行该应用程序超过一天,不幸的是没有什么对我有用。我的申请中还有什么遗漏的吗?欢迎所有建议。
更新日志:-
android - API < 21 的 java.lang.VerifyError
我MultiDex
在我的应用程序中使用来支持超过 65k 的方法。在 api 21 上它运行良好,因为它进行了 predex 构建。在 api 21 下,我Application
的堆栈跟踪崩溃了:
这是我的gradle
文件(简化),具有不同的风格,用于在调试中使用 predex 进行编译:
这是我的Application
:
在我的清单下,<application>
我有android:name=".MyApplication"
在这种情况下,诸如“排除某些 google play 服务”或“扩展 MultiDexApplication”之类的解决方案没有用处。
android - MultiDexExtractor 在错误的 dex 文件中
我有一个应用程序太大而无法放入一个 dex 文件,所以我使用的是 multidex。当我在某些机器上创建它时它工作正常,但是当我在另一台机器上创建它时,应用程序在某些设备上崩溃,而不是全部(在 Note 2 上崩溃,在 Nextus 6 上工作)。
我反编译了 APK,发现 MultiDexExtractor 类在 classes2.dex 中,而不是应该在的 classes.dex 中。
我以为 gradle v1.0.0 及更高版本会自动将所有类放在正确的 dex 中?有任何想法吗?
在 gradle 文件中,我添加了
在依赖项和
在默认配置中
然后在应用程序文件中:
我正在使用 android 构建工具22.0.1
这是我的 gradle 版本:
android - 使用 Dagger 注入依赖项时 multidex 应用程序中的 VerifyError
库的示例应用程序有大约 67k 方法。它启用了 multidex 以克服 65k 方法限制。不幸的是,启用 multidex 后,应用程序在VerifyError
尝试注入EndpointAdapter
主要活动时崩溃。
应用proguarded和禁用multidex时不会出现这个问题,所以一定是multidex和Dagger 1问题引起的。
我确定EndpointAdapter
是在主 dex 文件中,但是 Dagger 生成的一些类位于 multidex 生成的第二个 dex 文件中。此问题发生在 API < 21 的设备上(例如,在带有 KitKat 4.4.4 的 genymotion 上)。
知道为什么它会崩溃VerifyError
吗?
这是 MultiDex 标签的输出
编辑
我已经切换到 Dagger 2,这个问题现在已经解决了。Dagger 2 不再使用反射,这是该问题的主要因素。
android - android 库项目中的方法引用过多 - ClassNotFoundException
我有我在使用 AAR 文件的主要 android 项目中使用的库项目。我现在得到了我所期望的著名的 65k 方法限制,但我几乎没有什么疑问。
我在主项目的 libs 文件夹中添加了 AAR 文件,并在 build.gradle 中编译了相同的文件。
1) 我是否需要在库和主 android 项目中添加多 dex 支持?
2)我需要在两个项目中添加 afterEvaluate 脚本吗?
最重要的是,如果我们让多 dex 工作,我们可能会在主 android 项目中遇到 Classnotfound 异常,如果我们尝试使用的任何类不在主 dex 列表中。
编辑:-我正在尝试根据我的测试继续发布更新,以便任何有任何想法的人都可以帮助我们所有人。
项目中使用的依赖项:-
17-08-2015 - 根据文档,我修改了我的代码及其现在的工作,但我无法使用 proguard 生成签名的 apk。
Proguard 文件看起来像:-
错误:-
我之前也遇到过这个问题,在上一个项目中我无法解决它,但这次我需要解决它。
有任何想法吗?
android - Android 应用程序中的 OAuth
我需要OAuth
在我的 Android 应用程序中使用协议。我决定使用android-oauth-client。在我的build.gradle
文件中,我有:
使用 gradle 文件同步项目工作正常,但是当我尝试构建我的应用程序时,出现了问题:
错误:任务“:app:dexDebug”执行失败。com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_51\bin\java.exe'' 完成非零退出值 2
我发现我应该尝试multiDexEnabled true
在defaultConfig
. build.gradle
第一个问题解决了,但还有一个问题:
错误:任务“:app:packageAllDebugClassesForMultiDex”执行失败。java.util.zip.ZipException:重复条目:android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl.class
我不知道如何修复它以及如何构建我的项目。你能帮我吗?提前致谢。