diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..e4d37e1 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,87 @@ +name: CI + +on: + push: + branches: + - "*" + - "!gh-pages" + tags: + - "*" + pull_request: + branches: + - "*" + - "!gh-pages" + +jobs: + test-xamarin: + runs-on: macos-12 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v3 + with: + global-json-file: ./global.json + - working-directory: ./XamarinFormSample + run: dotnet format --verify-no-changes + test-flutter: + runs-on: macos-12 + steps: + - uses: actions/checkout@v3 + - uses: subosito/flutter-action@v2 + with: + flutter-version: '3.10.0' + channel: 'stable' + - working-directory: flutter-example + run: | + flutter pub get + flutter test + flutter analyze --no-fatal-infos + dart format --set-exit-if-changed lib + xamarin_android: + runs-on: macos-12 + needs: ["test-xamarin"] + if: ${{ github.ref == 'refs/heads/main' }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v3 + with: + global-json-file: ./global.json + - uses: actions/setup-node@v3 + with: + node-version: "18.x" + - name: Set Xamarin SDK versions + run: | + # https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md + $VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.12 --ios=16.2 --android=13.2 + - name: nuget restore + run: | + nuget restore ./XamarinFormSample/XamarinFormSample/XamarinFormSample.csproj + nuget restore ./XamarinFormSample/XamarinFormSample.Android/XamarinFormSample.Android.csproj + - name: Set versionCode + run: | + VERSION_CODE=$(date +%s) + sed -I "" -E 's/android:versionCode="[[:digit:]]+"/android:versionCode="'"$VERSION_CODE"'"/' XamarinFormSample/XamarinFormSample.Android/Properties/AndroidManifest.xml + - name: msbuild + run: msbuild ./XamarinFormSample/XamarinFormSample.Android/XamarinFormSample.Android.csproj /p:Configuration=Release /t:PackageForAndroid + - name: Run zipalign + run: | + BUILD_TOOLS_VERSION="35.0.0" + ls "$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION" + "$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION/zipalign" -p -f -v 4 ./XamarinFormSample/XamarinFormSample.Android/bin/Release/com.authgear.sdk.migratepluginexampleapp.xamarinflutter.apk "$RUNNER_TEMP/app-aligned.apk" + - name: Run apksigner + env: + ANDROID_KEYSTORE_PASSWORD: Abcd1234! + ANDROID_KEY_ALIAS: main + ANDROID_KEY_PASSWORD: Abcd1234! + run: | + BUILD_TOOLS_VERSION="35.0.0" + "$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION/apksigner" sign \ + --ks keystore-main.jks \ + --ks-key-alias "$ANDROID_KEY_ALIAS" \ + --ks-pass "pass:$ANDROID_KEYSTORE_PASSWORD" \ + --key-pass "pass:$ANDROID_KEY_PASSWORD" \ + --out "$RUNNER_TEMP/app-signed.apk" \ + "$RUNNER_TEMP/app-aligned.apk" + - name: Distribute to App Center + env: + APPCENTER_ACCESS_TOKEN: ${{ secrets.ANDROID_APPCENTER_ACCESS_TOKEN }} + run: appcenter distribute release --debug --silent --file "$RUNNER_TEMP/app-signed.apk" --group "Collaborators" --app "Oursky/Authgear-Migrate-Tool-Xamarin-To-Flutter-Sample" --release-notes "no release notes" diff --git a/XamarinFormSample/Sample.Shared/MainViewModel.cs b/XamarinFormSample/Sample.Shared/MainViewModel.cs index 597e934..7e69445 100644 --- a/XamarinFormSample/Sample.Shared/MainViewModel.cs +++ b/XamarinFormSample/Sample.Shared/MainViewModel.cs @@ -19,7 +19,7 @@ public class MainViewModel : INotifyPropertyChanged public delegate void ErrorRaisedHandler(object sender, Exception e); private AuthgearSdk authgear; private readonly IAuthgearFactory authgearFactory; - public readonly string RedirectUri = "com.authgear.migrate.tool.xamarin.flutter.sample://host/path"; + public readonly string RedirectUri = "com.authgear.sdk.migratepluginexampleapp.xamarinflutter://host/path"; public string ClientId { get; set; } = Preferences.Get("authgear.clientID", Config.AuthgearClientId); public string AuthgearEndpoint { get; set; } = diff --git a/XamarinFormSample/XamarinFormSample.Android/Properties/AndroidManifest.xml b/XamarinFormSample/XamarinFormSample.Android/Properties/AndroidManifest.xml index 2333639..60d84bb 100644 --- a/XamarinFormSample/XamarinFormSample.Android/Properties/AndroidManifest.xml +++ b/XamarinFormSample/XamarinFormSample.Android/Properties/AndroidManifest.xml @@ -1,5 +1,5 @@  - + diff --git a/XamarinFormSample/XamarinFormSample.Android/WebAuthenticationCallbackActivity.cs b/XamarinFormSample/XamarinFormSample.Android/WebAuthenticationCallbackActivity.cs index b7bb330..ec0ccf4 100644 --- a/XamarinFormSample/XamarinFormSample.Android/WebAuthenticationCallbackActivity.cs +++ b/XamarinFormSample/XamarinFormSample.Android/WebAuthenticationCallbackActivity.cs @@ -12,7 +12,7 @@ namespace XamarinFormSample.Droid [Activity(NoHistory = true, LaunchMode = LaunchMode.SingleTop, Exported = true)] [IntentFilter(new[] { Android.Content.Intent.ActionView }, Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable }, - DataScheme = "com.authgear.migrate.tool.xamarin.flutter.sample")] + DataScheme = "com.authgear.sdk.migratepluginexampleapp.xamarinflutter")] public class WebAuthenticationCallbackActivity : Xamarin.Essentials.WebAuthenticatorCallbackActivity { } diff --git a/XamarinFormSample/XamarinFormSample.Android/XamarinFormSample.Android.csproj.user b/XamarinFormSample/XamarinFormSample.Android/XamarinFormSample.Android.csproj.user index b512129..18c082a 100644 --- a/XamarinFormSample/XamarinFormSample.Android/XamarinFormSample.Android.csproj.user +++ b/XamarinFormSample/XamarinFormSample.Android/XamarinFormSample.Android.csproj.user @@ -1,9 +1,9 @@  - Google Pixel 7a - PhysicalDevice - Google Pixel 7a %28Android 14.0 - API 34%29 + Windows Subsystem for Android + Emulator + Windows Subsystem for Android %28Android 13.0 - API 33%29 Windows Subsystem for Android \ No newline at end of file diff --git a/XamarinFormSample/XamarinFormSample.iOS/Entitlements.plist b/XamarinFormSample/XamarinFormSample.iOS/Entitlements.plist index 06eb299..3587df0 100644 --- a/XamarinFormSample/XamarinFormSample.iOS/Entitlements.plist +++ b/XamarinFormSample/XamarinFormSample.iOS/Entitlements.plist @@ -4,7 +4,7 @@ keychain-access-groups - com.authgear.migrate.tool.xamarin.flutter.sample + com.authgear.sdk.migratepluginexampleapp.xamarinflutter diff --git a/XamarinFormSample/XamarinFormSample.iOS/Info.plist b/XamarinFormSample/XamarinFormSample.iOS/Info.plist index 0db4c71..ddc7134 100644 --- a/XamarinFormSample/XamarinFormSample.iOS/Info.plist +++ b/XamarinFormSample/XamarinFormSample.iOS/Info.plist @@ -14,10 +14,10 @@ CFBundleTypeRole Editor CFBundleURLName - com.authgear.migrate.tool.xamarin.flutter.sample://host/path + com.authgear.sdk.migratepluginexampleapp.xamarinflutter://host/path CFBundleURLSchemes - com.authgear.migrate.tool.xamarin.flutter.sample + com.authgear.sdk.migratepluginexampleapp.xamarinflutter diff --git a/flutter-example/android/app/build.gradle b/flutter-example/android/app/build.gradle index a7b61d5..3388ae2 100644 --- a/flutter-example/android/app/build.gradle +++ b/flutter-example/android/app/build.gradle @@ -43,7 +43,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.authgear.migrate.tool.xamarin.flutter.sample" + applicationId "com.authgear.sdk.migratepluginexampleapp.xamarinflutter" // minSdkVersion flutter.minSdkVersion // 21 is required to use androidx.security minSdkVersion 21 diff --git a/flutter-example/lib/main.dart b/flutter-example/lib/main.dart index 8a48f2c..2b17b14 100644 --- a/flutter-example/lib/main.dart +++ b/flutter-example/lib/main.dart @@ -1,13 +1,15 @@ import 'dart:async' show StreamSubscription; import 'dart:io'; import 'dart:convert'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' hide ColorScheme; import 'package:flutter/services.dart'; import 'package:shared_preferences/shared_preferences.dart' show SharedPreferences; import 'package:flutter_authgear/flutter_authgear.dart'; -const authgearEndpoint = "https://migrate-tool-xamarin-flutter.authgear-staging.com"; +const authgearEndpoint = + "https://migrate-tool-xamarin-flutter.authgear-staging.com"; const authgearClientID = "9f01ea8c46d4bc22"; const redirectURI = "com.authgear.exampleapp.flutter://host/path"; var wechatRedirectURI = ""; @@ -288,8 +290,10 @@ class _MyAppState extends State { void init() async { _sharedPreferences = await SharedPreferences.getInstance(); - final endpoint = _sharedPreferences.getString("authgear.endpoint") ?? authgearEndpoint; - final clientID = _sharedPreferences.getString("authgear.clientID") ?? authgearClientID; + final endpoint = + _sharedPreferences.getString("authgear.endpoint") ?? authgearEndpoint; + final clientID = + _sharedPreferences.getString("authgear.clientID") ?? authgearClientID; _endpointController.text = endpoint; _clientIDController.text = clientID; } @@ -1089,7 +1093,9 @@ class _MyAppState extends State { }); await _authgear.wechatAuthCallback(state: state, code: code); } on PlatformException catch (e) { - print("exception: $e"); + if (kDebugMode) { + print("exception: $e"); + } } } diff --git a/global.json b/global.json new file mode 100644 index 0000000..5f04948 --- /dev/null +++ b/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "6.0.408", + "rollForward": "latestPatch" + } +}