Play Install Referrer Library Добавление разрешений WRITE_EXTERNAL_STORAGE и READ_EXTERNAL_STORAGE

19

Мы пытаемся обновить библиотеку реферера Google Play Install и

Внутренне он добавляет некоторые внешние права на чтение и запись .

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

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

Нам действительно нужно придерживаться разрешений?

зависимость implementation 'com.android.installreferrer:installreferrer:1.1

Источник https://developer.android.com/google/play/installreferrer/library.html

wadali
источник
1
Это должно быть исправлено в 1.1.2: issetracker.google.com/issues/146115244
Ян Г. Клифтон,

Ответы:

4

Я также сталкивался с этой проблемой.

Но в моем случае версия 1.1 также добавляет разрешение READ_PHONE_STATE

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

Я декомпилировал файл .aar для installreferrer: 1.1 и проверил файл манифеста и pom, в этих файлах нет ничего, что указывало бы на то, что эти разрешения должны быть добавлены.
Файл манифеста библиотеки только добавляет это разрешение (которое всегда было в предыдущих версиях):

<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>

Я не смог найти никакой официальной информации по этому поводу.
Но в прошлом у других библиотек Google были проблемы с добавлением дополнительных ненужных разрешений, которые вскоре были удалены в версии исправлений.
Например, это:
Почему было добавлено разрешение READ_PHONE_STATE?

Поэтому я надеюсь, что то же самое произойдет здесь.

Moonbloom
источник
1
Установка реферера добавляет это разрешение из-за того, что target-sdk-version ниже, чем он неявно получает разрешение. Если вы посмотрите на отчет о слиянии-манифесте, вы увидите следующее: uses-permission#android.permission.READ_PHONE_STATE IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 reason: com.android.installreferrer has a targetSdkVersion < 4 информацию о неявном разрешении можно найти в этой документации: developer.android.com/studio/build/…
Динеш
6

Установка реферера добавляет это разрешение в связи с тем, что targetSdkVersionэто значение ниже, чем версия, в которой было добавлено ограничение. Если вы посмотрите на сгенерированный manifest-merger-report в папке сборки вашего приложения, вы увидите следующую информацию:

uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 reason: com.android.installreferrer has a targetSdkVersion < 4

Информацию о том, как работает это неявное системное разрешение на Android, можно найти в этой документации: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts

Динеш
источник
4

Из этого ответа :

Это потому, что они добавили зависимость

com.google.android.gms:play-services-measurement:17.2.1

Который добавляет эти разрешения.

Вы можете найти его в файле: manifest-merger-blame-debug-report.txt, который находится в «yourApp / build / промежуточные / manifest_merge_blame_file / debug»

Это, наверное, ошибка. Кроме того, installreferrer 1.1.1не решает это.

Самое простое решение - installreferrerвернуться к 1.0текущему моменту.

Но если вам нужна эта версия, вы можете добавить:

<uses-permission android:name="<permission_name>" tools:node="remove" />

Чтобы отключить это. Но знайте, что если вы будете использовать любой API, которому он нужен внутри библиотеки, это может привести к сбою , поэтому я не буду рекомендовать делать это.

Luzian
источник
2

Цитата из этого ответа (и завершение):

В версиях 1.1 и 1.1.1 отсутствует "minSdkVersion". Это автоматически добавит эти разрешения (потому что SDK по умолчанию <4, как говорит @thiagolr). Смотрите похожую проблему здесь: Google Play Services 12.0.1 .

Решение

Версия 1.1.2 решает эту проблему.

подробности

Manifest.xml для v1.0 (с https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.0 )

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.installreferrer" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />

    <application />

</manifest>

Manifest.xml для v1.1 (с https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.1 )

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.installreferrer">

    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />

    <application />

</manifest>
sagis
источник
1

Теоретически их можно удалить вместе с манифестом-слиянием:

<manifest
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />

</manifest>

Но если библиотека будет работать, как и ожидалось, это уже другая история -

скорее исключение, что библиотека Google требует ненужных разрешений.

В о выпуске и документация не упоминаются разрешения.

Мартин Цайтлер
источник
1

Эти разрешения добавлены, потому что com.android.installreferrerимеет targetSdkVersion <4. Вы можете увидеть его в файле manifest-merger-release-report.txt, расположенном в Temp \ gradleOut \ build \ output \ logs внутри вашего проекта. Это ошибка, и она, вероятно, будет исправлена ​​в более новой версии.

Чтобы это исправить, вам нужно выяснить, какой плагин добавляет com.android.installreferrer как зависимость.


В моем проекте виновником был плагин Facebook . Он используетcom.facebook.android:facebook-core:5.15.x пакет, который отвечает за добавление com.android.installreferrer:installreferrer:1.1зависимости.

Решение состояло в том, чтобы откат к com.facebook.android:facebook-core:5.13.0, который не имеетcom.android.installreferrer зависимости.

Отредактируйте файл FacebookSDK/Plugins/Editor/Dependencies.xmlи измените эти пакеты на:

<androidPackage spec="com.facebook.android:facebook-core:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-applinks:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-login:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-share:[5,5.13.0)" />

Далее, не забудьте разрешить зависимости снова: Assets > Play Services Resolver > Android Resolver > Force Resolve

thiagolr
источник
1

1.1.2 выпущен, он правильно добавляет minSdkVersion.

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />
Yu-Сюань
источник