Dagger Hilt 2.28-alpha 버전 사용시 주의 사항 [Bug]

Mgmix

·

2020. 10. 16. 00:55

Dagger Hilt 2.28-alpha 버전으로 개발을 마친 신규 앱을 출시를 하는 상황에서

 

앱에서 사용중이지 않는 권한에 대한 경고를 확인 하였다.

 

android.permission.READ_PHONE_STATE 와 android.permission.READ_EXTERNAL_STORAGE 에 대한 권한이 사용되고 있다고 표기 되었는데, 사용중인 라이브러리에서 또한 짐작가는 곳이 없었다.

 

안드로이드는 사용중인 라이브러리를 포함한 모든 권한들은 Manifest 에 명시하게 되어있고 모든 Manifest 의 정보들은

빌드시에 하나의 파일로 병합 되기에 어디서 권한을 사용하고 있는지 확인이 가능하다.

 

매 빌드시마다 생성되는 app/build 폴더에서 outputs/logs 에 들어가면 manifest-merger-debug-report 또는 manifest-merger-release-report 가 있는데 여기서 앱 전체 Manifest 정보가 확인이 가능하다.

문제가 되는 부분의 로그는 다음과 같았다.

IMPLIED from pacakge\app\src\main\AndroidManifest.xml:2:1-43:12 reason: dagger.lint has a targetSdkVersion < 4
uses-permission#android.permission.READ_PHONE_STATE

IMPLIED from pacakge\app\src\main\AndroidManifest.xml:2:1-43:12 reason: dagger.lint has a targetSdkVersion < 4
uses-permission#android.permission.READ_EXTERNAL_STORAGE

IMPLIED from pacakge\app\src\main\AndroidManifest.xml:2:1-43:12 reason: dagger.lint requested WRITE_EXTERNAL_STORAGE

 

Dagger 의 lint 부분의 문제가 있는 것으로 보아 버그로 생각하고 찾아보니, 이미 이슈에 대해 리포팅이 되고 수정이 완료 된 상태로 확인 했다.

 

> 관련 이슈 링크 및 커밋 내용 

github.com/google/dagger/issues/1864

 

2.28 dagger-android(-support) adding AndroidManifest permissions · Issue #1864 · google/dagger

Updating to 2.28 on either of the Android specific Dagger dependencies is adding the following permissions to the AndroidManifest file: github.com

github.com/google/dagger/commit/85f285c24023ae0f20efc4dc1eb0dddb99c1c81a

 

Add minSdkVersion to Lint AndroidManifest.xml · google/dagger@85f285c

Otherwise implicit merged permissions show up in users AndroidManifest. Fixes https://github.com/google/dagger/issues/1864 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED...

github.com

 

Dagger Hilt 2.28 버전 기반으로 작성된 Dagger Hilt 2.28-alpha 의 경우 다음 업데이트가 나오기 전까지는 버그가 해결되지 않기에, Dagger-lint-aar 를 추가로 사용해야 한다.

 

2.28.1 버전에서 수정 되었기에 해당 버전 이상을 적용 하면 해결 된다!

mvnrepository.com/artifact/com.google.dagger/dagger-lint-aar/2.28.1

 

Maven Repository: com.google.dagger » dagger-lint-aar » 2.28.1

A fast dependency injector for Android and Java. Note: There is a new version for this artifact com.google.dagger dagger-lint-aar 2.28.1 // https://mvnrepository.com/artifact/com.google.dagger/dagger-lint-aar compile group: 'com.google.dagger', name: 'dagg

mvnrepository.com

 

 

 

버전을 수정 하지 않더라도 node marker 를 사용하여 임시로 해결할 수 있는 방법도 있다.

developer.android.com/studio/build/manifest-merge#node_markers

 

다중 매니페스트 파일 병합  |  Android 개발자  |  Android Developers

manifest 병합 및 manifest 병합 도구에 관해 자세히 알아보세요.

developer.android.com