generieren Ich arbeite an einem Android-Projekt, wo es eine Reihe von Ressourcen wie SRC, Res, Assets, etc. Jetzt gibt es eine Anforderung, die ich generieren muss mehrere APKs, die diese Ressourcen verwenden. Und ich muss ein bisschen für jede Quelldatei für jede apk ändern. Zum Beispiel um apk zu bauen. in der ursprünglichen AndroidManifest.xml gibt es ein Paketnamenfeld "com.hello.app", ich muss es zu "com.hello.app.one" ersetzen. Und im ursprünglichen Java-Code wie "HelloApp.java" gibt es so etwas wie "com.hello.app", ich muss es umbenennen als "HelloAppOne.java" und "com.hello.app" durch "com.hello.app" ersetzen .ein". Ähnliches passiert für apk twoWie man mehrere Android-apk mit mehreren Satz von Quellcodes mit Gradle
Die Lösung, die ich finde, besteht darin, zuerst alle Originalcodes und Manifest.xml an einen Platz für jede APK zu kopieren, wobei Gradle Kopieraufgabe verwendet wird. Benenne und ersetze dann den Dateinamen und die Token. Dieser Teil funktioniert.
Aber als nächstes, wenn ich versuche, die apks mit verschiedenen Code-Sets, die ich erstellt habe, zu bauen, stellt sich heraus, etwas stimmte nicht.
Hier ist das Grapple-Skript, das ich herauskomme.
android{
productFlavors {
One{
def appFolders = 'build/cache/AppOne';
applicationId = 'com.hello.app.one'
sourceSets{
main{
manifest.srcFile appFolders + File.separator + 'AndroidManifest.xml'
java.srcDirs = [appFolders+'/src']
res.srcDirs = [appFolders+'/res']
assets.srcDirs = [appFolders+'/assets']
}
}
}
Two{
def appFolders = 'build/cache/AppTwo';
applicationId = 'com.hello.app.two'
sourceSets{
main{
manifest.srcFile appFolders + File.separator + 'AndroidManifest.xml'
java.srcDirs = [appFolders+'/src']
res.srcDirs = [appFolders+'/res']
assets.srcDirs = [appFolders+'/assets']
}
}
}
}
}
Die Verzeichnisstruktur ist wie
build.gradle
AndroidManifest.xml
src/
com.hello.app/
res/
assets/
build/cache/
AppOne/
src/
codes for apk one
res/
assets/
AndroidManifest.xml (modified for apk one)
AppTwo/
src/
codes for apk two
res/
assets/
AndroidManifest.xml (modified for apk two)
Die Dateien in Ordnern AppOne und AppTwo von Gradle Kopieraufgabe erzeugt werden.
Wenn ich baue, kann ich APKs für jedes Produkt Geschmack bekommen. Wenn ich apk one und apk two auf einem Gerät installiere, stelle ich fest, dass diese beiden genau gleich sind. APK One hat genau den gleichen Namen, Provider mit APK zwei.
Kann mir jemand helfen? Was ist falsch in meinen Skripten? oder Gibt es einen anderen Weg, meine Anforderungen zu erfüllen? Vielen Dank!
Nein, funktioniert immer noch nicht –