gpt4 book ai didi

android - 是否可以将预构建的 APK 作为用户应用程序添加到 AOSP 构建中?

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:02 25 4
gpt4 key购买 nike

我希望将预构建的 APK 添加到我的 AOSP 构建中。我已经可以通过执行以下操作来做到这一点:

  1. 将 APK 添加到 $root_of_my_source_tree/packages/apps 文件夹。
  2. 创建一个 Android.mk 文件。该文件包含以下内容:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE_TAGS := optional

    LOCAL_MODULE := <name of APK>

    LOCAL_SRC_FILES := <Name of APK>.apk

    LOCAL_MODULE_CLASS := APPS

    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

    LOCAL_CERTIFICATE := platform

    include $(BUILD_PREBUILT)
  3. 添加:

    PRODUCT_PACKAGES += \ <name of APK>

    AOSP 构建系统获取的 make 文件。

这会将 APK 添加到只读的 /system/app 文件夹中,因此用户将无法更新 APK。我希望将 APK 放在 /data/app 文件夹中,这样用户就可以实际更新预构建的 APK。

我已经尝试了 this 中的建议问题,他们没有工作。我尝试了 this 中的建议问题,虽然它确实将 APK 输出到完成构建的 /data/app 文件夹,但一旦我将图像闪存到我的设备上,应用程序就不存在了。该问题的第二个答案确实对此提供了可能的解释,但没有其他建议。

最终,我需要在我的构建中预加载一个可以更新的 APK,所以如果这不起作用或者是一个不好的方法,我愿意接受建议。

最佳答案

我发现 PackageManager 类的标准行为足以满足我的用例。所以这里有一些值得解释的花絮:

  • Lavakush 的答案确实有效,它确实将 APK 输出到源代码树中的 out/target/product/vendor/data/app 文件夹,但 APK 没有显示在 /data/app 闪入设备后在系统镜像中。根据this回答,Android 构建系统不会将任何内容构建到 /data/ 中,因此可以解释这一点。不过,我仍然感到困惑,因为它确实显示为 out/target/product/vendor/data/app 文件夹中的输出。
  • 在我的用例中,我需要将 APK 预加载到构建中,然后根据需要更新它们。由于 /system/app 文件夹的只读性质,我假设我无法更新我的应用程序,这就是为什么我想将它预加载到 /data/app。事实证明,根据 this根据我的测试,PackageInstaller 类的标准行为是将更新后的 APK 安装到 data/app 文件夹并开始运行此 APK 而不是预加载的 /系统/应用 APK。答案还说,设置->应用 屏幕将为您提供卸载更新后的 APK 的选项,然后您将保留原始的系统/应用 APK。我确实观察到了这种行为,这对我的用例来说很好。

关于android - 是否可以将预构建的 APK 作为用户应用程序添加到 AOSP 构建中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44893953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com