簡體   English   中英

如何在 AOSP 源代碼中添加預建應用程序(系統應用程序)

[英]How to Add Pre-built App (System App) in AOSP source code

我試圖在 AOSP 版本 10 中添加一個 APK 作為系統應用程序。 我遵循了幾乎不同的鏈接中提到的過程,這里是在 AOSP 中添加 apk但沒有任何效果。 此鏈接中提到的過程以及我遵循的步驟是:

  1. 將我的 Apk 放在Aosp_root/packages/apps/my-app-folder/my-app.apk
  2. /my-app-folder寫入my-app.apk Android.mk

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 步中,在core.mkcommon.mk添加PRODUCT_PACKAGES我在指定目錄( build/target/products )中找不到兩個指定文件( core.mkcommon.mk )。 但是我在build/target/product文件夾中找到了gsi-common.mk文件,並在此文件中找到了PRODUCT_PACKAGES並在其中添加了 my-app 的目錄。

這是gsi-common.mk代碼。

   `PRODUCT_PACKAGES += \
    messaging \
    PhotoTable \
    WAPPushManager \
    WallpaperPicker \
    Signal \`
  1. 在為aosp-root重建 AOSP 並將其刷入設備后,沒有任何變化, my-app.apk未添加。 然后我在packages/apps目錄中使用mm命令並構建my-app.apk並將其添加到aosp_root/out/target/product/taimen/system/app 之后我運行 make snod 命令重新生成系統映像並創建它。 當我在 Pixel 設備中刷入這張圖片時,它卡在 Google 徽標上,並且在顯示 google 徽標之前還顯示操作系統已損壞。

你能告訴我我遺漏了什么或哪一步是錯誤的嗎?

為 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列表中提及模塊名稱:

對於 android 11 - aosp-root-dir/build/target/product/handheld_system.mk

對於 android 8.1 - aosp-root-dir/build/target/product/core.mk

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

將預構建的應用程序添加到構建中

在 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,您需要在 Android.mk 行中添加以下行 include $(BUILD_PREBUILT)

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)

參考: 如何在 AOSP 版本中添加 APK?

在從 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM