如何在aab格式(Android应用程序捆绑包)中处理R类?

时间:2020-02-08 00:39:22

标签: android google-play apk android-app-bundle

我有一个用Delphi制作的本地应用程序(我的意思是用ARM编译)。该应用在带有apk包的Android32中运行良好。但是现在我想迁移到android 64,然后改用aab格式,但是当我这样做并在运行应用程序时收到错误消息:android.content.res.Resources$NotFoundException: Resource ID #0x7f04001d type #0x1c 无效。,因为它是本机应用程序,我必须手动生成R class,就像这样

  1. 我使用aapt.exe创建R.java
  2. 然后使用javac将R.java编译为R $类
  3. 最后,我构建包含R $类的classes.dex

我执行了2次此过程,一次是构建android32 dex和SO库,另一次是构建android64 dex和SO库

最后,我使用bundletool-all-0.10.3.jar构建了aab文件

我想念什么?为什么使用apk我的程序运行正常,但是使用aab却失败了?

1 个答案:

答案 0 :(得分:2)

Dex文件的32位和64位必须相同,因此您应该具有一个classes.dex和一个资源表(resources.arsc)来生成。

此外,AAB使用不同格式的资源表,该资源表必须使用aapt2而不是aapt生成。看到 https://developer.android.com/studio/build/building-cmdline#bundletool-build了解所有详细信息。