J'essayais d'ajouter un APK dans AOSP version 10 en tant qu'application système. J'ai suivi la procédure mentionnée dans des liens presque différents qui est ici Ajouter apk dans AOSP mais rien n'a fonctionné. Le processus mentionné dans ce lien et les étapes que j'ai suivies sont:
Aosp_root/packages/apps/my-app-folder/my-app.apk
Android.mk
de my-app.apk
dans /my-app-folder
Code d' Android.mk
`PRODUCT_PACKAGES += \ messaging \ PhotoTable \ WAPPushManager \ WallpaperPicker \ Signal \`
PRODUCT_PACKAGES
dans core.mk
ou common.mk
je n'ai pas pu trouver les deux fichiers spécifiés ( core.mk
ou common.mk
) dans le répertoire spécifié ( build/target/products
). Mais j'ai trouvé le fichier gsi-common.mk
dans le dossier build/target/product
et j'ai trouvé PRODUCT_PACKAGES
dans ce fichier et ajouté le répertoire de my-app. voici le code de gsi-common.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)
aosp-root
et l'avoir aosp-root
sur l'appareil, rien n'a changé, my-app.apk
n'a pas été ajouté. Ensuite, j'ai utilisé la commande mm
dans le répertoire packages/apps
et il a construit my-app.apk
et il a été ajouté dans aosp_root/out/target/product/taimen/system/app
. Après cela, j'exécute la commande make snod pour régénérer l'image système et elle a été créée. Lorsque j'ai flashé cette image sur mon appareil Pixel, elle reste sur le logo Google et montre également que le système d'exploitation est corrompu avant d'afficher le logo Google.Pouvez-vous me dire ce que je manque ou quelle étape est erronée?
4 Réponses :
Ajout d'une application prédéfinie à la construction
Dans la racine AOSP, ajoutez le dossier:
/ package / app / <yourappfolder>
Ensuite, dans ce dossier, ajoutez:
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)
Le fichier make android devrait avoir la référence à votre apk, ajoutez ceci à votre Android.mk:
LOCAL_PRIVILEGED_MODULE := true
Créez une entrée dans le fichier commons.mk (généralement dans build / target / product) pour votre apk, ajoutez la ligne (vérifiez où se trouvent tous les autres)
PRODUCT_PACKAGES += < what you have defined in LOCAL_MODULE, it should be your app folder name >
Compilez l'AOSP et vous trouverez la nouvelle application installée sur le système.
L'Android.mk présenté ci-dessus installera l'APK dans / system / app
Si vous souhaitez installer l'APK dans / system / priv-app, vous devrez ajouter la ligne suivante à 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)
Si vous souhaitez installer l'APK dans / data / app, vous devrez ajouter la ligne suivante à Android.mk avant la ligne include $ (BUILD_PREBUILT)
empty Android.mk < yourapp.apk >
Veuillez ajouter vos modifications à la question que vous avez essayée jusqu'à présent et que vous avez trouvée ne fonctionnant pas.
J'ai édité la question et énuméré l'ensemble du processus que j'ai suivi. Veuillez l'examiner maintenant
Avant de créer une image Android à partir d'AOSP, vous devez choisir la cible de construction par la commande "lunch". Si vous construisez pour un appareil Google Pixel utilisant le processeur Qualcomm Snapdragon 8xx, vous devez déjeuner comme ci-dessous:
$ make installclean $ make -j32 #may be -j16, -j8, etc. depends on your build host
Dans ce cas, l'image de sortie doit contenir les packages inclus dans build / target / products / gsi_common.mk
Bien sûr, vous devriez essayer
$ lunch aosp_arm64-eng
puis vérifiez à nouveau votre application dans l'image de sortie.
Si le système est toujours corrompu, pourriez-vous fournir plus d'informations connexes (ex: logcat)
J'ai ajouté apk et construit le code de cleanproject mais il n'est toujours pas ajouté dans le système
@semw: avez-vous vérifié le répertoire / system / app et / system / priv-app
oui, j'ai vérifié les deux dossiers, l'application n'est pas ajoutée.
Étapes supplémentaires nécessaires dans AOSP10:
Tout d'abord, ajoutez le nom de votre module à PRODUCT_PACKAGES dans:
<aospbase>\build\make\target\product\base_system.mk
Cela ajoute l'APK au système
Deuxièmement, les autorisations de liste blanche (si nécessaire, sinon l'appareil ne démarre pas): après make
, exécutez development/tools/privapp_permissions/privapp_permissions.py
Si l'ensemble d'autorisations résultant n'est pas vide, ajoutez la sortie à: frameworks/base/data/etc/privapp-permissions-platform.xml
Référence: https://source.android.com/devices/tech/config/perms-whitelist
Salut @Hermet, Savez-vous comment ajouter une application système dans aosp à partir du code source de l'application (projet complet de studio Android). J'ai essayé plusieurs façons mais cela ne fonctionne pas. Voici le lien de mon erreur
Répondre à cela pour Android 11 et Android 8.1
Créez un dossier pour votre application dans <AOSP-root-directory>/package/apps/<yourAppFolder>
Dans yourAppFolder
créez un fichier Android.mk
avec le contenu ci-dessous
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)
Mettez votre fichier apk dans le même dossier.
Nous devons maintenant inclure l'apk dans l'image système pour ce faire, pour ce faire, nous devons mentionner le nom du module dans la liste PRODUCT_PACKAGES
dans le fichier:
Pour Android 11 - aosp-root-dir/build/target/product/handheld_system.mk
Pour Android 8.1 - aosp-root-dir/build/target/product/core.mk
Savez-vous comment ajouter des bibliothèques .so d'applications dans makefile ou aosp? J'ai un problème de bibliothèque dans un apk. Cela fonctionne bien en tant qu'application utilisateur mais problème de bibliothèque en tant qu'application système
Bienvenue dans Stack Overflow - jetez un œil à cet article stackoverflow.com/help/how-to-ask Cela vous aidera à améliorer votre question, ce qui signifie que vous aurez une meilleure chance de trouver la réponse que vous recherchez.
@semw Salut, avez-vous résolu le problème? Je suis confronté au même problème. L'apk est ajouté au système mais n'apparaît pas dans la ROM
@ShivamJha Non, ce n'est pas encore réglé, je travaille dessus. Je vous ferai savoir quand vous avez terminé et si vous l'avez fait avant moi, dites-moi
Salut, j'ai un problème similaire. Je peux voir que mon apk a été ajouté au répertoire / system / app / FOLDER, mais je ne peux pas voir son icône de lancement. Une idée de ce qui peut se passer?
@caiomcg: Comment avez-vous ajouté l'application? Avez-vous suivi le même processus que j'ai suivi? et si l'application est ajoutée dans votre system.img et que vous ne voyez pas son icône de lancement après avoir fait clignoter system.img dans l'appareil, cela peut être un problème avec votre application. ou lire le problème des autorisations appropriées
Salut @semw merci pour la réponse rapide. J'ai fait un processus assez similaire, mon makefile est un peu différent, j'avais besoin de désactiver l'optimisation ART car ma cible n'est pas la version api de cet appareil même si elle se situe entre compileSdkVersion et minSdkVersion. Mon APK est préconçu et a déjà été testé en tant qu'application standard sur le même appareil. Je peux voir l'apk dans le dossier système / application de l'appareil via ADB mais il n'est pas installé. Je peux essayer d'installer avec une application de test juste pour m'en assurer. Pouvez-vous élaborer sur les problèmes d'autorisation de lecture correcte. Merci d'avance
@caiomcg: s'il est ajouté, il doit également être installé. l'autorisation de lecture en écriture signifie que votre .apk doit avoir des autorisations similaires à celles de votre code source. Votre build doit avoir un accès complet à .apk. Vous pouvez vérifier les autorisations par la commande ls-l
@semw J'ai la permission 664 sur l'apk. J'ai répertorié chaque occurrence de mon application dans le dossier out et je peux voir l'apk sous system / app et un dossier containgni package.apk et package.apk.unaligned sous / obj / APPS / MyApp_intermediates. Une autre suggestion?
@caiomcg Essayez ensuite d'ajouter une autre application. Si la même chose se produit, le problème est lié à vos modifications et si cette application fonctionne, cela signifie que le problème vient de votre application. Vous pouvez créer une application simple avec seulement un ou deux boutons dans Android Studio.
@semw Oui, je le fais maintenant. Merci pour votre aide jusqu'à présent :)