“Package R n'existe pas” erreur lors de la construction avec Gradle en ligne de commande
Je suis attemping pour construire un Android
projet avec Gradle
en ligne de commande, mais a trouvé un problème lorsque je veux changer la structure de répertoire.
Actuellement, c'est comme cela:
.
└── main
├── AndroidManifest.xml
├── ic_launcher-web.png
├── java
│ └── com
│ └── myproject
│ └── MainActivity.java
└── res
├── ...
├── layout
│ ├── activity_main.xml
│ └── fragment_main.xml
├── ...
...
Puis-je exécuter:
./gradlew clean build
Qui se termine par:
BUILD SUCCESSFUL
Ok. Tous beaux. Mais maintenant, je veux créer un nouveau répertoire, donc:
- Je créer un ui
répertoire et le déplacement MainActivity.java
là:
.
└── main
├── AndroidManifest.xml
├── ic_launcher-web.png
├── java
│ └── com
│ └── myproject
│ └── ui
│ └── MainActivity.java
└── res
├── ...
├── layout
│ ├── activity_main.xml
│ └── fragment_main.xml
├── ...
...
Modifier son package:
package com.myproject.ui;
//imports
public class MainActivity extends ActionBarActivity {
...
}
Modifier ses android:name
attribut dans AndroidManifest.xml
:
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name" >
...
</activity>
Et d'essayer 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
Ce que je fais mal? Des idées?
Merci.
- Appuyez sur Alt+Entrée sur le nom de la Classe si vous utilisez Android Studio. Il a juste des importations de la R pertinente de la classe elle-même.
Vous devez vous connecter pour publier un commentaire.
Cela se produit généralement lorsque vous déclarez le mauvais paquet dans votre Activité.
Assurez-vous que le
package com.example.blah;
dans la déclaration de votre Activité correspond à lapackage
déclaration dans votreAndroidManifest.xml
.Je l'ai eu, donc je vais répondre moi-même.
Je devais déclarer la
R
classe dans ces activités, des fragments, ou que ce soit les classes qui utilisent toutes les ressources qui y sont définies.Donc, ce serait comme:
Android Studio
qui gèrent ces importations par lui-même, donc je ne vous inquiétez pas à ce sujet.J'ai eu cette erreur car j'ai changé le nom du paquet dans le .fichiers java et renommé les répertoires, mais n'a pas de mise à jour AndroidManifest.xml. Changer le nom du package dans l'AndroidManifest.xml fixe le problème. Ceci est cohérent avec loopj la réponse ci-dessus.
L'ensemble de la procédure pour le changement de nom du package Java dans un projet Android qui a fonctionné pour moi est la suivante:
J'ai eu ce même problème. La solution est de mettre en évidence et cliquez-droit sur le R et 'importer de la classe ou de mettre en évidence R et appuyez sur alt+Entrée, puis cliquez sur importer la classe