2010-11-01 5 views
7

J'ai le code source Android dans mon système et cela fonctionne très bien. Mais quand je fais quelques changements dans les fichiers source android et exécutez "make" il ne génère/mise à jour aucun fichier S'il vous plaît corrigez-moi si je me trompe,Comment reconstruire le code source Android après avoir apporté des modifications dans les fichiers source Android

i) système devrait générer un nouveau fichier system.img si les changements ont été apportées à son code source

ii) fichier fichier zImage noyau android ne change pas avec tout changement, même si nous apportons des modifications au code source

une autre question si je crée un nouveau dossier bibliothèque à l'intérieur/libcore est automatiquement récupéré lors de la compilation. Pour créer un nouveau dossier de bibliothèque en dehors de/libcore j'ai ajouté son chemin dans /build/core/main.mk et le fichier .classpath. Ce n'est toujours pas récupéré pendant la compilation. Quelqu'un peut-il confirmer s'il vous plaît où tout ce que nous devons faire des changements pour ajouter un nouveau fichier de bibliothèque extérieur/libcore

Cordialement, Yogesh

+0

jamais eu ce problème, peut-être parce que j'utilise Motodev studio d'Android (Eclipse complète installer avec des plugins) http://developer.motorola.com/docstools/motodevstudio/download/ Qu'est-ce que vous utilisez? – Jim

+2

Je n'ai pas l'intention de construire une application pour Android à la place je veux faire quelques changements dans les fichiers intégrés Android et recompiler la source afin qu'il puisse être envoyé à l'émulateur, au-dessus de laquelle toutes les applications peuvent s'exécuter. – JoshMachine

+0

@JoshMachine J'ai aussi le même problème. J'ai ajouté quelques journaux dans les fichiers source et fait une marque. Comment avez-vous résolu votre problème? –

Répondre

10

Cela dépend du référentiel exact que vous avez vérifié. Mais pour la majorité d'entre eux la recette suivante fonctionnera:

http://source.android.com/source/download.html

Remarque, si vous utilisez la dernière version, vous devez avoir le système 64 bits

MISE À JOUR: Pour une raison quelconque la page ci-dessus est manquant quelques étapes vitales. Donc, ici, ils sont

Après avoir fait étape « de synchronisation repo » (prend un certain temps, mais je suppose que vous avez fait depuis que vous avez les fichiers source), procédez comme suit:

$ . build/envsetup.sh 
$ lunch 

La dernière commande vous donne une liste d'options pour quelle plateforme vous voulez construire. Si vous voulez construire pour l'émulateur choisissez full-eng. Sinon, choisissez-en un pour le fournisseur de votre périphérique spécifique. Après avoir choisi la plate-forme, assurez-vous de faire tout d'abord, car la plate-forme Android est très interdépendante. Donc, vous devez vous assurer que vous avez tous les composants.

Lors du développement, vous pouvez créer des composants individuels assez rapidement. En utilisant la commande suivante:

mmm <component_directory_name> 

Par exemple:

mmm external/rsync 

En outre, le système de construction ne change pas mettre la sortie et les fichiers intermédiaires avec le code source. Tout va dans le répertoire out/target.

+0

Bonjour Vlad, donc si je fais quelques changements dans les fichiers source. disons que j'ajoute quelques logs et que je fais un make, est ce que les nouvelles images de out/target/product auront ces changements? –

+0

Désolé, je n'ai pas fait de builds android comme ça depuis des lustres. Pour les versions plus anciennes, aucune image ne changerait, vous devez reconstruire complètement pour obtenir de nouvelles images. Je n'ai aucune idée de ce que les nouvelles plates-formes Android font dans ce cas. – Vlad

+0

J'ai fait quelques modifications sur un AndroidManifest.xml, et compiler cette application via mm -B, mais après avoir rouvert ce fichier, mes changements ont disparu! –

4

Cela dépend du changement que vous voulez effectuer.

Dans un cas facile, si le changement est local (par exemple, l'ajout de nouvelles lignes dans un fichier source Android existants appelés xxx.c), vous pouvez facilement exécuter:

mm -B (under the root directory of xxx.c) 
adb remount 
adb sync 
adb reboot 

Dans d'autres cas, par exemple, vous créer un nouveau service système pour remplacer l'ancien qui est démarré au démarrage, comme indiqué dans le fichier init.rc.Ensuite, vous avez probablement besoin:

  1. Mise à jour init.rc fichier
  2. Construire source tout Android
  3. flash nouvelle image
+1

une racine d'adb est probablement nécessaire, que le remount d'adb fonctionne. 'adb root' et' adb remount' est uniquement disponible sur user-debug et eng builds d'android –

Questions connexes