我想將目標 sdk 從 30 升級到 31。但我收到了那個錯誤:
清單合并失敗:需要為 明確指定 android:exported。面向 Android 12 及更高版本的應用需要為
android:exported相應組件定義了意圖過濾器時指定顯式值。有關 詳細資訊,請參閱 https://developer.android.com/guide/topics/manifest/activity-element#exported。
當我在清單合并中環顧四周時。我看到我在應用程式中使用的第三方庫之一沒有添加android:exported標簽。
<service android:name="com.****.MessagingService" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
所以這是我的問題。我怎樣才能像下面這樣將這個服務覆寫為匯出的假?
<service android:exported="false"
android:name="com.****.MessagingService" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
uj5u.com熱心網友回復:
Android Studio 將合并專案及其依賴項的所有清單檔案。
上層清單總是可以優先并覆寫依賴項中的值。檢查檔案中的這一段。
由于依賴項根本沒有指定exported值,您可以像這樣覆寫頂級清單檔案中的每個服務:
<service android:exported="false"
android:name="com.****.MessagingService" />
這將合并服務標簽的值com.****.MessagingService并應用匯出的值。
uj5u.com熱心網友回復:
您可以替換整個節點
<service
tools:node="replace"
android:name=".MessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
或者只是你需要替換的屬性
<service
tools:replace="exported"
android:name=".MessagingService"
android:exported="false"/>
您可以在此處找到有關此主題的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/358320.html
下一篇:任務“:app:validateSigningDebug”執行失敗。java.util.concurrent.ExecutionException:
