Android의 프로그램 라이브러리에서 minSdkVersion과 targetSdkVersion을 지정하지 않은 경우 프로그램에서 임의로 권한을 추가합니다
3308 단어 Android
개요
여러 가지 이유로 회사 내에서 라이브러리를 만들고 마븐 서버에서 공개하는데 응용 프로그램으로 그걸 참조하는 게 자주 있죠?
우선 결론은 이때 라이브러리 측에서 targetSdkVersion을 지정하지 않으면 READ_PHONE_STATE
, READ_EXTERNAL_STORAGE
및 WRITE_EXTERNAL_STORAGE
발표 전 구글플레이에서 눈치채면 다시 올려 확인하는 등 다음 날까지 발표돼 번거로워지기 쉽다.(드래그 요청을 통해 권한 변경을 감지할 수 있다면 더욱 좋다)
어떻게
일반적으로 mafniest에 추가되는 Permission은 AndroidManifest입니다.xml에서 오른쪽 단추 Merged Manfiest
를 누르면 라이브러리 Go to Declaration
를 찾을 수 있습니다.
하지만 이번에는 메인 맨피스트다.그냥 xml에 넘어가서 이유를 모르겠어요.
문서 구축 과정에서 생성된 anifest-merger-[バリアント名]-report.txt
이 프로젝트를 보여주면 돼요. 그래서 봤어요.
find . -name "manifest-merger*txt"
./app/build/outputs/logs/manifest-merger-[변형명]-report.txt
거기서 다음과 같은 내용을 토했다.reason: library has a targetSdkVersion < 4
IMPLIED from .../src/main/AndroidManifest.xml:2:1-550:12 reason: library has a targetSdkVersion < 4
uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from .../src/main/AndroidManifest.xml:2:1-550:12 reason: library has a targetSdkVersion < 4
uses-permission#android.permission.READ_EXTERNAL_STORAGE
IMPLIED from .../src/main/AndroidManifest.xml:2:1-550:12 reason: library requested WRITE_EXTERNAL_STORAGE
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.
이유가 뭐죠?
여기서부터 좀 흥미로운 이야기인데, 왜 targetSdkVersion<4면 권한이 추가됩니까?
여기 문서가 있어요.
https://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE
코드를 따라 가면 다음과 같은 내용에 도달할 수 있다.
https://android.googlesource.com/platform/tools/base/+/5521274ec220aea3f2b38d77dd34aeb463666da2 When importing libraries targeting past versions of the SDK with some
implied permissions (and possible other element types) into an
application targeting a newer SDK, we must explicitely declare those
implied permissions for the application to run correctly.
애플리케이션을 올바르게 실행하기 위해 새 OS에 명시적으로 지정해야 하는 모든 권한이 추가될 것 같습니다.
이 권한을 추가한merger 코드가 여기 있는 것 같습니다.
https://android.googlesource.com/platform/tools/base/+/2343d80f0fed536331249d0190294de0a9660358/build-system/manifest-merger/src/main/java/com/android/manifmerger/XmlDocument.java
Reference
이 문제에 관하여(Android의 프로그램 라이브러리에서 minSdkVersion과 targetSdkVersion을 지정하지 않은 경우 프로그램에서 임의로 권한을 추가합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takahirom/items/cb9865b287dd6bab1007
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
일반적으로 mafniest에 추가되는 Permission은 AndroidManifest입니다.xml에서 오른쪽 단추
Merged Manfiest
를 누르면 라이브러리 Go to Declaration
를 찾을 수 있습니다.하지만 이번에는 메인 맨피스트다.그냥 xml에 넘어가서 이유를 모르겠어요.
문서 구축 과정에서 생성된
anifest-merger-[バリアント名]-report.txt
이 프로젝트를 보여주면 돼요. 그래서 봤어요.find . -name "manifest-merger*txt"
./app/build/outputs/logs/manifest-merger-[변형명]-report.txt
거기서 다음과 같은 내용을 토했다.
reason: library has a targetSdkVersion < 4
IMPLIED from .../src/main/AndroidManifest.xml:2:1-550:12 reason: library has a targetSdkVersion < 4
uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from .../src/main/AndroidManifest.xml:2:1-550:12 reason: library has a targetSdkVersion < 4
uses-permission#android.permission.READ_EXTERNAL_STORAGE
IMPLIED from .../src/main/AndroidManifest.xml:2:1-550:12 reason: library requested WRITE_EXTERNAL_STORAGE
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.이유가 뭐죠?
여기서부터 좀 흥미로운 이야기인데, 왜 targetSdkVersion<4면 권한이 추가됩니까?
여기 문서가 있어요.
https://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE
코드를 따라 가면 다음과 같은 내용에 도달할 수 있다.
https://android.googlesource.com/platform/tools/base/+/5521274ec220aea3f2b38d77dd34aeb463666da2 When importing libraries targeting past versions of the SDK with some
implied permissions (and possible other element types) into an
application targeting a newer SDK, we must explicitely declare those
implied permissions for the application to run correctly.
애플리케이션을 올바르게 실행하기 위해 새 OS에 명시적으로 지정해야 하는 모든 권한이 추가될 것 같습니다.
이 권한을 추가한merger 코드가 여기 있는 것 같습니다.
https://android.googlesource.com/platform/tools/base/+/2343d80f0fed536331249d0190294de0a9660358/build-system/manifest-merger/src/main/java/com/android/manifmerger/XmlDocument.java
Reference
이 문제에 관하여(Android의 프로그램 라이브러리에서 minSdkVersion과 targetSdkVersion을 지정하지 않은 경우 프로그램에서 임의로 권한을 추가합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takahirom/items/cb9865b287dd6bab1007
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
When importing libraries targeting past versions of the SDK with some
implied permissions (and possible other element types) into an
application targeting a newer SDK, we must explicitely declare those
implied permissions for the application to run correctly.
Reference
이 문제에 관하여(Android의 프로그램 라이브러리에서 minSdkVersion과 targetSdkVersion을 지정하지 않은 경우 프로그램에서 임의로 권한을 추가합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takahirom/items/cb9865b287dd6bab1007텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)