Befolgen Sie mit Flutter die Best Practices für die kontinuierliche Bereitstellung (CD), um sicherzustellen, dass Ihre Anwendung an Ihre Betatester geliefert und regelmäßig getestet wird, ohne dass manuelle Manipulationen erforderlich sind.
Überholspur
Dieses Tutorial zeigt Ihnen, wie Sie Fastlane (ein Open Source-Toolkit) in vorhandene Test- und Continuous Integration (CI) -Workflows wie Travis oder Cirrus integrieren.
Lokale Einrichtung Es wird
dringend empfohlen, den Erstellungs- und Bereitstellungsprozess lokal zu testen, bevor Sie in die Cloud wechseln. Sie können die kontinuierliche Bereitstellung auch von Ihrem lokalen Computer aus implementieren.
- fastlane:
gem install fastlanebrew install fastlane. Fastlane. - Flutter , , ,
-
flutter build appbundle; -
flutter build ios --release --no-codesign.
-
- Fastlane .
-
fastlane init[project]/android. -
fastlane init[project]/ios.
-
- ,
Appfile.
- ,
package_name[project]/android/fastlane/AppfileAndroidManifest.xml. - ,
[project]/ios/fastlane/AppfileInfo.plist.apple_id,itc_team_id,team_id.
- ,
- .
- Supply ,
fastlane supply initPlay Store . .json - . - ITunes Connect
Appfileapple_id.FASTLANE_PASSWORDiTunes Connect. iTunes/TestFlight.
- Supply ,
- .
- Android : . .apk, « ». « » .aab/.apk, Play Store, Play Store.
- , . . Play Store.
- .
- gradle release,
android.buildTypes.release[project]/android/app/build.gradle.
- iOS, TestFlight App Store, , .
- Apple Developer Account.
-
[project]/ios/Runner.xcworkspace/.
- Android : . .apk, « ». « » .aab/.apk, Play Store, Play Store.
-
Fastfile.
- Android - Fastlane Android.
lane,upload_to_play_store.aab../build/app/outputs/bundle/release/app-release.aab, ,flutter build. - Befolgen Sie für iOS die Beta-Bereitstellungsanleitung für Fastlane iOS . Alle Bearbeitungen können so einfach wie das Hinzufügen sein
lane, dasbuild_ios_appmitexport_method: 'app-store'und aufruftupload_to_testflight. Unter iOS ist ein zusätzlicher Build erforderlich, da erflutter builderstellt.appund keine Archive.ipaszur Veröffentlichung erstellt.
- Android - Fastlane Android.
Sie können jetzt lokal bereitstellen oder Ihre Bereitstellung auf ein CI-System (Continuous Integration) migrieren.
Lokale Bereitstellung
- Erstellen Sie Ihre Anwendung im Release-Modus.
-
flutter build appbundle... -
flutter build ios --release --no-codesign... Es ist vorerst nicht erforderlich, zu signieren, da Fastlane die Signatur bei der Archivierung übernimmt.
-
- Führen Sie das Fastfile-Skript auf jeder Plattform aus.
-
cd androiddannfastlane [ lane]. -
cd iosdannfastlane [ lane].
-
Konfigurieren der Build- und Cloud-Bereitstellung
Befolgen Sie zunächst die Anweisungen im Abschnitt "Lokale Einrichtung", die im Abschnitt "Lokale Einrichtung" beschrieben sind, um sicherzustellen, dass der Prozess ordnungsgemäß funktioniert, bevor Sie zu einem Cloud-System wie Travis wechseln.
Der wichtigste Punkt, den Sie beachten sollten, ist, dass Sie Ihre Anmeldeinformationen, wie z. B. den JSON des Play Store-Dienstkontos oder das iTunes-Verteilungszertifikat, nicht auf dem Server belassen sollten, da Cloud-Instanzen kurzlebig und unzuverlässig sind.
Continuous Integration (CI) -Systeme wie Cirrus unterstützen normalerweise verschlüsselte Umgebungsvariablen zum Speichern privater Daten.
Treffen Sie alle Vorkehrungen, um die Werte dieser Variablen nicht in Ihren Testskripten auf die Konsole zu drucken. Diese Variablen sollten auch in Pull-Anforderungen erst verfügbar sein, wenn sie zusammengeführt wurden, damit Angreifer keine Pull-Anforderung erstellen können, die diese Geheimnisse stiehlt. Seien Sie vorsichtig, wenn Sie mit diesen Geheimnissen in Pull-Anforderungen interagieren, die Sie akzeptieren und zusammenführen.
- Machen Sie Anmeldeinformationen kurzlebig.
- Auf Android:
- Entfernen Sie das Feld
json_key_fileausAppfileund speichern Sie den Inhalt der JSON-Zeichenfolge in einer verschlüsselten Variablen in Ihrem CI-System. Verwenden Sie das Argumentjson_key_datainupload_to_play_store, um die Umgebungsvariable direkt in Ihre zu lesenFastfile. - (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- Entfernen Sie das Feld
- iOS:
-
FASTLANE_PASSWORDCI. - CI . Fastlane Match .
-
- Auf Android:
- Gemfile
gem install fastlaneCI, fastlane . .
-
[project]/android[project]/iosGemfile, : -
source "https://rubygems.org" gem "fastlane" -
bundle updateGemfile.Gemfile.lock. -
bundle exec fastlanefastlane.
-
- CI,
.travis.yml.cirrus.yml, .
- Linux macOS.
- Xcode macOS (, o
sx_image: xcode9.2). - . Fastlane CI CI.
- , , , :
- Bundler
gem install bundler. - Android , Android SDK
ANDROID_SDK_ROOT. -
bundle install[project]/android[project]/ios. - , Flutter SDK
PATH.
- Bundler
- CI:
-
flutter build appbundleflutter build ios --release --no-codesign, . cd androidcd iosbundle exec fastlane [ lane]
. Cirrus Flutter.
, .
-