【问题标题】:Generating APK with all dynamic features [duplicate]生成具有所有动态功能的 APK [重复]
【发布时间】:2019-11-16 13:40:09
【问题描述】:

我在我的项目中添加了一个动态功能模块,当我尝试使用模拟器或直接在设备上运行(使用运行按钮)时一切正常,但是当我尝试使用命令生成 APK 时行 (:app:assembleRelease) 动态功能模块不会包含在最终的 APK 中并且它丢失了。我知道我可以创建一个 Android App Bundle,然后从 .aab 创建一个包含所有模块的 APK。但问题是:

有没有办法创建完整的 apk(所有模块,例如:动态 包括的功能)直接形成源代码?

【问题讨论】:

    标签: android android-gradle-plugin android-app-bundle dynamic-feature


    【解决方案1】:

    我认为您不能直接从源代码创建完整的 apk。

    您应该采取 3 个步骤:

    1. 构建应用程序包:

      ./gradlew clean bundleRelease

    2. 通过 bundletool 使用开关 --mode=universal 生成一个 apk

      java -jar bundletool-all-0.10.2.jar build-apks --bundle=app.aab --output=release.apks --ks=release.keystore --ks-pass=pass:xxxxxx --ks-key-alias=xxxxxxkey --key-pass=pass:xxxxxx --mode=universal

    3. 解压生成的文件:

      unzip release.apks

    【讨论】:

      【解决方案2】:

      使用命令行,您应该使用:app:bundleRelease,它将构建一个Android App Bundle (.San),然后使用bundletool 生成APK 并将它们部署到设备上。

      完整的文档可以在这里找到:https://developer.android.com/studio/command-line/bundletool

      【讨论】:

      • 通过复制提到的链接中的命令来支持@Pierre 回复的评论。 developer.android.com/studio/build/… bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore。 pwd --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd developer.android.com/studio/command-line/…
      • 感谢您的回答。我实际上正在寻找的是从源到 APK 的快捷方式,而无需先生成 AAB 然后生成 APK。有没有你能想到的?
      • 在 Android Gradle 插件中提交功能请求,我认为任务存在,但我不确定它是否已公开或记录在案。
      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2016-10-16
      相关资源
      最近更新 更多