Lorsque vous développez une application dans Android Studio et que vous devez séparer une bibliothèque SDK tierce pour la production et le bac à sable J'ai utilisé Flovor pour diviser la construction, et sandbox utilise également le même code de produit, j'ai donc utilisé des liens symboliques pour faire référence au code.
app/build.gradle
android {
(réduction)
Flavors {
product {}
sandbox {}
}
(réduction)
}
app/src
% ln -s product sandbox
% ls
product
sandbox -> product
Si vous faites comme ça, cela fonctionnera normalement sur Android Studio et l'arborescence du projet sera également affichée correctement avec le nom de la saveur.
Alors, après un certain temps, C'était un projet écrit en Java, mais lors de l'ajout de fonctions, j'ai décidé d'écrire une nouvelle partie en Kotlin.
Par conséquent, il est également nécessaire de se référer aux classes Java de Kotlin, Si la saveur est spécifiée comme sandbox, la classe Java de la destination Symbolic Link peut être référencée. Il aurait dû être référencé et complété normalement sur Android Studio ...
error
Unresolved reference: packagehoge
Unresolved reference: classmoge
J'obtiens une erreur comme celle-ci lors de la construction.
Il n'y a aucun problème si la structure du code est uniquement Java ou Kotlin uniquement. Cela semble se produire lorsque vous essayez de référencer une classe Java à partir de Kotlin.
Réglez-le correctement sans porter de côté
app/build.gradle
android {
(réduction)
Flavors {
product {}
sandbox {}
}
(réduction)
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'
}
}
(réduction)
}
En définissant les paramètres ci-dessus, la référence utilisant le lien symbolique a disparu et la construction peut passer en toute sécurité.
Recommended Posts