美文网首页
方法数超过64K的问题

方法数超过64K的问题

作者: Jam_Chan | 来源:发表于2017-07-21 17:01 被阅读0次

    报错一:java.lang.VerifyError: com/trello/rxlifecycle/components/support/RxAppCompatActivity

    报错二:java.lang.NoClassDefFoundError: retrofit2.Retrofit$Builder

    https://developer.android.com/studio/build/multidex.html

    minSdkVersion 设置为 21 或更高值情况下:

    只需在模块级 build.gradle 文件中将 multiDexEnabled 设置为 true

    android {
        defaultConfig {
            ...
            minSdkVersion 21 
            targetSdkVersion 26
            multiDexEnabled true
        }
        ...
    }
    

    minSdkVersion 设置为 21以下情况下:

    android {
        defaultConfig {
            ...
            minSdkVersion 15 
            targetSdkVersion 26
            multiDexEnabled true
        }
        ...
    }
    
    dependencies {
      compile 'com.android.support:multidex:1.0.1'
    }
    

    根据是否要替换Application 类:

    1,如果没有用自己的application类替换application类,可在清单文件配置

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myapp">
        <application
                android:name="android.support.multidex.MultiDexApplication" >
            ...
        </application>
    </manifest>
    

    如果你自定义了自己的application类来替换application类的话,则可以

    public class MyApplication extends MultiDexApplication { ... }
    

    或者:

    public class MyApplication extends SomeOtherApplication {
      @Override
      protected void attachBaseContext(Context base) {
         super.attachBaseContext(context);
         Multidex.install(this);
      }
    }
    

    构建应用后,Android 构建工具会根据需要构建主 DEX 文件 (classes.dex) 和辅助 DEX 文件(classes2.dex 和 classes3.dex 等)。然后,构建系统会将所有 DEX 文件打包到您的 APK 中。

    运行时,Dalvik 可执行文件分包 API 使用特殊的类加载器来搜索适用于您的方法的所有 DEX 文件(而不是仅在主 classes.dex 文件中搜索)。

    相关文章

      网友评论

          本文标题:方法数超过64K的问题

          本文链接:https://www.haomeiwen.com/subject/mzuekxtx.html