Wenn Sie eine App in Android Studio entwickeln und eine SDK-Bibliothek eines Drittanbieters für Produktion und Sandbox trennen müssen Ich habe Flovor verwendet, um den Build zu teilen, und Sandbox verwendet auch denselben Produktcode, sodass ich symbolische Links verwendet habe, um auf den Code zu verweisen.
app/build.gradle
android {
(Kürzung)
Flavors {
product {}
sandbox {}
}
(Kürzung)
}
app/src
% ln -s product sandbox
% ls
product
sandbox -> product
Wenn Sie dies mögen, funktioniert es normal unter Android Studio, und der Projektbaum wird auch ordnungsgemäß mit dem Geschmacksnamen angezeigt.
Also, nach einer Weile, Es war ein in Java geschriebenes Projekt, aber beim Hinzufügen von Funktionen habe ich beschlossen, einen neuen Teil in Kotlin zu schreiben.
Daher ist es auch notwendig, auf Java-Klassen von Kotlin zu verweisen, Wenn die Variante als Sandbox angegeben ist, kann auf die Java-Klasse des Symbolic Link-Ziels verwiesen werden. Es sollte normalerweise in Android Studio referenziert und ergänzt worden sein ...
error
Unresolved reference: packagehoge
Unresolved reference: classmoge
Ich bekomme einen solchen Fehler beim Bauen.
Es gibt kein Problem, wenn die Codestruktur nur Java oder nur Kotlin ist. Es scheint aufzutreten, wenn versucht wird, eine Java-Klasse aus Kotlin zu referenzieren.
Lassen Sie es uns richtig einstellen, ohne es seitlich zu tragen
app/build.gradle
android {
(Kürzung)
Flavors {
product {}
sandbox {}
}
(Kürzung)
sourceSets {
sandbox {
sandbox.manifest.srcFile 'src/product/AndroidManifest.xml'
sandbox.assets.srcDirs += 'src/product/assets'
sandbox.java.srcDirs += 'src/product/java'
sandbox.res.srcDirs += 'src/product/res'
}
}
(Kürzung)
}
Durch Vornehmen der obigen Einstellungen ist die Referenz mit Symbolic Link verschwunden und der Build kann sicher übergeben werden.