Ich habe diesen Artikel schon einmal geschrieben. Umgang mit Java-Anwendungsabhängigkeiten, die mit Android Studio 3 nicht gelöst werden können
Die Methode in diesem Artikel war nicht klug, daher habe ich einen guten Weg gefunden, es erneut zu versuchen.
Jedes build.gradle
sieht so aus
./MyApplication/purejava/build.gradle
./MyApplication/app/build.gradle
./MyApplication/build.gradle
Fügen Sie zunächst apply plugin: 'idea'
zum build.gradle des Moduls hinzu, das Sie anwenden möchten.
Dieses Mal wird Gson als Beispiel hinzugefügt. Ansonsten wird es standardmäßig automatisch generiert.
groovy:./MyApplication/purejava/build.gradle
apply plugin: 'java-library'
apply plugin: 'idea' //Dies
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.google.code.gson:gson:2.8.2'
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
Alternativ kann es auf alle Module gleichzeitig angewendet werden, indem es dem root build.gradle hinzugefügt wird.
groovy:./MyApplication/build.gradle
allprojects {
apply plugin: 'idea'
}
Erstellen Sie als Nächstes standardmäßig die Anwendungskonfiguration und fügen Sie die Aufgabe ** Gradle-Aufgabe ausführen ** zu ** Idee ** zu ** Vor dem Start ** hinzu.
Jetzt können Sie von hier aus mit aufgelösten Abhängigkeiten ausführen. Wenn Sie es mit Debug ausführen, können Sie natürlich an einem Haltepunkt anhalten.
Wenn Sie Gson in der entsprechenden Klasse des purejava-Moduls verwenden,
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("a ist" + jsonObject.get("a"));
System.out.println("b ist" + jsonObject.get("b"));
}
public static void main(String[] args) throws Exception {
new MyClass();
}
}
Gerne richtig zu benutzen
a ist 12345
b ist 67890
Projekt mit Gradle Files-Updates synchronisieren **. Iml **.
Wenn Sie beispielsweise .iml betrachten, wenn Gson in Abhängigkeiten ist, wird ein solcher orderEntry generiert.
.iml
<orderEntry type="library" exported="" scope="PROVIDED" name="gson-2.8.2" level="project" />
Was hier falsch ist, ist scope =" PROVIDED "
.
Dies liegt daran, dass durch manuelles Ändern in scope =" "
die Abhängigkeit aufgelöst werden kann, ohne dass die oben genannte Ideenaufgabe ausgeführt werden muss.
Führen Sie also "./gradlew idea" aus. Wenn Sie sich danach .iml ansehen, wird das Gson-JAR mit dem vollständigen Pfad angegeben, und die Abhängigkeit wird aufgelöst.
Ich denke, es gibt eine Möglichkeit, eine Aufgabe in .gradle zu implementieren, die den Bereich auf "" ändert, aber ich habe es nicht verstanden, also habe ich aufgegeben.
Im Moment ist es sehr gut, weil es ausgeführt werden kann, so dass es leicht an einem Haltepunkt gestoppt werden kann, wie es in der Android Studio 2.x-Ära war.
Da die Ideenaufgabe jedes Mal ausgeführt wird, wird die Ausführung um ein Tempo verzögert.
Schließlich scheint es, dass .iml nur aktualisiert wird, wenn das Projekt mit Gradle-Dateien synchronisiert wird. Daher habe ich auch eine Version der Task "Konfiguration ohne Idee ausführen" in der Task "Gradle ausführen" erstellt und verwende diese normalerweise und manuell ./ nach der Synchronisierung Möglicherweise möchten Sie gradlew idea
ausführen, um die .iml zu aktualisieren.
Ist es möglich, zusätzliche Aufgaben während der Synchronisierung des Projekts mit Gradle-Dateien auszuführen?
Recommended Posts