Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Tags
- 구현
- ARRANGEMENT
- Android
- 프로그래머스
- FCM
- Inner Class
- 알고리즘
- NextPermutaion
- programmers
- java
- compose
- 삽질로그
- JetpackCompose
- BFS
- Alignment
- broadcastAsUser
- memory leak
- hidden-api
Archives
- Today
- Total
undefined
[Android] hidden-api 본문
오류 해결을 위해 hidden-api 파일을 수정해야 했던 적이 있다. 검색을 해봤지만 의문투성이였던 이 파일의 역할을 정리해본다.
hidden-api 를 검색하면
hidden-api.xml 파일은 Android 프레임워크에 포함된 Java API 중에서 개발자가 사용해서는 안 되는 API를 나열합니다. 이 파일에는 다음과 같은 API가 포함될 수 있습니다. 라고 나온다.
- 개발 중인 API
- 안정적이지 않은 API
- 향후 버전의 Android에서 제거될 API
를 정의하는 파일이라고 하는데.. 여기에 api를 정의하지 않으면 jar에서 api를 찾지 못했다.
이 당시 나는 굉장히 혼란스러웠는데
1. 왜... 프레임워크에 있는 소스 그대로 뽑아서 만든 jar파일인데 함수를 못찾아...?
2. 아니 사용하면 안되는 api를 정의하라며.. 근데 왜 앱은 hidden-api 파일에 정의해야만 찾는거?
결론적으로,
hidden-api.txt에 정의된 api는 개발자가 '직접' 사용하면 안된다 -> 내가 코드로 직접 호출하지만 않으면 된다
jar를 통해 호출할 api는 hidden-api.txt에 정의해두어야 한다. -> 내가 직접 호출하는게 아니고 jar를 통해 호출하니까 괜찮다..
이런 의미였던 것 같다.
즉, hidden-api에는 jar에서 사용해야하는 api들이 정의되어있어야 하며, 이 api들은 개발자가 '직접'사용하면 안된다.
여담으로 hidden-package 라는 파일도 있는데 여기에는 패키지 단위로 정의할 수 있다.
또 @hide와 비슷하지만 hide와는 달리 강제성을 가진다고 한다.
더보기
추가 )
| 기준 | hidden-api | whitelist | graylist | blacklist |
| 용도 | 개발자가 사용해서는 안 되는 API를 나열 | 허용된 항목을 나열 | 허용 또는 차단 여부가 결정되지 않은 항목을 나열 | 차단된 항목을 나열 |
| 포함 내용 | Android 프레임워크에 포함된 API | 허용된 API | 허용 또는 차단 여부가 결정되지 않은 API | 차단된 API |
| 목적 | 개발자가 해당 API를 사용하지 않도록 강제 | 개발자가 해당 API를 사용하도록 허용 | 개발자가 해당 API를 사용해야 하는지 여부를 결정 | 개발자가 해당 API를 사용하지 못하도록 차단 |
반응형
'안드로이드' 카테고리의 다른 글
| [Android] Compose의 Arrangement와 Alignment 비교하기 (0) | 2024.10.22 |
|---|---|
| [Android] 사용자와 Broadcast (0) | 2023.10.15 |
Comments