2010-11-30 5 views
4

Im travaillant sur une petite interface dans android et quand je l'exécute le "xxx application s'est arrêté de façon inattendue" apparaît. Je cherche des erreurs possibles mais je ne trouve rien.Modifier le package de classe R android/eclipse

De toute façon, je voudrais changer le nom du paquet de classe R, quand je refactor-> rename it eclipse génère un autre dans l'ancien paquet, même si je supprime ce paquet eclipse le génère à nouveau, je ne peux pas me débarrasser il!

Répondre

0
  1. Regardez votre LogCat. Il devrait avoir la trace de la pile de votre erreur.
    • Pour voir votre LogCat à partir d'Eclipse, allez dans Fenêtre> Afficher la vue> Autre> Android> LogCat.
    • Pour voir votre LogCat de la ligne de commande, accédez à votre SDK/outils dossier et exécuter « logcat adb »
  2. Il est impossible de changer l'ensemble de la classe R.
18

Pour modifier le nom du package du produit R classe, modifiez la propriété package de la balise <manifest> dans AndroidManifest.xml

+0

Merci beaucoup! – Flanagan1

5

Il pourrait être possible grâce à la personnalisation de la ligne de commande outils AAPT. aapt supporte l'option --custom-package qui spécifie le paquet où la classe R sera générée.

ANT L'utilisation, cela peut être réalisé de cette façon:

  <exec executable="aapt" failonerror="true"> 
       <arg value="package" /> 
       <arg value="-m" /> 
       <arg value="-J" /> 
       <arg path="${gen.absolute.dir}" /> 
       <arg value="-M" /> 
       <arg path="AndroidManifest.xml" /> 
       <arg value="-I" /> 
       <arg path="${android.jar}" /> 
       <arg value="-A" /> 
       <arg path="${asset.absolute.dir}" /> 
       <arg value="-S" /> 
       <arg path="${resource.absolute.dir}" /> 
       <arg value="--custom-package" /> 
       <arg value="my.custom.package" /> 
      </exec> 
+0

Merci beaucoup pour cette astuce. David, je pense que ce sera très utile pour moi de traiter avec plusieurs branches de projet. Pouvez-vous compléter un peu votre réponse? Je veux dire, où je dois mettre ce code XML? –

+0

Mon commentaire ne s'applique pas au récent SDK Android car une tâche aapt ANT a été introduite dans les outils Android, et elle est utilisée dans le script Android ANT. Ce que j'ai fait de mon côté est la personnalisation du script ANT disponible dans le répertoire /tools/ant, et j'ai personnalisé des cibles telles que -resource-src, -package-resources. – david

+0

Plus un juste pour m'aider à trouver la réponse à ma question .. où je étais perplexe au sujet des classes R étant disparu d'une application. Trouvé les dans un autre paquet. Merci – Arunkumar

2

J'ai personnalisé un script ant pour que je puisse changer le nom du package pour R.java lors de la construction de ma demande. Ce que j'ai fait est de surcharger la cible -code-gen et de modifier l'attribut projectLibrariesPackageName quand -code-gen est en train d'exécuter aapt. (Une alternative est de changer le build.xml de construction qui éclipse à l'aide, je pense qu'il se trouve dans /tools/ant/build.xml)

<!-- Code Generation: compile resources (aapt -> R.java), aidl, renderscript --> 
    <target name="-code-gen"> 
     <do-only-if-manifest-hasCode 
       elseText="hasCode = false. Skipping aidl/renderscript/R.java"> 
      <echo>...........</echo> 
      <echo>Handling aidl files...</echo> 
      <aidl executable="${aidl}" framework="${android.aidl}" 
        genFolder="${gen.absolute.dir}"> 
       <source path="${source.absolute.dir}"/> 
      </aidl> 

      <!-- renderscript generates resources so it must be called before aapt --> 
      <echo>...........</echo> 
      <echo>Handling RenderScript files...</echo> 
      <renderscript executable="${renderscript}" 
        framework="${android.rs}" 
        genFolder="${gen.absolute.dir}" 
        resFolder="${resource.absolute.dir}/raw" 
        targetApi="${target.api}"> 
       <source path="${source.absolute.dir}"/> 
      </renderscript> 

      <echo>...........</echo> 
      <echo>Handling Resources...</echo> 
      <aapt executable="${aapt}" 
       command="package" 
       verbose="${verbose}" 
       manifest="AndroidManifest.xml" 
       androidjar="${android.jar}" 
       rfolder="${gen.absolute.dir}" 
       nonConstantId="${android.library}" 
       projectLibrariesResName="project.libraries.res" 
       projectLibrariesPackageName="package.internal"> <!-- Put custom package name here --> 
        <res path="${resource.absolute.dir}" /> 
      </aapt> 
     </do-only-if-manifest-hasCode> 
    </target> 
+1

Le type ne prend pas en charge l'attribut "projectLibrariesPackageName". – AndroidGecko

0

Changer votre point de vue dans Eclips de Java Perspective (en haut à droite Corner) à DDMS Perspective. Là, vous trouverez le LogCat pour voir les erreurs dans votre construction Android.

Cochez cette case, puis affichez ces erreurs afin que nous puissions vous aider.

Questions connexes