我有一個使用 Xamarin.FireBase.Messaging 的應用程式,它適用于所有 <12 的 android 版本。
當我嘗試在 Android 12 中構建我的應用程式時,出現此錯誤:
“*嚴重性代碼描述專案檔案行抑制狀態錯誤 ADB0010:Mono.AndroidTools.InstallFailedException:意外安裝輸出:失敗 [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED:installPackageLI 期間決議失敗:/data/app/vmdl254956208.tmp/base.apk(在二進制 XML 檔案行#40): crc64bb777672d9471d38.CustomFirebaseMessagingService: 定位 S (版本 31 及更高版本)需要在 Mono.AndroidTools.Internal.AdbOutputParsing.CheckInstallSuccess(String output, String packageName) 中定義 android:exported 的顯式值在 /Users/builder/azdo/_work/1/s/xamarin-android/external/monodroid/tools/msbuild/external/androidtools/Mono.AndroidTools/Internal/AdbOutputParsing.cs:System.Threading.Tasks.Task 的第 357 行.Execute() --- 從先前拋出例外的位置結束堆疊跟蹤 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 AndroidDeviceExtensions.d__12 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() /Users/builder/azdo/_work/1/s/xamarin-android/external/monodroid/tools/msbuild/external/androidtools/Xamarin.AndroidTools/Devices/AndroidDeviceExtensions.cs:line 206 中的 .MoveNext() --- 結束堆疊跟蹤從先前引發例外的位置 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 AndroidDeviceExtensions.d__12.MoveNext() 在 /Users/builder/azdo/_work/1/s/xamarin-android /external/monodroid/tools/msbuild/external/androidtools/Xamarin.AndroidTools/Devices/AndroidDeviceExtensions.cs:第 223 行 --- 在 Xamarin.Android 的 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 處的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 處從先前引發例外的位置結束堆疊跟蹤。 /Users/builder/azdo/_work/1/s/xamarin-android/external/monodroid/tools/msbuild/Tasks/FastDeploy.cs:line 339 中的 Tasks.FastDeploy.d__105.MoveNext() --- 堆疊跟蹤結束從先前引發例外的位置 --- 在 /Users/builder/azdo/_work/1/s/ 中 Xamarin.Android.Tasks.FastDeploy.d__105.MoveNext() 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() xamarin-android/external/monodroid/tools/msbuild/Tasks/FastDeploy.cs:line 356 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo 處從先前引發例外的位置結束堆疊跟蹤。Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Xamarin.Android.Tasks.FastDeploy.d__100.MoveNext() 在 /Users/builder/azdo/_work/1/s/xamarin-android/external /monodroid/tools/msbuild/Tasks/FastDeploy.cs:line 213 0 *"
我認為我添加了所有屬性“android:exported”。
這是我的清單:
manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.pushnotifications" android:installLocation="auto">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="31" />
<application android:label="PushNotifications.Android" android:theme="@style/MainTheme">
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
這是 CustomFirebaseMessagingService 類:
[Service(Exported = false)]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class CustomFirebaseMessagingService : FirebaseMessagingService
{
public readonly ILocalNotificationsService localNotificationsService;
public CustomFirebaseMessagingService()
{
localNotificationsService = new LocalNotificationService();
}
public override void OnNewToken(string token)
{
base.OnNewToken(token);
Log.Debug("FMC_SERVICE", token);
}
public override void OnMessageReceived(RemoteMessage message)
{
var notification = message.GetNotification();
localNotificationsService.ShowNotification(notification.Title, notification.Body, message.Data);
}
}
我能做些什么?
uj5u.com熱心網友回復:
我創建了一個簡單的代碼來測驗您的代碼。當我洗掉 時(Exported = false),我會遇到與您相同的錯誤。但如果我使用[Service(Exported = false)],該專案運行良好。
所以問題應該不會出現。但是你可以嘗試在 manifest.xml 中宣告服務。如:
<service android:enabled="true" android:name=".CustomFirebaseMessagingService" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452314.html
標籤:安卓 xamarin xamarin.forms xamarin.android
