[英]How to Add Pre-built App (System App) in AOSP source code
我試圖在 AOSP 版本 10 中添加一個 APK 作為系統應用程序。 我遵循了幾乎不同的鏈接中提到的過程,這里是在 AOSP 中添加 apk但沒有任何效果。 此鏈接中提到的過程以及我遵循的步驟是:
Aosp_root/packages/apps/my-app-folder/my-app.apk
/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)
core.mk
或common.mk
添加PRODUCT_PACKAGES
我在指定目錄( build/target/products
)中找不到兩個指定文件( core.mk
或common.mk
)。 但是我在build/target/product
文件夾中找到了gsi-common.mk
文件,並在此文件中找到了PRODUCT_PACKAGES
並在其中添加了 my-app 的目錄。 這是gsi-common.mk
代碼。
`PRODUCT_PACKAGES += \
messaging \
PhotoTable \
WAPPushManager \
WallpaperPicker \
Signal \`
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 構建 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.