如何启用Multidex进行本机反应?

Klo*_*oar 8 java android react-native

我很确定它具有内置功能,但是在搜索或在文档中找不到任何内容。是否有启用了multidex的构建标志?

另外请注意:有什么方法可以查看哪些库使您的方法计数混乱了吗?达到64k的限制令人惊讶。

Bra*_*don 23

对于RN 0.59+并使用Gradle 3.4.1,这里没有答案提供完整的解决方案。我做了以下工作,并且有效:

  1. 在中android/app/build.gradle,更新dependency块:

    dependencies {
        // ... your other dependencies
    
        // Multidex
        implementation 'com.android.support:multidex:1.0.3'
    }
    
    Run Code Online (Sandbox Code Playgroud)

    并同时更新defaultConfigandroid块:

    defaultConfig {
        // ... your `applicationId`, etc.
        multiDexEnabled true
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在中MainApplication.java,替换
    dependencies {
        // ... your other dependencies
    
        // Multidex
        implementation 'com.android.support:multidex:1.0.3'
    }
    
    Run Code Online (Sandbox Code Playgroud) 在顶部
    defaultConfig {
        // ... your `applicationId`, etc.
        multiDexEnabled true
    }
    
    Run Code Online (Sandbox Code Playgroud) 或者,如果您使用的是RN 0.60+,或者已手动升级到AndroidX,请改用以下方法:
    import android.app.Application;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 仍在MainApplication.java,替换
    import android.support.multidex.MultiDexApplication;
    
    Run Code Online (Sandbox Code Playgroud)
    import androidx.multidex.MultiDexApplication;
    
    Run Code Online (Sandbox Code Playgroud)

  • 对于在此答案后仍然有问题的用户,请检查以下行是否正确。导入应为“ androidx.multidex.MultiDexApplication”。不是`android.support.multidex.MultiDexApplication`。这是对我有用的导入声明。 (3认同)

Klo*_*oar 7

在其他地方找到答案。与为任何常规Android项目启用它没什么不同。

android {
    ....
    defaultConfig {
        ...
        multiDexEnabled true
    }
Run Code Online (Sandbox Code Playgroud)

至于方法计数,此站点可以解决问题:http : //inloop.github.io/apk-method-count/


Ale*_*évy 5

android / app / build.gradle

android {
    ....
    defaultConfig {
        ...
        multiDexEnabled true
    }
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Multidex,则您的应用程序应扩展MultiDexApplication而不是Application。

MyApplication.java

import android.support.multidex.MultiDexApplication;

public class MyApplication extends MultiDexApplication{
     ...
}
Run Code Online (Sandbox Code Playgroud)

  • android.support.multidex.MultiDexApplication无法转换为com.facebook.react.ReactApplication (3认同)