it-swarm.com.de

Android Studio: Erstellen eines zweiten Debug-Build-Typs

Ich möchte einen zweiten Build-Typ erstellen, der genauso wie der bereits vorhandene Debug-Typ funktionieren sollte. Derzeit habe ich zwei Build-Typen: Debug und Release. Das Debug-Programm kann mit einem einzigen Klick ausgeführt werden und wird automatisch mit dem Debug-Keystore signiert. Ich kompiliere den Release-Build manuell mit dem Build -> Generate signed APK-Assistenten.

Um den Debug-Build-Typ zu klonen, fügte ich der app build.graddle-Datei zunächst einen zweiten Build-Typ mit dem Namen "local" hinzu:

buildTypes {
    ...
    debug {
        debuggable true
        minifyEnabled false
    }
    local {
        debuggable true
        minifyEnabled false
    }
}

Dann habe ich app/src/local/res erstellt und einige Dateien hinzugefügt.

Dann mache ich eine gradle resync und wähle den neuen Build-Typ auf der linken Registerkarte:  build type tab

Schließlich klicke ich auf die Schaltfläche "Ausführen" und erwartete, dass es einfach funktioniert. Dieser IntelliJ-Hilfeartikel besagt, dass die Debug-Signing-Konfiguration der Standard ist:

Dies bedeutet, wenn Sie ein Artefakt nicht manuell konfigurieren und Die Option Standard-APK bereitstellen im Dialogfeld Konfiguration ausführen/Debuggen auswählen: Dialogfeld Android-Anwendung, IntelliJ IDEA verwendet die vordefinierten Werte im Zertifikat für die generierten

Stattdessen wird dieser Dialog angezeigt:

 run dialog

Wenn ich auf die Fix-Schaltfläche klicke, wird das Dialogfeld zum Signieren der Konfiguration für das gesamte App-Modul geöffnet. Ich möchte dieses apk jedoch nicht zur Veröffentlichung unterschreiben, ich muss es mit dem Debug-Zertifikat unterschreiben. Mir ist auch aufgefallen, dass eine neue assembleLocal gradle-Aufgabe erstellt wurde, die aber eine nicht ausgerichtete Apk erzeugt. In diesem Ordner kann ich sehen, dass die regulären Debug-Apks in ihrer nicht ausgerichteten und endgültigen Version korrekt generiert werden.

Wie kann ich nur den Debug Build-Typ klonen?

17
Mister Smith

In der build.gradle-Datei können Sie angeben, welche signingConfig mit der buildType verwendet werden soll.

Verwenden Sie zum Signieren mit derselben signingConfig wie für das Standarddebugging buildType Folgendes:

buildTypes {
    local {
        signingConfig signingConfigs.debug
    }

    /* NOTE: the debug block is not required because it is a default
     * buildType configuration; all of its settings are defined implicitly
     * by Android Studio behind the scenes.
     */
}

Wenn Sie einen benutzerdefinierten Keystore in Ihrem lokalen System verwenden möchten, verwenden Sie stattdessen Folgendes:

signingConfigs {
    local {
        storeFile file("/path/to/custom.keystore")
        storePassword "password"
        keyAlias "MyLocalKey"
        keyPassword "password"
    }
}

buildTypes {
    local {
        signingConfig signingConfigs.local
    }
}
25

Sie können auch Ihren Build-Typ ähnlich dem Debugging erstellen:

initWith(buildTypes.debug)

Hier ist ein Beispiel:

...
buildTypes {

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://theidasworld.com"'
    }
    debug {
        versionName 'APP BETA'
        buildConfigField "Integer", "PIN", "0000"  
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://debug.theidasworld.com"'
    }
    inspection {
        initWith(buildTypes.debug) // keep versionName and PIN from 'debug'
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://inspection.theidasworld.com"'
    }
}
...
24
ivan.panasiuk

Ein anderer Weg könnte Aromen verwenden.

Beispiel:

producFlavors{

app1{}

app2{}

}
1
Azrael94