diff --git a/appveyor.yml b/appveyor.yml index 82828a7e4..41c852b77 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,11 +5,7 @@ before_build: - IF DEFINED keystore_dec_secret nuget install secure-file -ExcludeVersion - IF DEFINED google_services_dec_secret secure-file\tools\secure-file -decrypt src\Android\google-services.json.enc -secret %google_services_dec_secret% after_build: - - ps: IF($env:keystore_dec_secret) { .\src\Android\increment-version.ps1 $($env:APPVEYOR_BUILD_FOLDER) $($env:APPVEYOR_BUILD_NUMBER) } - - IF DEFINED keystore_dec_secret secure-file\tools\secure-file -decrypt src\Android\8bit.keystore.enc -secret %keystore_dec_secret% - - IF DEFINED keystore_password msbuild "/t:SignAndroidPackage" "/p:Configuration=Release" "/p:AndroidKeyStore=true" "/p:AndroidSigningKeyAlias=bitwarden" "/p:AndroidSigningKeyPass=%keystore_password%" "/p:AndroidSigningKeyStore=8bit.keystore" "/p:AndroidSigningStorePass=%keystore_password%" "src\Android\Android.csproj" - - ps: IF($env:keystore_dec_secret) { copy-item src\Android\bin\Release\com.x8bit.bitwarden-Signed.apk .\com.x8bit.bitwarden-$($env:APPVEYOR_BUILD_NUMBER).apk } - - ps: IF($env:keystore_dec_secret) { .\src\Android\fdroid-build.ps1 } + - ps: IF($env:keystore_dec_secret) { .\src\Android\ci-build-apks.ps1 } on_success: - IF DEFINED play_dec_secret secure-file\tools\secure-file -decrypt store\google\Publisher\play_creds.json.enc -secret %play_dec_secret% - IF DEFINED play_dec_secret dotnet store\google\Publisher\bin\Debug\netcoreapp2.0\Publisher.dll %APPVEYOR_BUILD_FOLDER%\store\google\Publisher\play_creds.json %APPVEYOR_BUILD_FOLDER%\com.x8bit.bitwarden-%APPVEYOR_BUILD_NUMBER%.apk alpha diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index 96587112b..0d377d020 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -155,9 +155,8 @@ - + - diff --git a/src/Android/ci-build-apks.ps1 b/src/Android/ci-build-apks.ps1 new file mode 100644 index 000000000..3f10bc5fa --- /dev/null +++ b/src/Android/ci-build-apks.ps1 @@ -0,0 +1,86 @@ +$rootPath = $env:APPVEYOR_BUILD_FOLDER; + +$androidPath = $($rootPath + "\src\Android\Android.csproj"); +$appPath = $($rootPath + "\src\App\App.csproj"); + +echo "##### Increment Version" + +$androidManifest = $($rootPath + "\src\Android\Properties\AndroidManifest.xml"); + +$xml=New-Object XML; +$xml.Load($androidManifest); + +$node=$xml.SelectNodes("/manifest"); +$node.SetAttribute("android:versionCode", $env:APPVEYOR_BUILD_NUMBER); + +$xml.Save($androidManifest); + +echo "##### Decrypt Keystore" + +$encKeystorePath = $($rootPath + "\src\Android\8bit.keystore.enc"); +..\..\secure-file\tools\secure-file -decrypt $($encKeystorePath) -secret $($env:keystore_password) + +echo "##### Sign Release Configuration" + +msbuild "Android.csproj" "/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)" + +echo "##### Copy Release apk to project root" + +$signedApkPath = $($rootPath + "\src\Android\bin\Release\com.x8bit.bitwarden-Signed.apk"); +$signedApkDestPath = $($rootPath + "\com.x8bit.bitwarden-" + $env:APPVEYOR_BUILD_NUMBER + ".apk"); + +Copy-Item $signedApkPath $signedApkDestPath + +echo "##### Clean Android and App" + +msbuild "$($androidPath)" "/t:Clean" "/p:Configuration=FDroid" +msbuild "$($appPath)" "/t:Clean" "/p:Configuration=FDroid" + +echo "##### Backup project files" + +Copy-Item $androidPath $($androidPath + ".original"); +Copy-Item $appPath $($appPath + ".original"); + +echo "##### Uninstall from Android.csproj" + +$xml=New-Object XML; +$xml.Load($androidPath); + +$ns=New-Object System.Xml.XmlNamespaceManager($xml.NameTable); +$ns.AddNamespace("ns", $xml.DocumentElement.NamespaceURI); + +$firebaseNode=$xml.SelectSingleNode("/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.Firebase.Messaging']", $ns); +$firebaseNode.ParentNode.RemoveChild($firebaseNode); + +$playServiceNode=$xml.SelectSingleNode("/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.GooglePlayServices.Analytics']", $ns); +$playServiceNode.ParentNode.RemoveChild($playServiceNode); + +$xml.Save($androidPath); + +echo "##### Uninstall from App.csproj" + +$xml=New-Object XML; +$xml.Load($appPath); + +$hockeyNode=$xml.SelectSingleNode("/Project/ItemGroup/PackageReference[@Include='HockeySDK.Xamarin']"); +$hockeyNode.ParentNode.RemoveChild($hockeyNode); + +$xml.Save($appPath); + +echo "##### Restore NuGet" + +..\..\nuget.exe restore + +echo "##### Build and Sign FDroid Configuration" + +msbuild "Android.csproj" "/logger:C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" "/p:Configuration=FDroid" +msbuild "Android.csproj" "/t:SignAndroidPackage" "/p:Configuration=FDroid" "/p:AndroidKeyStore=true" "/p:AndroidSigningKeyAlias=bitwarden" "/p:AndroidSigningKeyPass=$($env:keystore_password)" "/p:AndroidSigningKeyStore=8bit.keystore" "/p:AndroidSigningStorePass=$($env:keystore_password)" + +echo "##### Copy FDroid apk to project root" + +$signedApkPath = $($rootPath + "\src\Android\bin\FDroid\com.x8bit.bitwarden-Signed.apk"); +$signedApkDestPath = $($rootPath + "\com.x8bit.bitwarden-fdroid-" + $env:APPVEYOR_BUILD_NUMBER + ".apk"); + +Copy-Item $signedApkPath $signedApkDestPath + +echo "##### Done" diff --git a/src/Android/fdroid-build.ps1 b/src/Android/fdroid-build.ps1 deleted file mode 100644 index 4336f884d..000000000 --- a/src/Android/fdroid-build.ps1 +++ /dev/null @@ -1,11 +0,0 @@ -msbuild "Android.csproj" "/t:Clean" "/p:Configuration=FDroid" -msbuild "..\App\App.csproj" "/t:Clean" "/p:Configuration=FDroid" - -Uninstall-Package Xamarin.Firebase.Messaging -Uninstall-Package Xamarin.GooglePlayServices.Analytics -Uninstall-Package HockeySDK.Xamarin - -msbuild "Android.csproj" "/logger:C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" "/p:Configuration=FDroid" -msbuild "Android.csproj" "/t:SignAndroidPackage" "/p:Configuration=FDroid" "/p:AndroidKeyStore=true" "/p:AndroidSigningKeyAlias=bitwarden" "/p:AndroidSigningKeyPass=$($env:keystore_password)" "/p:AndroidSigningKeyStore=8bit.keystore" "/p:AndroidSigningStorePass=$($env:keystore_password)" - -Copy-Item .\bin\FDroid\com.x8bit.bitwarden-Signed.apk ..\com.x8bit.bitwarden-fdroid-$($env:APPVEYOR_BUILD_NUMBER).apk diff --git a/src/Android/increment-version.ps1 b/src/Android/increment-version.ps1 deleted file mode 100644 index 38ab87df6..000000000 --- a/src/Android/increment-version.ps1 +++ /dev/null @@ -1,8 +0,0 @@ -$rootPath = $args[0]; -$newVersionCode = $args[1]; - -$xml=New-Object XML; -$xml.Load($rootPath + "\src\Android\Properties\AndroidManifest.xml"); -$node=$xml.SelectNodes("/manifest"); -$node.SetAttribute("android:versionCode", $newVersionCode); -$xml.Save($rootPath + "\src\Android\Properties\AndroidManifest.xml"); \ No newline at end of file