Je n'ai pas pu résoudre la dépendance de l'application Java après avoir utilisé Android Studio 3, alors comment y faire face Partie 2

Aperçu

J'ai écrit cet article avant. Comment gérer les dépendances d'applications Java qui ne peuvent pas être résolues avec Android Studio 3

La méthode de cet article n'était pas intelligente, j'ai donc trouvé un bon moyen de réessayer.

Constitution

--Il existe un projet nommé MyApplication. --MyApplication a un module (application Android) appelé app. --MyApplication a un module (application Java) appelé purejava. (La dépendance ne peut pas être résolue en exécutant ce module seul)

Chaque build.gradle ressemble à ceci ./MyApplication/purejava/build.gradle ./MyApplication/app/build.gradle ./MyApplication/build.gradle

Méthode

Tout d'abord, ajoutez ʻapply plugin: 'idea'` à build.gradle du module que vous souhaitez appliquer. Cette fois, Gson est ajouté à titre d'exemple. En dehors de cela, il est automatiquement généré par défaut.

groovy:./MyApplication/purejava/build.gradle


apply plugin: 'java-library'
apply plugin: 'idea' //cette

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.google.code.gson:gson:2.8.2'
}

sourceCompatibility = "1.7"
targetCompatibility = "1.7"

Alternativement, il peut être appliqué à tous les modules à la fois en l'ajoutant à la racine build.gradle.

groovy:./MyApplication/build.gradle


allprojects {
    apply plugin: 'idea'
}

Ensuite, créez la configuration d'application par défaut et ajoutez la tâche ** Exécuter la tâche Gradle ** à ** idée ** à ** Avant le lancement **. スクリーンショット_2018-01-20_0_19_57.png

Vous pouvez maintenant exécuter à partir d'ici avec les dépendances résolues. Bien sûr, si vous l'exécutez avec Debug, vous pouvez vous arrêter à un point d'arrêt. スクリーンショット 2018-01-20 0.30.31.png

résultat

Si vous utilisez Gson dans la classe appropriée du module purejava,

java:./MyApplication/purejava/src/main/com/example/MyClass.java


public class MyClass {
    public MyClass() {
        String jsonString = "{\"a\": 12345, \"b\": 67890}";

        JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();

        System.out.println("un est" + jsonObject.get("a"));
        System.out.println("b est" + jsonObject.get("b"));
    }

    public static void main(String[] args) throws Exception {
        new MyClass();
    }
}

Heureux d'utiliser correctement

a est 12345
b est 67890

Pourquoi

Synchroniser le projet avec les mises à jour Gradle Files **. Iml **.

En regardant .iml, par exemple, si Gson est dans des dépendances, un tel orderEntry est généré.

.iml


<orderEntry type="library" exported="" scope="PROVIDED" name="gson-2.8.2" level="project" />

Ce qui ne va pas ici, c'est scope =" PROVIDED ". En effet, le modifier manuellement en scope =" " peut résoudre la dépendance sans avoir à effectuer la tâche d'idée ci-dessus.

Alors lancez ./gradlew idea. Après cela, si vous regardez .iml, il spécifie le fichier jar Gson avec le chemin complet et la dépendance est résolue.

Conclusion

Je pense qu'il y a un moyen d'implémenter une tâche dans .gradle qui modifie la portée en "", mais je n'ai pas compris alors j'ai abandonné.

Pour le moment, c'est très bien car vous pouvez facilement vous arrêter à un point d'arrêt, comme à l'époque d'Android Studio 2.x.

De côté

Puisque la tâche d'idée est exécutée à chaque fois, l'exécution est retardée d'un tempo. Après tout, il semble que .iml ne sera pas mis à jour à moins que Sync Project with Gradle Files, j'ai donc également créé une version de Run Configuration sans tâche d'idée dans la tâche Run Gradle, et l'utilise généralement et manuellement ./ après Sync Vous voudrez peut-être exécuter gradlew idea pour mettre à jour le fichier .iml. Est-il possible d'exécuter des tâches supplémentaires pendant la synchronisation du projet avec des fichiers Gradle?

Recommended Posts

Je n'ai pas pu résoudre la dépendance de l'application Java après avoir utilisé Android Studio 3, alors comment y faire face Partie 2
Après avoir utilisé Android Studio 3, les dépendances des applications Java ne peuvent plus être résolues, alors que faire à ce sujet
De quoi avez-vous besoin à la fin pour créer une application Web en utilisant Java? Expliquer le mécanisme et ce qui est nécessaire pour apprendre
Que faire à propos de l'erreur "Impossible de lire ou n'est pas un fichier ZIP valide"
[Pour les débutants] On dit que le rubis est rubis, mais qu'en est-il?