diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 7e656030..a01200d9 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -19,7 +19,6 @@ end keychain_password = ENV[‘JENKINS_KEYCHAIN_PASSWORD’] unlock_keychain(path: ‘login.keychain’, password: keychain_password) if is_ci? && keychain_password -appcenter_app_name = '' ##################### ### CONFIGURATION ### @@ -93,7 +92,7 @@ lane :alpha_android do prepareBuild buildAppAndroid(flavor: 'alpha') - uploadToAppcenterAndroid(flavor: 'alpha') # Deploy the apk to AppCenter. + uploadToFirebase(app: "{appId}", android_path: "build/app/outputs/apk/alpha/release/app-alpha-release.apk") git_reset end @@ -102,8 +101,7 @@ lane :beta_android do installFvmVersion prepareBuild - buildAppAndroid(flavor: 'beta') - uploadToAppcenterAndroid(flavor: 'beta') # Deploy the apk to AppCenter. + uploadToFirebase(app: "{appId}", android_path: "build/app/outputs/apk/beta/release/app-beta-release.apk") git_reset end @@ -153,12 +151,12 @@ end private_lane :alpha_ios_build do buildAppIOSOnly(flavor: 'alpha') - uploadToAppcenterIos(flavor: 'alpha') # Deploy the ipa to AppCenter. + uploadToFirebase(app: "{appId}") end private_lane :beta_ios_build do buildAppIOSOnly(flavor: 'beta') - uploadToAppcenterIos(flavor: 'beta') # Deploy the ipa to AppCenter. + uploadToFirebase(app: "{appid}") end private_lane :prod_ios_build do @@ -208,8 +206,7 @@ end private_lane :buildAppIOSOnly do |options| Dir.chdir ".." do podRepoUpdate - sh("fvm", "flutter", "build", "ios", "--release", "--flavor", options[:flavor], "-t" "lib/main_#{options[:flavor]}.dart", "--no-codesign", "--obfuscate", "--split-debug-info=./build/debug-info/#{options[:flavor]}", "--build-number=#{BUILD_NR}") # Build the application - convertAppToIpa(flavor: options[:flavor]) + sh("fvm", "flutter", "build", "ipa", "--release", "--flavor", options[:flavor], "-t" "lib/main_#{options[:flavor]}.dart", "--no-codesign", "--obfuscate", "--split-debug-info=./build/debug-info/#{options[:flavor]}", "--build-number=#{BUILD_NR}", "--export-options-plist ios/Runner/ExportOptions.plist") # Build the application end Dir.chdir "../build" do zip( @@ -246,25 +243,15 @@ private_lane :convertAppToIpa do |options| end end -private_lane :uploadToAppcenterAndroid do |options| - getAppNameAndroid(flavor: options[:flavor]) - appcenter_upload( - app_name: appcenter_app_name, - apk: "./build/app/outputs/apk/#{options[:flavor]}/release/app-#{options[:flavor]}-release.apk", - notify_testers: true, - destinations: "*" +private_lane :uploadToFirebase do |options| + firebase_app_distribution( + android_artifact_type: "APK", + android_artifact_path: options[:android_path], + app: options[:app], + testers_file: "fastlane/firebase_distribution/testers.txt", + release_notes_file: "fastlane/firebase_distribution/release-notes.txt", + service_credentials_file: "fastlane/firebase_distribution/credentials.json" ) - uploadAndroidSymbols(flavor: options[:flavor]) -end - -private_lane :uploadToAppcenterIos do |options| - getAppNameIOS(flavor: options[:flavor]) - appcenter_upload( - app_name: appcenter_app_name, - notify_testers: true, - destinations: "*" - ) - uploadIOSSymbols(flavor: options[:flavor]) end private_lane :add_tag do @@ -275,29 +262,6 @@ private_lane :git_reset do sh("git", "reset", "--hard") end -private_lane :getAppNameAndroid do |options| - flavor = options[:flavor] - if flavor == "alpha" && - appcenter_app_name = "FlutterTemplate-Android-Alpha" - elsif flavor == "beta" - appcenter_app_name = "FlutterTemplate-Android-Beta" - elsif flavor == "prod" - appcenter_app_name = "FlutterTemplate-Android" - end -end - - -private_lane :getAppNameIOS do |options| - flavor = options[:flavor] - if flavor == "alpha" && - appcenter_app_name = "FlutterTemplate-iOS-Alpha" - elsif flavor == "beta" - appcenter_app_name = "FlutterTemplate-iOS-Beta" - elsif flavor == "prod" - appcenter_app_name = "FlutterTemplate-iOS" - end -end - private_lane :buildAndDeployToAppStore do |options| buildIosAppStore options deployToAppStore options diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile index 343fec8b..2fa87b04 100644 --- a/fastlane/Pluginfile +++ b/fastlane/Pluginfile @@ -3,4 +3,4 @@ # Ensure this file is checked in to source control! gem 'fastlane-plugin-install_provisioning_profiles' -gem 'fastlane-plugin-appcenter' +gem 'fastlane-plugin-firebase_app_distribution' diff --git a/fastlane/firebase_distribution/credentials.json b/fastlane/firebase_distribution/credentials.json new file mode 100644 index 00000000..888f3425 --- /dev/null +++ b/fastlane/firebase_distribution/credentials.json @@ -0,0 +1,13 @@ +{ + "type": "", + "project_id": "", + "private_key_id": "", + "private_key": "", + "client_email": "", + "client_id": "", + "auth_uri": "", + "token_uri": "", + "auth_provider_x509_cert_url": "", + "client_x509_cert_url": "", + "universe_domain": "" +} diff --git a/fastlane/firebase_distribution/release-notes.txt b/fastlane/firebase_distribution/release-notes.txt new file mode 100644 index 00000000..e69de29b diff --git a/fastlane/firebase_distribution/testers.txt b/fastlane/firebase_distribution/testers.txt new file mode 100644 index 00000000..e69de29b diff --git a/ios/Runner/ExportOptions.plist b/ios/Runner/ExportOptions.plist new file mode 100644 index 00000000..6e0487fe --- /dev/null +++ b/ios/Runner/ExportOptions.plist @@ -0,0 +1,41 @@ + + + + + method + ad-hoc + + signingStyle + manual + + provisioningProfiles + + com.icapps.fluttertemplate.dev + Flutter Template Debug + + com.icapps.fluttertemplate.alpha + Flutter Template Alpha + + com.icapps.fluttertemplate.beta + Flutter Template Beta + + com.icapps.fluttertemplate + Flutter Template Production + + + teamID + 8H93T6Y7F7 + + stripSwiftSymbols + + + compileBitcode + + + destination + export + + thinning + <none> + + \ No newline at end of file diff --git a/tool/setup/dart/rename_project.dart b/tool/setup/dart/rename_project.dart index e94c0317..fed62108 100644 --- a/tool/setup/dart/rename_project.dart +++ b/tool/setup/dart/rename_project.dart @@ -202,6 +202,7 @@ void _renameiOSBundleIdentifier(String iosBundleIdentifier) { void _renameAppName(String appName) { Logger.info('Replace the app name ...'); _replaceInFile('fastlane/Fastfile', originalAppName, appName); + _replaceInFile('ios/Runner/ExportOptions.plist', originalAppName, appName); Directory('ios/Configuration').listSync(recursive: true).where((element) { if (element.path.endsWith('.png')) return false; if (element.path.contains('.DS_Store')) return false;