From ec27f4d9bb01d886eab7e416400dce5cb6f7385c Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Fri, 21 Feb 2025 13:08:47 -0500 Subject: [PATCH] [HelloWorld] Fix app install MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When I try installing `samples/HelloWorld`, installation fails: ./dotnet-local.sh build -t:Install samples/HelloWorld/HelloWorld/HelloWorld.DotNet.csproj HelloWorld.DotNet failed with 2 error(s) (139.4s) → samples/HelloWorld/HelloWorld/bin/Debug/net10.0-android/HelloWorld.DotNet.dll /Users/jon/Developer/src/dotnet/android/bin/Debug/lib/packs/Microsoft.Android.Sdk.Darwin/35.99.0/tools/Xamarin.Android.Common.targets(2824,3): error MSB6006: "adb" exited with code 1. /Users/jon/Developer/src/dotnet/android/bin/Debug/lib/packs/Microsoft.Android.Sdk.Darwin/35.99.0/tools/Xamarin.Android.Common.targets(2824,3): error XAAADB0000: Serving... All files should be loaded. Notifying the device. adb: failed to install bin/Debug/net10.0-android/com.xamarin.android.helloworld-Signed.apk: Failure [INSTALL_FAILED_VERIFICATION_FAILURE: Install not allowed for file :///data/app/vmdl911578471.tmp] Performing Incremental Install Failure [INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 21] Performing Streamed Install If I look at the device screen, it shows a dialog: > ⛨ Google Play Protect > **Unsafe app blocked** > ⬣ HelloWorld > This app was built for an older version of Android and doesn't > include the latest privacy protections > More options ˯ > Installing this app may put your device at risk. > Learn more about Play Protect > [Install anyway] > [**Got it**] [Developer Guidance for Google Play Protect Warnings][0] states: > **Reason for this notification**: These Play Protect warnings will > show only if the app's [targetSdkVersion][1] is more than 2 versions > lower than the current Android API level. Updating `Properties/AndroidManifest.xml` to *remove* the `` element allows .NET for Android to use its default logic, causing the "final" `AndroidManifest.xml` to contain: This allows the app to install without error: % ./dotnet-local.sh build -t:Install samples/HelloWorld/HelloWorld/HelloWorld.DotNet.csproj Restore complete (1.9s) HelloLibrary.DotNet succeeded (1.5s) → samples/HelloWorld/HelloLibrary/bin/Debug/net10.0-android/HelloLibrary.DotNet.dll HelloLibrary.DotNet succeeded (0.1s) → samples/HelloWorld/HelloLibrary/bin/Debug/net10.0-android/HelloLibrary.DotNet.dll HelloWorld.DotNet succeeded (52.9s) → samples/HelloWorld/HelloWorld/bin/Debug/net10.0-android/HelloWorld.DotNet.dll Build succeeded in 57.8s [0]: https://developers.google.com/android/play-protect/warning-dev-guidance [1]: https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target --- samples/HelloWorld/HelloWorld/Properties/AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/HelloWorld/HelloWorld/Properties/AndroidManifest.xml b/samples/HelloWorld/HelloWorld/Properties/AndroidManifest.xml index 3561f38df32..4c3650a714e 100644 --- a/samples/HelloWorld/HelloWorld/Properties/AndroidManifest.xml +++ b/samples/HelloWorld/HelloWorld/Properties/AndroidManifest.xml @@ -1,6 +1,5 @@  -