- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在按照以下帖子创建多 dex 项目设置:http://android-developers.blogspot.fr/2011/07/custom-class-loading-in-dalvik.html
一切顺利,接下来,我想将二级dex独立成一个library project。
主要项目内容:
com.example.dex.*
二级(图书馆)项目内容:
com.example.dex.lib.*
但是,我无法共享主要项目和图书馆项目都需要的 com.example.dex.LibraryInterface。
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/example/dex/Library
Interface;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:43)
两个项目都需要引用LibraryInterface,有什么办法可以共享这个类吗?谢谢!
最佳答案
Android 开发中的 Multidex 问题
Times Now Android 应用程序是适用于 Android 的功能最丰富的应用程序之一。
具有推送通知、新闻提要、录制视频和上传、与 Google(Plus)、Twitter 和 Facebook 链接以及嵌入式版本的 Times Now Newshour(本身就是一个完整的应用程序)等功能,所有这些功能都可以实时协同工作-随着时间的推移,代码的复杂性和数量带来了其他 Android 开发者很少(如果有的话)面临的技术挑战,尤其是在平台的旧版本上。
其中一个挑战与 Android 的运行时引擎 Dalvik 虚拟机处理 Java 方法的方式有关。
此 App 导致 Java 方法的数量急剧增加。
在我们进行测试时,我们遇到了一个与超过 65k 方法相关的错误(方法太多问题)。
在有点 panic 之后,我们意识到我们可以通过使用这里描述的技术将我们的应用程序分成多个 dex 文件来解决这个问题,该技术着重于将辅助 dex 文件用于扩展模块,而不是应用程序的核心部分.
但是,我们无法以这种方式分解我们的应用程序——Android 框架和不同的 SDK 直接访问我们的太多类。
这通常是不可能的,但我们检查了 Android 源代码并使用 Java 反射直接修改了它的一些内部结构。
我们当然很高兴和感激 Android 是开源的——否则,这种改变是不可能的。
我们尝试了各种技术来回收空间,包括积极使用 ProGuard/MinifyEnabled 和源代码转换以减少我们的方法数量。
我们尝试的任何方法都没有产生重大影响,我们仍然需要编写更多方法来支持我们新的和改进的新闻提要和时间线中的所有丰富内容类型。
根据我们的代码,发布我们的 App TimesNow 1.0.0 版并不容易。
看来我们必须在从应用程序中删除重要功能之间做出选择。
似乎没有什么可以接受的。我们需要更好的解决方案。
然后我们决定在我们的 APK 中有多个 dex 文件,我们尝试了很多解决方案,但没有获得成功。经过大量工作,我们终于找到了解决方案..
我们构建代码并在设备上运行它,它成功运行,这让我们脸上露出笑容,并自信我们解决了一个迄今为止许多开发人员都没有处理过的大问题。
因此,如果您将要面对此问题,我们在此提供处理此问题的提示/说明。
![在此处输入图片描述][1]
android/support/multidex/BuildConfig/class
android/support/multidex/MultiDex$V14/class
android/support/multidex/MultiDex$V19/class
android/support/multidex/MultiDex$V4/class
android/support/multidex/MultiDex/class
android/support/multidex/MultiDexApplication/class
android/support/multidex/MultiDexExtractor$1/class
android/support/multidex/MultiDexExtractor/class
android/support/multidex/ZipUtil$CentralDirectory/class
android/support/multidex/ZipUtil/class
编辑您的 build.gradle 文件并添加以下蓝色粗体行
android {
minSdkVersion 16
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "your.package.name"
.......... }
buildTypes {
release {
.............................
}
}
// Inside android part of build.gradle
dexOptions {
preDexLibraries = false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
..................
// Inside dependencies part of build.gradle compile 'com.android.support:multidex:1.0.1'
..............
}
// Outside android part of build.gradle
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()
}
........
}
编辑您的应用程序类并添加以下蓝色粗线
public class MyApp extends MultiDexApplication {
....
....
}
现在你已经解决了这个问题。请在此处参阅开发者网站以阅读有关此问题和处理方法的更多信息。
关于java - Android 多 dex 项目设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797255/
Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files defi
我试图在 avd 中运行我的应用程序,但是当我选择运行 gradle 时出现异常: Error:Error converting bytecode to dex: Cause: com.android
当我提取一个文件 aab 时出现这个错误: Invalid dex file indices, expecting file 'classes٢.dex' but found 'classes2.de
我有一个 ionic 项目。它已成功构建并在我的 android 手机中运行。突然有一天,当我运行命令“ionic cordova run android”时,我得到如下构建错误: Dex: Erro
这个问题在这里已经有了答案: Unable to execute dex: Multiple dex files define (31 个回答) 4年前关闭。 我更新了 android studio
从过去 3 天开始,我遇到了这个错误,并且已经尽了我所能。任何人都可以帮我纠正它。我正在使用 Android 3.0,我的 sdk 和 Google Play 服务已更新,并且我已将 multiDex
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.nnroh.debtmanager, PI
好的,现在我真的被困在这里了。我不知道该做什么,去哪里或任何事情! 我一直在尝试卸载、重新安装 SDK 和 Eclipse 版本,尝试用谷歌搜索出来,但是 nu-uh... 什么都没有!!! 我可以在
怎么了?为什么我有这个问题? Unable to execute dex: Multiple dex files define Lcom/nineoldandroids/animation/Anima
我尝试运行我的 android 应用程序,但出现此错误。 [2014-03-11 11:21:34 - Dex Loader] Unable to execute dex: Multiple dex
我希望指定包中的所有类都驻留在主 dex 文件中。 那里有使用通配符的选项吗? 最佳答案 很遗憾,不支持通配符。 但是,您可以使用 this script 生成 main-dex-list 文件。 .
我目前有一个来自霍尼韦尔的 DEX BLE-1 适配器,用于从自动售货机检索 dex 数据。我有一个 swift 3 iOS 应用程序,它使用 CoreBluetooth 进行扫描并与外围设备配对。该
我正在使用 IntelliJ IDEA 12.1.4,在我的项目中我使用了几个库/项目: ActionBarSherlock ViewPagerIndicator Volley ProgressShe
我在尝试运行我的项目时遇到了这个问题 - com.android.builder.dexing.DexArchiveBuilderException: Failed to process .gradl
我一直在四处寻找,有很多帖子与这个问题有关,但似乎没有确定的解决方案(例如 Error when building apk - "Multiple dex files define Lcom/goog
我正在对 Jan Berkel 的 SBT Android 插件进行一些黑客攻击,我在想是否有一种方法可以将多个 .dex 文件合并到一个 .dex 文件中包含所有这些。 例如,如果我有这个: cla
我在尝试运行我的应用程序时遇到了这些问题,但不知道如何解决... 谁能帮帮我 这是错误: [2014-04-18 18:47:35 - Dex Loader] Unable to execute de
这个问题在这里已经有了答案: Android support multidex library implementation (4 个回答) 4年前关闭。 生成签名的apk时,有这个错误,但构建项目是
我有一个 Android 应用程序,(理论上)它可以变成一个库并放入外部应用程序中。然后外部应用程序可以创建一个包含我的应用程序的选项卡。库应用程序的设置方式与 google-play-service
我正在开发一个 android 应用程序并且 gradle 构建工作正常但是现在当我构建我的 android 项目时,gradle 构建失败并显示以下错误 Error converting bytec
我是一名优秀的程序员,十分优秀!