#android #android-manifest #manifest #android-permissions
#Android #android-манифест #манифест #android-разрешения
Вопрос:
Мне нужно создать проект Android (никогда раньше ничего не развертывал на Android). Сборка проекта не работает. AndroidManifest.xml
внутри instant-run
, попадая внутрь тегов <application>
tag <uses-permission>
. Который не будет работать — это не разрешено документами Google.
Мой основной манифест выглядит следующим образом:
<manifest package="xxx"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:allowBackup"
android:name="XXX"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".WebViewActivity"
android:label="@string/title_activity_web_view"
android:theme="@style/AppTheme.NoActionBar"
android:configChanges="orientation|screenSize"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="io.fabric.ApiKey"
android:value="xxx"
/>
</application>
</manifest>
Версия сборки:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pl.touspolska.mobile"
android:versionCode="7"
android:versionName="1.0.2" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Permissions required for GCM -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application
android:name="XXX.TousPolskaApplication"
android:allowBackup="false"
android:debuggable="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:testOnly="true"
android:theme="@style/AppTheme" >
<activity
android:name="XXX.WebViewActivity"
android:configChanges="orientation|screenSize"
android:label="@string/title_activity_web_view"
android:launchMode="singleTask"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
// HERE IS ERROR!!!!
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="XXX.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="XXX.permission.C2D_MESSAGE" />
// ERROR ABOVE !!!!
....
</application>
ОШИБКА
Сбой связывания ресурсов Android — он указывает на те 3 строки, которые находятся между комментариями к ошибке
Как мы можем видеть, у него есть werid uses-permissions
. Кто-нибудь знает, что включает эти устаревшие теги внутри manifest?
Комментарии:
1. Есть ли у вас другие модули в вашем проекте?
2. Существует только один.
3. Любая библиотека, которую вы объявляете в разделе зависимостей вашего приложения build.gradle файл может добавить что-то к вашему манифесту. Это называется слиянием манифеста developer.android.com/studio/build/manifest-merge
4. Если вы используете Android Studio, откройте свой AndroidManifest.xml и нажмите на вкладку объединенного манифеста внизу. Вы получите больше информации о модулях / библиотеках, используемых в нем
5. Разрешения C2DM использовались GCM (устарели в пользу FCM)