Как добавить готовое приложение (системное приложение) в исходный код AOSP

Я пытался добавить APK в AOSP версии 10 в качестве системного приложения. Я следовал процедуре, упомянутой почти в разных ссылках, которые находятся здесь Добавить apk в 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_PACKAGES в core.mk или common.mk, я не смог найти оба указанных файла (core.mk или common.mk) в указанном каталоге (build/target/products). Но я нашел файл gsi-common.mk в папке build/target/product и нашел PRODUCT_PACKAGES в этом файле и добавил в него каталог моего приложения.

вот код gsi-common.mk.

   `PRODUCT_PACKAGES += \
    messaging \
    PhotoTable \
    WAPPushManager \
    WallpaperPicker \
    Signal \`
  1. После пересборки AOSP для aosp-root и прошивки на устройстве ничего не изменилось, my-app.apk не добавилось. Затем я использовал команду mm в каталоге packages/apps, и он построил my-app.apk и добавил его в aosp_root/out/target/product/taimen/system/app. После этого я запускаю команду make snod для повторной генерации образа системы, и он был создан. Когда я прошил это изображение на своем устройстве Pixel, оно застряло на логотипе Google, а также показывает, что операционная система повреждена, прежде чем отобразится логотип Google.

Можете ли вы сказать мне, что я упустил или какой шаг неверен?


person semw    schedule 02.03.2020    source источник
comment
Добро пожаловать в Stack Overflow — ознакомьтесь с этой статьей stackoverflow.com/help/how-to-ask. ll поможет вам улучшить ваш вопрос, что будет означать, что у вас будет больше шансов найти ответ, который вы ищете.   -  person HaemEternal    schedule 02.03.2020
comment
@semw Привет, ты починил? Я столкнулся с той же проблемой. АПК добавляется в систему, но не появляется в ПЗУ.   -  person Shivam Jha    schedule 16.03.2020
comment
@ShivamJha Нет, это еще не исправлено, я работаю над этим. Я дам вам знать, когда закончу, и если вы сделали это до меня, то скажите мне   -  person semw    schedule 23.03.2020
comment
Привет у меня похожая проблема. Я вижу, что мой apk был добавлен в каталог /system/app/FOLDER, однако я не вижу его значок запуска. Любая идея о том, что может происходить?   -  person caiomcg    schedule 31.03.2020
comment
@caiomcg: Как вы добавили приложение? Вы следовали тому же процессу, что и я? и если приложение добавлено в ваш system.img, и вы не видите его значок запуска после прошивки system.img на устройстве, возможно, это проблема с вашим приложением. или проблема с правами на чтение   -  person semw    schedule 31.03.2020
comment
Привет @semw спасибо за быстрый ответ. Я сделал довольно похожий процесс, мой make-файл немного отличается, мне нужно было отключить оптимизацию ART, так как моя цель не является версией API этого устройства, даже если она находится в диапазоне между compileSdkVersion и minSdkVersion. Мой APK предварительно подписан и был протестирован ранее как обычное приложение на том же устройстве. Я вижу apk в папке system/app устройства через ADB, но он не установлен. Я могу попробовать установить тестовое приложение, чтобы убедиться. Не могли бы вы рассказать о проблемах с правами на чтение. заранее спасибо   -  person caiomcg    schedule 31.03.2020
comment
@caiomcg: если он добавлен, его также следует установить. Разрешение на чтение и запись означает, что ваш .apk должен иметь те же разрешения, что и ваш исходный код. Ваша сборка должна иметь полный доступ к .apk. Вы можете проверить права с помощью команды ls-l   -  person semw    schedule 31.03.2020
comment
@semw У меня есть разрешение 664 на apk. Я перечислил каждое вхождение моего приложения в выходную папку, и я вижу apk в system/app и папку, содержащую gni package.apk и package.apk.unaligned в /obj/APPS/MyApp_intermediates. Любое другое предложение?   -  person caiomcg    schedule 31.03.2020
comment
@caiomcg Тогда попробуйте добавить другое приложение. Если с ним происходит то же самое, проблема связана с вашими модификациями, и если это приложение работает, это означает, что проблема связана с вашим приложением. Вы можете создать простое приложение с одной или двумя кнопками в Android Studio.   -  person semw    schedule 02.04.2020
comment
@semw Да, делаю это прямо сейчас. Спасибо за помощь до сих пор :)   -  person caiomcg    schedule 03.04.2020


Ответы (4)


Отвечая на это для 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

person Ketan sangle    schedule 20.11.2020
comment
Знаете ли вы, как добавить библиотеки приложений .so в makefile или aosp? У меня проблема с библиотекой в ​​apk. Он отлично работает как пользовательское приложение, но проблема с библиотекой как системное приложение - person semw; 20.11.2020
comment
Я решил это, моя проблема заключалась в том, что я писал имя модуля в неправильном файле в build/target/product/. После написания в handheld_system.mk решил проблему - person semw; 08.01.2021

Дополнительные шаги, необходимые в 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

person Hermit    schedule 17.05.2020
comment
Привет @Hermet, вы знаете, как добавить системное приложение в aosp из исходного кода приложения (полный проект студии Android). Я пробовал несколько способов, но он не работает. Вот ссылка на мою ошибку - person semw; 07.10.2020

Прежде чем собирать образ Android из AOSP, вы должны выбрать цель сборки с помощью команды «lunch». Если вы собираете устройство Google Pixel, использующее процессор Qualcomm Snapdragon 8xx, вы должны пообедать, как показано ниже:

$ 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)

person TuanPM    schedule 04.03.2020
comment
Я добавил apk и код сборки из cleanproject, но он все еще не добавлен в систему. - person semw; 23.03.2020
comment
@semw: вы проверили каталог /system/app и /system/priv-app - person TuanPM; 28.03.2020
comment
да, я проверил обе папки, приложение не добавляется. - person semw; 31.03.2020

Добавление готового приложения в сборку

В корень AOSP добавляем папку:

/package/app/‹ yourappfolder ›

Затем внутри этой папки добавьте:

empty Android.mk
< yourapp.apk >

В файле сборки Android должна быть ссылка на ваш 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 установит APK в /system/app

Если вы хотите установить APK в /system/priv-app, вам нужно будет добавить следующую строку в Android.mk

LOCAL_PRIVILEGED_MODULE := true

Если вы хотите установить APK в /data/app, вам нужно будет добавить следующую строку в Android.mk перед строкой, включающей $(BUILD_PREBUILT)

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)

Ссылка: Как добавить APK в сборку AOSP?

person Daud Arfin    schedule 02.03.2020
comment
Пожалуйста, добавьте свои изменения в вопрос, который вы пробовали до сих пор и обнаружили, что он не работает. - person Daud Arfin; 04.03.2020
comment
Я отредактировал вопрос и перечислил весь процесс, которому я следовал. Пожалуйста, просмотрите его сейчас - person semw; 04.03.2020