اتبع أفضل ممارسات التسليم المستمر (CD) مع Flutter لضمان تسليم تطبيقك إلى مختبري النسخة التجريبية واختباره بشكل منتظم دون الحاجة إلى معالجة يدوية.
الخط السريع
يوضح لك هذا البرنامج التعليمي كيفية دمج Fastlane ، مجموعة أدوات مفتوحة المصدر ، في مهام سير عمل الاختبار والتكامل المستمر (CI) الحالية مثل Travis أو Cirrus.
الإعداد المحلي
يوصى بشدة باختبار عملية الإنشاء والنشر محليًا قبل الانتقال إلى السحابة. يمكنك أيضًا تنفيذ النشر المستمر من جهازك المحلي.
- 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. - بالنسبة لنظام التشغيل iOS ، اتبع دليل نشر Fastlane iOS beta . يمكن أن تكون جميع عمليات التحرير بسيطة مثل الإضافة
lane، والتي تستدعيbuild_ios_appمعexport_method: 'app-store'وupload_to_testflight. على نظام iOS ، ستكون هناك حاجة إلى بنية إضافية ، لأنهاflutter buildتخلق.appبدلاً من أرشيفات.ipasللإصدار.
- Android - Fastlane Android.
أنت الآن جاهز للنشر محليًا أو ترحيل النشر الخاص بك إلى نظام تكامل مستمر (CI).
الانتشار محليا
- بناء التطبيق الخاص بك في وضع الإصدار.
-
flutter build appbundle... -
flutter build ios --release --no-codesign... ليست هناك حاجة للتوقيع في الوقت الحالي ، لأن الخط السريع سيقوم بالتوقيع عند الأرشفة.
-
- قم بتشغيل البرنامج النصي Fastfile على كل نظام أساسي.
-
cd android، إذنfastlane [ lane]. -
cd ios، إذنfastlane [ lane].
-
تكوين البناء ونشر السحابة
أولاً ، اتبع التعليمات الواردة في قسم الإعداد المحلي الموضحة في قسم الإعداد المحلي للتأكد من أن العملية تعمل بشكل صحيح قبل الانتقال إلى نظام سحابي مثل Travis.
الشيء الرئيسي الذي يجب ملاحظته هو أنه نظرًا لأن المثيلات السحابية سريعة الزوال وغير موثوقة ، فلا يجب عليك ترك بيانات الاعتماد الخاصة بك ، مثل JSON لحساب خدمة متجر Play أو شهادة توزيع iTunes ، على الخادم. عادةً ما تدعم
أنظمة التكامل المستمر (CI) مثل Cirrus متغيرات البيئة المشفرة لتخزين البيانات الخاصة.
اتخذ جميع الاحتياطات لعدم طباعة قيم هذه المتغيرات إلى وحدة التحكم في البرامج النصية للاختبار. يجب ألا تكون هذه المتغيرات متاحة أيضًا في طلبات السحب حتى يتم دمجها حتى لا يتمكن المهاجمون من إنشاء طلب سحب يسرق هذه الأسرار. كن حذرًا عند التفاعل مع هذه الأسرار في طلبات السحب التي تقبلها وتدمجها.
- اجعل أوراق الاعتماد سريعة الزوال.
- على Android:
- قم بإزالة الحقل
json_key_fileمنAppfileوتخزين محتوى سلسلة JSON في متغير مشفر على نظام CI الخاص بك. استخدام الوسيطةjson_key_dataفيupload_to_play_storeقراءة متغير البيئة مباشرة إلى حسابكFastfile. - (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- قم بإزالة الحقل
- iOS:
-
FASTLANE_PASSWORDCI. - CI . Fastlane Match .
-
- على 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.
, .
-