Chơi Cài đặt thư viện giới thiệu Thêm các quyền WRITE_EXTERNAL_STORAGE và READ_EXTERNAL_STORAGE


19

Chúng tôi đang cố gắng cập nhật Thư viện giới thiệu cài đặt Google Play và

Trong nội bộ, nó thêm một số quyền đọc ghi bên ngoài .

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

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

Chúng ta có thực sự cần phải gắn bó với các quyền?

phụ thuộc implementation 'com.android.installreferrer:installreferrer:1.1

Nguồn https://developer.android.com/google/play/installreferrer/l Library.html


1
Điều này cần được khắc phục trong 1.1.2: suetracker.google.com/issues/146115244
Ian G. Clifton

Câu trả lời:


4

Tôi cũng đã gặp vấn đề này.

Nhưng trong trường hợp của tôi, phiên bản 1.1 cũng đang thêm quyền READ_PHONE_STATE

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

Tôi đã dịch ngược tệp .aar cho installreferrer: 1.1 và kiểm tra tệp kê khai và tệp pom, không có gì trong các tệp đó để chỉ ra rằng các quyền này cần được thêm vào.
Tệp kê khai thư viện chỉ thêm quyền này (luôn có trong các phiên bản trước):

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

Tôi không thể tìm thấy bất kỳ thông tin chính thức nào về việc này.
Nhưng các thư viện khác của Google đã có vấn đề trong quá khứ với việc thêm các quyền bổ sung, không cần thiết, sau đó đã bị xóa trong phiên bản hotfix ngay sau đó.
Ví dụ: cái này:
Tại sao quyền READ_PHONE_STATE được thêm vào?

Vì vậy, tôi hy vọng điều tương tự sẽ xảy ra ở đây.


1
Cài đặt giới thiệu thêm quyền này do thực tế là phiên bản sdk mục tiêu thấp hơn so với mặc định có được sự cho phép. Nếu bạn xem báo cáo-sáp nhập-báo cáo, bạn có thể thấy điều này: 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 Thông tin về sự cho phép ngầm có thể được tìm thấy trong tài liệu này: developer.android.com/studio/build/
Dinesh

6

Cài đặt giới thiệu thêm quyền này do thực tế targetSdkVersionlà giá trị thấp hơn phiên bản mà giới hạn được thêm vào. Nếu bạn xem báo cáo-sáp nhập-báo cáo được tạo trong thư mục bản dựng của ứng dụng, bạn có thể thấy thông tin này:

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

Thông tin về cách thức hoạt động của quyền hệ thống ngầm này trên Android có thể được tìm thấy trong tài liệu này: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts


4

Từ câu trả lời này :

Điều này là do họ đã thêm một phụ thuộc vào

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

Mà thêm các quyền đó.

Bạn có thể tìm thấy nó trên tệp: manifest-merger-blame-debug-report.txt nằm dưới "yourApp / build / trung gian / manifest_merge_blame_file / debug"

Đây có lẽ là một lỗi. Ngoài ra, installreferrer 1.1.1không giải quyết nó.

Giải pháp dễ nhất là hạ cấp installreferrertrở lại cho đến 1.0bây giờ.

Nhưng nếu bạn cần phiên bản này, bạn có thể thêm:

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

Để vô hiệu hóa nó. Nhưng hãy biết rằng nếu bạn sẽ sử dụng bất kỳ API nào cần nó trong thư viện, nó có thể dẫn đến sự cố , vì vậy tôi sẽ không khuyên bạn nên làm như vậy.


2

Trích dẫn từ câu trả lời này (và hoàn thành):

Phiên bản 1.1 và 1.1.1 bị thiếu "minSdkVersion". Điều này sẽ tự động thêm các quyền đó (vì SDK mặc định <4 như đã nói bởi @thiagolr). Xem vấn đề tương tự ở đây: Google Play Services 12.0.1 .

Giải pháp

Phiên bản 1.1.2 giải quyết vấn đề này.

Chi tiết

Manifest.xml cho v1.0 (từ https://mvnreposective.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 cho v1.1 (từ https://mvnreposective.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>

1

Về mặt lý thuyết, người ta có thể loại bỏ chúng hoàn toàn với sự hợp nhất của bảng kê khai:

<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>

Nhưng nếu thư viện vẫn hoạt động như mong đợi thì lại là một câu chuyện khác -

đó là một ngoại lệ, rằng một thư viện Google yêu cầu các quyền không cần thiết.

Các ghi chú phát hànhtài liệu không đề cập đến quyền.


1

Các quyền này được thêm vào vì com.android.installreferrercó tệp TargetSdkVersion <4. Bạn có thể thấy nó trên tệp kê khai-merger-release-report.txt nằm trong thư mục Temp \ gradleOut \ build \ output \ records bên trong dự án của bạn. Đây là một lỗi và nó có thể sẽ được sửa trên một phiên bản mới hơn.

Để khắc phục điều này, bạn cần tìm ra plugin nào được thêm com.android.installreferrerlàm phụ thuộc.


Trong dự án của tôi, thủ phạm là plugin Facebook . Nó sử dụng com.facebook.android:facebook-core:5.15.xgói chịu trách nhiệm thêm com.android.installreferrer:installreferrer:1.1phụ thuộc.

Giải pháp là quay trở lại com.facebook.android:facebook-core:5.13.0, không có sự com.android.installreferrerphụ thuộc.

Chỉnh sửa tệp FacebookSDK/Plugins/Editor/Dependencies.xmlvà thay đổi các gói này thành:

<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)" />

Tiếp theo, đừng quên giải quyết các phụ thuộc một lần nữa: Assets > Play Services Resolver > Android Resolver > Force Resolve


1

1.1.2 được phát hành, nó thêm minSdkVersion một cách chính xác.

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.