6

我试图在 AOSP 版本 10 中添加一个 APK 作为系统应用程序。我遵循了几乎不同的链接中提到的程序,这里是Add apk in AOSP但没有任何效果。此链接中提到的过程以及我遵循的步骤是:

  1. 将我的 Apk 放入Aosp_root/packages/apps/my-app-folder/my-app.apk
  2. 写在Android.mk_my-app.apk/my-app-folder

代码Android.mk

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE_TAGS := optional
    
    LOCAL_MODULE := Signal
    
    LOCAL_CERTIFICATE := platform
    
    LOCAL_SRC_FILES := Signal-website-universal-release-4.55.8.apk
    
    LOCAL_MODULE_CLASS := APPS
    
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    
    include $(BUILD_PREBUILT)
  1. 然后在第 3 步中添加PRODUCT_PACKAGEScore.mk否则我在指定目录 ( ) 中common.mk找不到两个指定文件 (core.mk或)。但我在文件夹中找到文件并在此文件中找到并在其中添加了 my-app 的目录。common.mkbuild/target/productsgsi-common.mkbuild/target/productPRODUCT_PACKAGES

这是gsi-common.mk.

   `PRODUCT_PACKAGES += \
    messaging \
    PhotoTable \
    WAPPushManager \
    WallpaperPicker \
    Signal \`
  1. 在为设备重建 AOSPaosp-root并将其刷新后,没有任何改变,my-app.apk也没有添加。然后我mm在目录中使用命令,packages/apps它构建my-app.apk并添加到aosp_root/out/target/product/taimen/system/app. 之后我运行 make snod 命令重新生成系统映像并创建它。当我在我的 Pixel 设备中刷新此图像时,它卡在 Google 徽标上,并且在显示 google 徽标之前还显示操作系统已损坏。

你能告诉我我错过了什么或哪一步错了吗?

4

4 回答 4

5

为 Android 11 和 Android 8.1 回答这个问题

为您的应用程序创建一个文件夹 <AOSP-root-directory>/package/apps/<yourAppFolder>

在里面yourAppFolder创建一个Android.mk包含以下内容的文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := < your app folder name >

LOCAL_CERTIFICATE := platform

LOCAL_SRC_FILES := < app apk filename >

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

include $(BUILD_PREBUILT)

将您的 apk 文件放在同一个文件夹中。

现在我们必须在系统映像中包含 apk 来做到这一点,为此我们必须PRODUCT_PACKAGES在文件的列表中提及模块名称:

对于安卓 11 - aosp-root-dir/build/target/product/handheld_system.mk

对于安卓 8.1 - aosp-root-dir/build/target/product/core.mk

于 2020-11-20T07:00:27.420 回答
1

AOSP10 中需要的其他步骤:

首先,将您的模块名称添加到 PRODUCT_PACKAGES 中:

<aospbase>\build\make\target\product\base_system.mk

这会将 APK 添加到系统

二、白名单权限(如果需要,否则设备无法启动):之后make,运行 development/tools/privapp_permissions/privapp_permissions.py

如果生成的权限集不为空,请将输出添加到: frameworks/base/data/etc/privapp-permissions-platform.xml

参考:https ://source.android.com/devices/tech/config/perms-whitelist

于 2020-05-17T14:30:53.097 回答
0

在从 AOSP 构建 Android 映像之前,您必须通过“lunch”命令选择构建目标。如果您为使用 Qualcomm Snapdragon 8xx 处理器的 Google Pixel 设备构建,您应该像下面这样午餐:

$ lunch aosp_arm64-eng

在这种情况下,输出图像应包含 build/target/products/gsi_common.mk 中包含的包

当然,你应该尝试

$ make installclean
$ make -j32 #may be -j16, -j8, etc. depends on your build host

然后在输出图像中再次检查您的应用程序。

如果系统仍然损坏,您能否提供更多相关信息(例如:logcat)

于 2020-03-04T07:48:07.500 回答
0

将预构建的应用程序添加到构建中

在 AOSP 根目录中添加文件夹:

/package/app/<你的应用文件夹>

然后在这个文件夹中添加:

empty Android.mk
< yourapp.apk >

android make 文件应该包含对您的 apk 的引用,将其添加到您的 Android.mk 中:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := < your app folder name >

LOCAL_CERTIFICATE := < desired key >

LOCAL_SRC_FILES := < app apk filename >

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

include $(BUILD_PREBUILT)

在 commons.mk 中创建一个条目(通常在 build/target/product 中)为您的 apk 添加该行(检查所有其他人的位置)

PRODUCT_PACKAGES += < what you have defined in LOCAL_MODULE, it should be your app folder name >

编译AOSP,你会发现系统上安装了新的应用程序。

上面显示的 Android.mk 将在 /system/app 中安装 APK

如果您希望在 /system/priv-app 中安装 APK,您需要将以下行添加到 Android.mk

LOCAL_PRIVILEGED_MODULE := true

如果您希望在 /data/app 中安装 APK,您需要在包含 $(BUILD_PREBUILT) 行之前将以下行添加到 Android.mk

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)

参考:如何在 AOSP 构建中添加 APK?

于 2020-03-02T12:25:36.817 回答