diff --git a/appveyor.yml b/appveyor.yml index ee0bd1c37..0710f00ce 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -98,6 +98,7 @@ build_script: if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } .\src\Android\ci-build-apks.ps1 if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } + Push-AppveyorArtifact .\com.x8bit.bitwarden.aab Push-AppveyorArtifact .\com.x8bit.bitwarden.apk Push-AppveyorArtifact .\com.x8bit.bitwarden-fdroid.apk } @@ -114,7 +115,7 @@ on_success: cd store\google\Publisher\bin\Release\netcoreapp2.0 dotnet Publisher.dll ` $env:APPVEYOR_BUILD_FOLDER\store\google\Publisher\play_creds.json ` - $env:APPVEYOR_BUILD_FOLDER\com.x8bit.bitwarden.apk ` + $env:APPVEYOR_BUILD_FOLDER\com.x8bit.bitwarden.aab ` alpha cd $env:APPVEYOR_BUILD_FOLDER } diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index afe27f7a3..a33c607fb 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -19,7 +19,6 @@ Xamarin.Android.Net.AndroidClientHandler - Xamarin.GooglePlayServices.Base;Xamarin.GooglePlayServices.Basement;Xamarin.GooglePlayServices.Measurement;Xamarin.GooglePlayServices.Gcm;BitwardenAndroid;BitwardenApp;BitwardenCore;Xamarin.Android.Net;Xamarin.Android.Net.OldAndroidSSLSocketFactory;LiteDB;Microsoft.AppCenter.Crashes true @@ -45,7 +44,7 @@ armeabi-v7a;x86;x86_64;arm64-v8a 1G true - Full + true false @@ -61,7 +60,7 @@ 1G false true - Full + true @@ -89,7 +88,7 @@ - + 71.1600.0 diff --git a/src/Android/ci-build-apks.ps1 b/src/Android/ci-build-apks.ps1 index 3c1426e4f..4e23c212f 100644 --- a/src/Android/ci-build-apks.ps1 +++ b/src/Android/ci-build-apks.ps1 @@ -29,16 +29,33 @@ Invoke-Expression "& `"$secureFilePath`" -decrypt $($encKeystorePath) -secret $( Invoke-Expression "& `"$secureFilePath`" -decrypt $($encUploadKeystorePath) -secret $($env:upload_keystore_dec_secret)" echo "########################################" -echo "##### Sign Release Configuration" +echo "##### Sign Google Play Bundle Release Configuration" echo "########################################" msbuild "$($androidPath)" "/t:SignAndroidPackage" "/p:Configuration=Release" "/p:AndroidKeyStore=true" ` "/p:AndroidSigningKeyAlias=upload" "/p:AndroidSigningKeyPass=$($env:upload_keystore_password)" ` "/p:AndroidSigningKeyStore=upload-keystore.jks" "/p:AndroidSigningStorePass=$($env:upload_keystore_password)" ` - "/v:quiet" + "/p:AndroidPackageFormat=aab" "/v:quiet" echo "########################################" -echo "##### Copy Release apk to project root" +echo "##### Copy Google Play Bundle to project root" +echo "########################################" + +$signedAabPath = $($rootPath + "\src\Android\bin\Release\com.x8bit.bitwarden-Signed.aab"); +$signedAabDestPath = $($rootPath + "\com.x8bit.bitwarden.aab"); + +Copy-Item $signedAabPath $signedAabDestPath + +echo "########################################" +echo "##### Sign APK Release Configuration" +echo "########################################" + +msbuild "$($androidPath)" "/t:SignAndroidPackage" "/p:Configuration=Release" "/p:AndroidKeyStore=true" ` + "/p:AndroidSigningKeyAlias=bitwarden" "/p:AndroidSigningKeyPass=$($env:keystore_password)" ` + "/p:AndroidSigningKeyStore=8bit.keystore" "/p:AndroidSigningStorePass=$($env:keystore_password)" "/v:quiet" + +echo "########################################" +echo "##### Copy Release APK to project root" echo "########################################" $signedApkPath = $($rootPath + "\src\Android\bin\Release\com.x8bit.bitwarden-Signed.apk"); diff --git a/store/google/Publisher/Program.cs b/store/google/Publisher/Program.cs index cdb1180ed..b7ab3887c 100644 --- a/store/google/Publisher/Program.cs +++ b/store/google/Publisher/Program.cs @@ -13,7 +13,7 @@ namespace Bit.Publisher { private const string Package = "com.x8bit.bitwarden"; - private static string _apkFilePath; + private static string _aabFilePath; private static string _credsFilePath; private static string _track; @@ -27,7 +27,7 @@ namespace Bit.Publisher try { _credsFilePath = args[0]; - _apkFilePath = args[1]; + _aabFilePath = args[1]; var track = args[2].Substring(0, 1).ToLower(); if (track == "a") @@ -83,31 +83,35 @@ namespace Bit.Publisher Console.WriteLine("Created edit with id {0}.", edit.Id); - Apk apk = null; - using (var stream = new FileStream(_apkFilePath, FileMode.Open)) + Bundle aab = null; + using (var stream = new FileStream(_aabFilePath, FileMode.Open)) { - var uploadMedia = service.Edits.Apks.Upload(Package, edit.Id, stream, - "application/vnd.android.package-archive"); + var uploadMedia = service.Edits.Bundles.Upload(Package, edit.Id, stream, + "application/octet-stream"); var progress = await uploadMedia.UploadAsync(); if (progress.Status == Google.Apis.Upload.UploadStatus.Completed) { - apk = uploadMedia.ResponseBody; + aab = uploadMedia.ResponseBody; } else { + if (progress.Exception != null) + { + Console.WriteLine("Upload exception: {0}", progress.Exception); + } throw new Exception("Upload failed."); } } - Console.WriteLine("Version code {0} has been uploaded.", apk.VersionCode); + Console.WriteLine("Version code {0} has been uploaded.", aab.VersionCode); var trackRequest = service.Edits.Tracks.Update(new Track { TrackValue = _track, Releases = new List { - new TrackRelease { VersionCodes = new List { apk.VersionCode }, Status = "completed" } + new TrackRelease { VersionCodes = new List { aab.VersionCode }, Status = "completed" } } }, Package, edit.Id, _track); diff --git a/store/google/Publisher/Publisher.csproj b/store/google/Publisher/Publisher.csproj index c8e2e6f8d..aeb9e1a78 100644 --- a/store/google/Publisher/Publisher.csproj +++ b/store/google/Publisher/Publisher.csproj @@ -8,7 +8,7 @@ - +