Siga las mejores prácticas de entrega continua (CD) con Flutter para asegurarse de que su aplicación se entregue a sus probadores beta y se pruebe de forma regular sin la necesidad de manipulación manual.
carril rápido
Este tutorial le muestra cómo integrar Fastlane (un conjunto de herramientas de código abierto) en flujos de trabajo de prueba e integración continua (CI) existentes, como Travis o Cirrus.
Configuración local Se
recomienda encarecidamente probar el proceso de compilación e implementación localmente antes de pasar a la nube. También puede implementar la implementación continua desde su máquina local.
- Instale Fastlane:
gem install fastlane
obrew install fastlane
. Para obtener información más detallada, visite la documentación de Fastlane . - Cree un proyecto de Flutter y cuando esté listo, asegúrese de que su proyecto se desarrolle con
-
flutter build appbundle
; y -
flutter build ios --release --no-codesign
...
-
- Inicialice proyectos Fastlane para cada plataforma.
-
fastlane init
[project]/android
. -
fastlane init
[project]/ios
.
-
- ,
Appfile
.
- ,
package_name
[project]/android/fastlane/Appfile
AndroidManifest.xml
. - ,
[project]/ios/fastlane/Appfile
Info.plist
.apple_id
,itc_team_id
,team_id
.
- ,
- .
- Supply ,
fastlane supply init
Play Store . .json - . - ITunes Connect
Appfile
apple_id
.FASTLANE_PASSWORD
iTunes 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
.
- Para Android, siga la guía de implementación beta de Fastlane Android . Toda la edición puede ser solo una adición
lane
que llamaupload_to_play_store
. Establezca el argumentoaab
en../build/app/outputs/bundle/release/app-release.aab
para utilizar un paquete queflutter build
ya se ha preparado. - Para iOS, siga la guía de implementación beta de Fastlane iOS . Toda la edición puede ser tan simple como agregar
lane
, que llamabuild_ios_app
conexport_method: 'app-store'
yupload_to_testflight
. En iOS, se requerirá una compilación adicional, ya que seflutter build
compila en.app
lugar de archivar.ipas
para su lanzamiento.
- Para Android, siga la guía de implementación beta de Fastlane Android . Toda la edición puede ser solo una adición
Ahora está listo para implementar localmente o migrar su implementación a un sistema de integración continua (CI).
Implementar localmente
- release.
-
flutter build appbundle
. -
flutter build ios --release --no-codesign
. , fastlane .
-
- Fastfile .
-
cd android
,fastlane [ lane]
. -
cd ios
,fastlane [ lane]
.
-
Primero, siga las instrucciones en la sección de configuración local descrita en la sección de Configuración local para asegurarse de que el proceso esté funcionando correctamente antes de pasar a un sistema en la nube como Travis.
Lo principal a tener en cuenta es que, dado que las instancias en la nube son efímeras y poco confiables, no debe dejar sus credenciales, como el JSON de la cuenta de servicio de Play Store o el certificado de distribución de iTunes, en el servidor.
Los sistemas de integración continua (CI) como Cirrus suelen admitir variables de entorno cifradas para almacenar datos privados.
Tome todas las precauciones para no imprimir los valores de estas variables en la consola en sus scripts de prueba. Estas variables tampoco deberían estar disponibles en las solicitudes de extracción hasta que se combinen para que los atacantes no puedan crear una solicitud de extracción que robe estos secretos. Tenga cuidado al interactuar con estos secretos en solicitudes de extracción que acepta y combina.
- Haga que las credenciales sean efímeras.
- En Android:
- Eliminar el campo
json_key_file
deAppfile
y almacenar los contenidos de la cadena JSON en una variable de cifrado en el sistema CI. Utilice el argumentojson_key_data
enupload_to_play_store
para leer la variable de entorno directamente en suFastfile
. - (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- Eliminar el campo
- iOS:
-
FASTLANE_PASSWORD
CI. - CI . Fastlane Match .
-
- En Android:
- Gemfile
gem install fastlane
CI, fastlane . .
-
[project]/android
[project]/ios
Gemfile, : -
source "https://rubygems.org" gem "fastlane"
-
bundle update
Gemfile.
Gemfile.lock
. -
bundle exec fastlane
fastlane
.
-
- 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 appbundle
flutter build ios --release --no-codesign
, . cd android
cd ios
bundle exec fastlane [ lane]
. Cirrus Flutter.
, .
-