Wir haben eine App, die aus einer Drittanbieter-Bibliothek (Altbeacon), einer lokal erstellten Android-Bibliothek und einer App-Komponente besteht. Alle drei Komponenten verfügen über eine AndroidManifest.xml, die während des Builds zusammengeführt werden. Die App wird mit Gradle erstellt.Android Manifest Duplicate Berechtigungen
Diese App wurde lange im Google Play Store veröffentlicht. In der letzten Iteration haben wir von API Level 22 auf 25 aktualisiert. Alles ohne Fehler gebaut, das APK wurde auf echten Geräten ohne Fehler installiert und getestet, aber als wir kamen, um die App bei Google Play zu aktualisieren, scheiterte der Upload der APK mit der Fehler:
Upload failed
Duplicate declarations of permission android.permission.ACCESS_COARSE_LOCATION with different maxSdkVersions.
Anaylyzing die AndroidManaifest.xml wir org.altbeacon.beacon hat die folgende Berechtigung gefunden:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="23" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" />
Unsere lokalen Android Bibliotheksmodul der targetSdkVersion ist auf 25 in build.gradle und Die AndroidManifest.xml enthält:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Im App-Modul ist targetSdkVersion in build.gradle auf 25 gesetzt.
Die erzeugte AndroidManifest.xml im App-Modul enthält:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" />
und nur um zu bestätigen, in der APK suchen selbst und Extrahieren der binären manifestieren:
~/.android-sdk/build-tools/25.0.3/aapt l -a app-release.apk | grep -B1 COARSE
E: uses-permission (line=62)
A: android:name(0x01010003)="android.permission.ACCESS_COARSE_LOCATION" (Raw: "android.permission.ACCESS_COARSE_LOCATION")
--
E: uses-permission-sdk-23 (line=76)
A: android:name(0x01010003)="android.permission.ACCESS_COARSE_LOCATION" (Raw: "android.permission.ACCESS_COARSE_LOCATION")
es so ist ein Duplikat Tag, und ich denke, dass die Manifest-Fusion das erkannt haben sollte und das aus der Altbeacon-Bibliothek entfernte. Meine Frage ist, wie entferne ich die Erlaubnis von der altbeacon Bibliothek?
Ich habe folgendes in der App-Modul AndroidManifest.xml versucht:
<uses-permission-sdk-23
android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="remove"
tools:selector="org.altbeacon.beacon"/>
Daraus ergibt sich:
AndroidManifest.xml:12:5-15:48 Warning:
uses-permission-sdk-23 was tagged at AndroidManifest.xml:12 to remove other declarations but no other declaration present
und
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="remove"
tools:selector="org.altbeacon.beacon"/>
Dies führt dazu:
AndroidManifest.xml:12:5-15:48 Warning:
uses-permission was tagged at AndroidManifest.xml:12 to remove other declarations but no other declaration present
Folgendes funktioniert, aber es entfernt das falsche Tag, es entfernt das in der lokalen Android-Bibliothek, die wir als Teil unserer App erstellen.
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="remove"/>
Die org.altbeacon.beacon Erlaubnis links:
~/.android-sdk/build-tools/25.0.3/aapt l -a app-release.apk | grep -B1 COARSE
E: uses-permission-sdk-23 (line=72)
A: android:name(0x01010003)="android.permission.ACCESS_COARSE_LOCATION" (Raw: "android.permission.ACCESS_COARSE_LOCATION")
Welche unbefriedigenden ist, weil, wenn die Berechtigung in org.altbeacon.beacon Bibliothek chamge, oder es in Zukunft entfernt wird, die ACCESS_COARSE_PERMISSION wird in unserer App fehlen.
Haben Sie Vorschläge, wie Sie das Problem beheben können?
Ich habe exakt das gleiche Problem. – green0range
Ich habe einen Fehler mit Google eingereicht - https://issuetracker.google.com/issues/62267639 – BitByteDog
Lustig genug, wir sind genau das gleiche Problem mit genau dieser gleichen Bibliothek jetzt! –