2015-02-10 4 views
2

Я компилирую проект, который явно не запрашивает разрешение READ_PHONE_STATE, но когда я компилирую, я вижу разрешение в моем скомпилированном файле манифеста Android. Я предполагаю, что какая-то библиотека, которую вытаскиваете, добавляет ее явно или забыла установить минимальную версию SDK (что бы добавить ее).Укажите, кто добавляет READ_PHONE_STATE в файл манифеста?

Единственное, что я должен пойти на то, что в конечном манифеста, разрешения я просил себе выглядеть следующим образом:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="com.android.vending.BILLING" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

И READ_PHONE_STATE выглядит следующим образом:

<android:uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

ли префикс андроида означает что-нибудь?

Есть ли способ сузить, какая библиотека добавляет это разрешение?

+0

какие разрешения вы заявляли – tyczj

+0

@tyczj - отредактировал мой вопрос, чтобы включить их. Запросы, которые я запросил, не изменились между версиями, поэтому я считаю, что это библиотека, в которую они втягиваются. – Mark

ответ

3

Я хотел бы посмотреть на:

Android Library Manifest vs. App Manifest

Это на самом деле не дубликат, так что я не флаг, однако я думаю, что он охватывает тему довольно хорошо в своем ответе на этот вопрос.

После этого и если вы не можете понять это, я хотел бы сделать следующее:

Найдите ваш Gradle кэш

вскрывать артефакты каждого из зависимостей (переименовать в .zip и экстракт это самый простой способ сделать это)

чека, если они включены манифесты и посмотреть, что в,

+1

Спасибо, Натаниэль. Просмотрел все файлы манифеста Android для моего проекта после того, как они были привезены, и обнаружил, что библиотека для нарушителей не указала минимальную версию SDK. Ура! – Mark

+0

Мое удовольствие, рад, что вы его отсортировали. –

0

Вы можете точно увидеть, если библиотека (или из-за) добавляют некоторые дополнительные разрешения на манифест. Проверьте файл, сгенерированный (см. Ниже) во время процесса сборки и найдите нежелательное разрешение в файле!

Перейти в папку проекта и искать этот путь:

[ProjectFolder]/сборки/выходы/журналы/манифест слияния --- report.txt

открыть файл и поиск разрешения в моем случае я нашел эти линии на

uses-permission#android.permission.READ_PHONE_STATE IMPLIED from 
C:\..\...\AppFolder\src\..\AndroidManifest.xml:2:1-14:12 reason: 
com.some.evil.library has a targetSdkVersion < 4 

Это сгенерированный файл показать результат процесса слияния описаны here на сайте разработчиков Android.