AOSP의 일련의 커밋에 따르면 Google은 문서화되지 않거나 숨겨진 API에 대한 액세스를 Android P에서 제한하기 시작할 수 있습니다. 많은 유명 브랜드 앱은 숨겨진 API를 사용하여 기능을 강화하므로 그 효과가 널리 퍼질 수 있습니다.
2018년 2월 28일 업데이트: Google은 오늘 변경 사항을 확인하는 블로그 게시물을 게시했습니다. 자세한 내용은 기사 끝부분에 있습니다.
일부 안드로이드 매니아들은 추측 Android의 다음 버전에는 어떤 디저트 이름이 붙여질지, 그 뒤에서 흥미로운 개발이 진행되고 있습니다. 우리는 하나를 발견했습니다 주목할 만한 몇 가지 Android P에는 곧 출시될 기능이 있지만 Android 오픈 소스 프로젝트(AOSP)에서 최근 발견된 내용은 훨씬 더 흥미로운 것으로 입증되었습니다. 이러한 최근 커밋에 따르면 애플리케이션은 Android SDK에 문서화되지 않은 API(예: javadoc의 @hide 속성으로 표시된 API)에 액세스하는 것이 제한될 수 있습니다.
이것이 중요한 이유
Android SDK(소프트웨어 개발 키트)는 개발자에게 새로운 Android 애플리케이션을 테스트하고 빌드하는 데 필요한 API 라이브러리와 도구를 제공합니다. Android가 새로 출시될 때마다 Android SDK를 통해 개발자가 사용할 수 있는 새로운 API가 많이 제공됩니다. 앱에 사용할 수 있는 API는 개발자가 설정한 compileSDKVersion에 따라 다릅니다. 그렇기 때문에 구글은 새로운 Play 스토어 요구사항 이는 매우 중요하므로 애플리케이션을 최신 API를 사용하여 업데이트하고 마이그레이션해야 합니다.
Google 호스트 문서 페이지 각 클래스와 각 API 레벨에서 사용 가능한 모든 메소드에 대해. 이는 공식 Android SDK에서 사용할 수 있는 문서화된 API 세트입니다. 최근 출시된 Android 엔지니어의 Android SDK 검색 앱과 같은 Android 앱을 사용하여 쉽게 클래스 목록을 찾아볼 수 있습니다. 제이크 와튼.
가격: 무료.
4.1.
그러나 각 Android 릴리스에서 사용 가능한 모든 API가 Google에 문서화되어 있거나 공식 Android SDK에서 사용 가능한 것은 아닙니다. 종종 다음과 같은 유용한 API가 있습니다. 문서화되지 않은, 그럼에도 불구하고 매우 유용합니다. 개발자가 문서화되지 않거나 숨겨진 API를 사용하여 앱을 구축하는 것은 권장되지 않지만, 특정 기능을 제공하려는 경우 대안이 없기 때문에 많은 개발자가 그렇게 합니다. 숨겨진 API나 문서화되지 않은 API를 사용하는 개발자도 경쟁 우위를 점할 수 있습니다. Android에서 제공하는 API를 고수하는 경쟁업체가 제공하는 기능을 제공할 수 있기 때문입니다. SDK—할 수 없습니다.
문서화되지 않은 API를 활용하는 앱 목록을 제공할 수는 없지만(개발자는 아마도 공유하지 않을 것입니다) 경쟁사에게 유리할 수 있기 때문에 사용하는 것) 목록은 아마도 크기가 큰. 따라서 숨겨진 API에 대한 접근을 금지하는 것이 중요하다고 결론지었습니다. 마크 머피(Mark Murphy) 창립자 커먼즈웨어, 동의합니다:
@hide 주석이 달린 항목에 대한 액세스를 대량으로 금지하는 것이 실현된다면 큰 문제가 될 것이라는 평가에 동의합니다. 주요 기능의 일부로 이러한 항목에 액세스하는 앱은 거의 없기를 바랍니다. 그러나 많은 유명 브랜드 앱이 때때로 직접 또는 라이브러리를 통해 이를 사용하는 것으로 의심됩니다.
안드로이드 P에서는 무슨 일이 일어나고 있는 걸까?
이러한 다가오는 변경 사항은 XDA Senior Recognized Developer가 처음으로 언급했습니다. rovo89, 개발자는 Xposed 프레임워크. 그는 나에게 커밋 두 개를 지적했는데, 그 중 하나는 어느 되었습니다 병합된, 'hiddenapi'라는 새로운 빌드 도구를 소개합니다. 이 도구는 다음과 같은 경우 DEX 파일 내 모든 클래스 멤버의 액세스 플래그를 수정합니다. 해당 서명은 입력 그레이리스트 또는 블랙리스트에 나타나며, 그렇다면 표시된 메소드는 제한된 내부 API로 처리됩니다. 입장. 다른 커밋은 API 블랙리스트가 작동하는 방식을 설명합니다. 접근을 막는다 부팅 클래스 개발자가 정적 링크, 리플렉션 및 JNI를 통해 액세스할 수 있는 앞서 언급한 'hiddenapi'로 표시된 메서드 및 필드입니다.
rovo89에 따르면 Android P에서 이러한 두 가지 변경 사항의 최종 결과는 다음과 같습니다.
이러한 커밋이 병합되면 앱이 더 이상 숨겨진 API를 사용/액세스할 수 없음을 의미합니다. AOSP에서 @hide 주석이 추가되어 AOSP의 일부가 아닌 클래스, 메소드 및 필드 공식 SDK. 해당 커밋을 쉽게 되돌리거나 모듈이 다음을 수행하도록 허용할 수 있으므로 Xposed 모듈에는 문제가 되지 않습니다. 이러한 API에 액세스하세요. 하지만 숨겨진 API를 활용하는 앱이 많이 있으며, 이러한 앱은 다음 단계에서 실패합니다. 미래.
실제로 추가 약속은 이것이 Google이 계획하고 있는 것일 수 있음을 보여줍니다. 이것 저지르다 다음과 같이 말합니다.
이 특정 커밋은 3개의 작은 커밋을 위해 폐기되었기 때문에 병합되지 않았지만 커밋 메시지는 이러한 변경의 목적을 설명합니다. 또 다른 세트 커밋하다 Google이 비공개 API를 사용하려는 개발자에게 대안을 제안할 것임을 보여줍니다.
그러나 특정 숨겨진 API에 대한 대안이 없는 경우가 많습니다. XDA의 우리는 여기에서의 경험을 통해 다음과 같이 말할 수 있습니다. 불행하게도 이러한 변화로 인해 일부 혁신적인 앱이 종료될 수도 있고, 일부 유명 앱에서 사용량을 줄여야 할 수도 있습니다. 기능. 이번 변화는 최근의 변화와 정신이 비슷해 보입니다. 접근성 서비스 단속 (다행히 그랬다. 일시중지됨 Google이 혁신적인 용도를 평가한 결과). 문서화되지 않은 API를 활용하는 대부분의 앱은 좋은 이유로 이를 사용하지만, 악의적인 목적으로 이를 오용하는 앱도 있을 수 있습니다.
이 때문에 Google은 소수의 사용자로부터 사용자를 보호하기 위해 Android P의 모든 숨겨진 API에 대한 액세스를 잠글 수 있습니다. 이것이 사용자에게 얼마나 많은 영향을 미칠 수 있는지 말하기는 어렵지만 개발자라면 숨겨진 API의 혁신적인 사용을 찾기 위해 AOSP를 살펴보는 것을 고려한다면 다음을 수행할 수 있습니다. 재고해 보세요.
업데이트: Google에서 확인함
안에 블로그 게시물 2월 28일 오늘 게시된 내용에 따르면 Google은 이러한 변경 사항을 확인했습니다. 사용자의 충돌 위험을 언급하고 이후 개발자에게 긴급 수정 사항을 출시하도록 강요하는 Google 회사는 개발자가 비 SDK에 액세스하는 것을 점차적으로 방해하고 있다고 말합니다. 인터페이스. Android P부터 SDK의 Java 언어 인터페이스까지 제한이 확장됩니다.
회사는 "일부 비 SDK 방법 및 필드가 제한될 것"이라고 밝혔지만 어떤 것이 제한되는지는 자세히 설명하지 않았습니다. 처음에는 거의 사용되지 않는 인터페이스에 제한이 집중될 예정이며, 한동안 회사에서는 이를 허용할 것입니다. 개발자는 기술적으로 SDK 방법으로 전환하는 것이 비 SDK 방법 및 필드를 계속 사용해야 합니다. 도전적인. 그러나 결국 제한 사항이 확대될 것이므로 비 SDK 방식을 사용하는 앱 개발자는 Android P에 대비하여 가능한 한 빨리 전환해야 합니다. SDK 대안이 없는 방법에 대해 Google은 개발자에게 버그 추적기 더 많은 정보와 함께.
표면상으로는 곧 출시될 다음 개발자 프리뷰를 통해 개발자는 최종 릴리스 전에 블랙리스트나 그레이리스트에 대해 기존 앱을 테스트할 수 있습니다.