使用动态功能构建APK时找不到类

时间:2020-03-13 09:15:07

标签: android apk dynamic-feature-module

我通过'com.android.dynamic-feature'设置了菜单模块。当我编码并由android studio运行时,一切工作正常。当通过Build-> Build APK打包apk时,当我在模块中开始活动时,它会崩溃Class Not Found。 注意:活动路径正确,我想我的模块未附加到应用程序中

  1. 清单模块:
    <dist:module
        dist:instant="false"
        dist:onDemand="false"
        dist:title="">
        <dist:delivery>
            <dist:install-time />
        </dist:delivery>
        <dist:fusing dist:include="true" />
    </dist:module>
  1. 模块gradle
apply plugin: 'com.android.dynamic-feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply from: '../shared_dependencies.gradle'

这里有什么错误吗?谢谢

2 个答案:

答案 0 :(得分:0)

构建具有动态功能模块的Android项目将始终在模拟器上运行,因为没有像Google Play那样的交付系统。另外,在使用功能模块时,也应该使用Build -> Build Bundle(s)/APK(s)->Build Bundle(s)选项。

在主模块的 build.gradle 文件中,您需要设置 dynamicFeatures ,例如:

android {
...
  dynamicFeatures = [
        ':module1',
        ':module2',
        ':module3'
   ]
...
}

在动态功能模块的 build.gradle 文件中,您需要依赖主模块:

dependencies {
   implementation project(':app')
}

答案 1 :(得分:0)

如果您使用<dist:fusing dist:include="true" />并通过APK签名应用,则该应用仍不会包含在APK中。 dynamic-feature仅用于AAB格式。

如果您仍想使用APK格式,则必须使用bundle-tooluniversal APK生成AAB

https://developer.android.com/studio/command-line/bundletool