Je tente de construire un projet Android
avec Gradle
à partir de la ligne de commande, mais j'ai trouvé un problème lorsque je veux changer la structure du répertoire.
Est actuellement comme ceci:
.
└── main
├── AndroidManifest.xml
├── ic_launcher-web.png
├── Java
│ └── com
│ └── myproject
│ └── MainActivity.Java
└── res
├── ...
├── layout
│ ├── activity_main.xml
│ └── fragment_main.xml
├── ...
...
Ensuite j'exécute:
./gradlew clean build
Cela se termine par:
BUILD SUCCESSFUL
D'accord. Tout va bien. Mais maintenant, je veux créer un nouveau répertoire, donc:
Je crée un répertoire ui
et je déplace MainActivity.Java
Là:
.
└── main
├── AndroidManifest.xml
├── ic_launcher-web.png
├── Java
│ └── com
│ └── myproject
│ └── ui
│ └── MainActivity.Java
└── res
├── ...
├── layout
│ ├── activity_main.xml
│ └── fragment_main.xml
├── ...
...
Modifiez son package:
package com.myproject.ui;
// imports
public class MainActivity extends ActionBarActivity {
...
}
Modifiez son Android:name
attribut dans AndroidManifest.xml
:
<activity
Android:name=".ui.MainActivity"
Android:label="@string/app_name" >
...
</activity>
Et essayez de le compiler à nouveau:
./gradlew clean build
Avec les erreurs suivantes:
/home/birei/MyDummyProject/MyProject/src/main/Java/com/myproject/ui/MainActivity.Java:19: error: package R does not exist
setContentView(R.layout.activity_main);
^
/home/birei/MyDummyProject/MyProject/src/main/Java/com/myproject/ui/MainActivity.Java:23: error: package R does not exist
.add(R.id.container, new PlaceholderFragment())
^
/home/birei/MyDummyProject/MyProject/src/main/Java/com/myproject/ui/MainActivity.Java:33: error: package R does not exist
getMenuInflater().inflate(R.menu.main, menu);
^
/home/birei/MyDummyProject/MyProject/src/main/Java/com/myproject/ui/MainActivity.Java:43: error: package R does not exist
if (id == R.id.action_settings) {
^
/home/birei/MyDummyProject/MyProject/src/main/Java/com/myproject/ui/MainActivity.Java:60: error: package R does not exist
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
BUILD FAILED
Qu'est-ce que je fais mal? Des idées?
Merci.
Cela se produit généralement lorsque vous déclarez le mauvais package dans votre activité.
Assurez-vous que le package com.example.blah;
la déclaration de votre activité correspond à la déclaration package
de votre AndroidManifest.xml
.
Je l'ai, alors je vais me répondre.
J'ai dû déclarer la classe R
dans ces activités, fragments ou quelles que soient les classes qui utilisent n'importe quelle ressource définie ici.
Donc, ce serait comme:
package com.myproject.ui;
// lots of imports...
// ...
import com.myproject.R;
public class MainActivity extends ActionBarActivity {
...
}
J'ai eu cette erreur car j'ai changé le nom du package dans les fichiers .Java et renommé les répertoires mais je n'ai pas mis à jour AndroidManifest.xml. La modification du nom du package dans AndroidManifest.xml a résolu le problème. Ceci est cohérent avec la réponse de loopj ci-dessus.
La procédure complète pour changer le nom du package Java dans un projet Android qui a fonctionné pour moi) est la suivante:
J'ai eu le même problème. La solution consiste à mettre en surbrillance et à cliquer avec le bouton droit sur la classe R et "importer" ou à mettre en surbrillance R et à appuyer sur alt + Entrée, puis à cliquer sur la classe d'importation