【问题标题】:Where does Android store dynamic module APKs?Android 在哪里存储动态模块 APK?
【发布时间】:2019-04-03 23:30:46
【问题描述】:

我正在使用dynamic modules 开发一个安卓应用程序。假设有一个基本模块(base)和一个动态模块(feature)。我使用 Android Studio(或 bundle tool)安装了该应用程序,basefeature apks 都安装并位于

/data/app/example.dynapp--Gn1-FdAo0qV-8Y8Q5qb7g==/base.apk
/data/app/example.dynapp--Gn1-FdAo0qV-8Y8Q5qb7g==/feature.apk

我通过运行找到了这些地址

adb shell pm path example.dynapp

然后,我将应用程序包上传到 Play 管理中心,并从 Google Play 将其安装到我的手机上。接下来,我在使用该应用程序时下载了feature 模块。但是,在我运行adb shell pm path example.dynapp 之后,它只显示base apk,并且没有feature apk 的迹象。顺便一提, 似乎安装了feature 模块,因为feature 模块的功能正常工作。

我的问题是 Google Play 将这些动态加载的模块(或 APK)保存在哪里。有没有办法使用adb(如adb pull)访问它们。

【问题讨论】:

  • 您找到解决方案了吗?我也是,不知道下载的动态模块的数据将保存在哪里,因为现在应用程序本身的大小并没有增加太多

标签: android adb android-app-bundle


【解决方案1】:

它将它存储在应用程序目录中。

像这样:

/data/data/com.myapp.mypackage/files/splitcompat/1400191/verified-splits/kotlin.config.xxhdpi.apk

显然,1400191 发生了变化。

为了找到你下载的apk文件,你可以在设备上运行linux命令来找到它们:

find / -name *.xxhdpi.apk

甚至更好:

find /data/data/com.myapp.mypackage -name *.xxhdpi.apk 

注意:你需要在'adb shell'之后运行这些,之后,你需要作为你的应用程序运行。 如果你有一个 root 设备,那么在 'adb shell' 之后输入 'su' 就足够了。

【讨论】:

  • 感谢您的回答。只是补充一点:如果设备没有root,则基础APK必须是可调试的(您可以使用Play商店的内部应用共享来上传您的应用程序包的可调试版本)。然后,运行以下命令:adb shell -> run-as PKG_NAME -> find . -name "*.apk" 输出是已安装动态功能模块的列表。
  • 好点。在有根设备上运行让我忘记了这一点:)
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多