2
votes

Comment ajouter une application pré-construite (application système) dans le code source AOSP

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:

  1. Mettez mon Apk dans Aosp_root/packages/apps/my-app-folder/my-app.apk
  2. Écrivez Android.mk de my-app.apk dans /my-app-folder

Code d' Android.mk

   `PRODUCT_PACKAGES += \
    messaging \
    PhotoTable \
    WAPPushManager \
    WallpaperPicker \
    Signal \`
  1. Ensuite, à l'étape 3 pour ajouter 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)
  1. Après avoir reconstruit AOSP pour 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?


10 commentaires

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


4 Réponses :


0
votes

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 >

Référence: Comment ajouter des APK dans une version AOSP?


2 commentaires

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



0
votes

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)


3 commentaires

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.



1
votes

É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


1 commentaires

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



2
votes

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


1 commentaires

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