首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Multidex支持库已禁用

Android Multidex支持库已禁用
EN

Stack Overflow用户
提问于 2017-04-05 18:11:40
回答 2查看 13.8K关注 0票数 6

我在我的应用程序中遇到了一些多索引支持的问题,实际上应用程序安装正常,但在这个过程中,一些活动崩溃了,应用程序重新启动了主要活动。在logcat中,我发现:

代码语言:javascript
运行
复制
I/MultiDex: install
I/MultiDex: VM has multidex support, MultiDex support library is disabled.

但我遵循了启用Multidex支持的建议:

Gradle:

代码语言:javascript
运行
复制
compileSdkVersion 25
buildToolsVersion '25.0.2'

defaultConfig {
    applicationId "com..company.package"
    minSdkVersion 15
    targetSdkVersion 25
    multiDexEnabled true
    versionCode 21
    versionName "2.1.3"

}

dexOptions {
    javaMaxHeapSize "4g"
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//compile project(':rangebar')
compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') { transitive = true }
compile('com.weiwangcn.betterspinner:library-material:1.1.0') {
    exclude group: 'com.android.support', module: 'appcompat-v7'
}
compile files('libs/itextpdf-5.5.9.jar')
compile 'com.android.support:multidex:1.0.1'
...

应用程序类扩展了Multidex:

代码语言:javascript
运行
复制
public class MyApplication extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
}

我不知道我到底错过了什么才能摆脱这件事

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-05 18:24:28

I/多索引:安装I/多索引: VM支持多索引,已禁用multidex支持库。

您应该设置

代码语言:javascript
运行
复制
public class MyApplication extends Application {

清单

代码语言:javascript
运行
复制
<application
    android:name=".MyApplication"
   ....>

然后是Clean-Rebuild-Run

票数 5
EN

Stack Overflow用户

发布于 2018-04-25 00:22:41

但也要添加到顶部的答案^

在安卓文档中,它说,如果你的minSdkVersion是21或更高,你不需要multidex支持库。所以,我明白你为什么那样做了,https://developer.android.com/studio/build/multidex.html#mdex-on-l

您拥有的选项如下:https://developer.android.com/studio/build/multidex.html#mdex-gradle

别忘了添加你的应用程序(build.gradle)

代码语言:javascript
运行
复制
android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 28
        multiDexEnabled true
   }
    ...
}

android选项1)名称如果您不覆盖类,请编辑清单文件以在标记中设置android:,如下所示:这将是您的条目:

代码语言:javascript
运行
复制
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
            <activity
                    android:name=".MainActivity"
                    android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
    </application>
</manifest>

选项2)如果您确实覆盖了应用程序类,请将其更改为扩展MultiDexApplication (如果可能),如下所示:

代码语言:javascript
运行
复制
public class MyApplication extends MultiDexApplication { ... }

选项3),或者如果您确实覆盖了应用程序类,但无法更改基类,则可以替代地覆盖attachBaseContext()方法并调用MultiDex.install(this)来启用multidex:您可以在不扩展 MultiDexApplication的情况下添加以下代码

代码语言:javascript
运行
复制
public class MyApplication extends **SomeOtherApplication** {

  //You add the code below without extending **MultiDexApplication**
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}

警告:在MultiDex.install()完成之前,不要通过反射或JNI执行MultiDex.install()或任何其他代码。多索引跟踪将不会跟随这些调用,从而导致ClassNotFoundException或验证错误,因为在DEX文件之间存在错误的类分区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43228160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档