안드로이드 의 hidden(@hide) API와 internal(com.android.internal) API 사용에 관하여
ㆍ작성자
그로치
ㆍ작성일
2012-04-12 (목) 21:54
ㆍ추천: 0 ㆍ조회: 1400
ㆍIP: 111.xxx.50
일반적인 방법으로는 안되는것 같고,
API의 jre를 수정해서 사용한다는 글을 본것도 같은데요.
hidden API를 사용할 수 있는 방법이 있을까요?
사용하고자 하는 메소드는
WifiManager 의 startScanActive() 입니다.
들풀
2012-04-13 17:27
44기 교육때 받으셨던, 5일차 교육 자료의 PDF 파일을 참조하시면 됩니다.
---
hidden API를 사용하기 위해서는 5일차 교육자료의 81 페이지의 android.jar 대신에
82페이지의 빨간색 박스안에 보이는 안드로이드 Runtime상에 존재하는 실제 jar 파일들로
대체를 해야합니다.
Runtime에서 사용하는 jar를 얻기 위해선, AOSP 소스를 full build 하신후,
빌드 산출물에서 필요한 jar를 Eclipse에서 User Libraries로 등록하셔야 합니다.
관련한 내용은 44기 교육 자료의 96 페이지부터 있습니다.
---
위의 방법으로 hidden API를 사용하는 것이 가능은 하지만,
호환성 문제가 있다는 것을 유념하셔야 할 것입니다. 수고하세요.
그로치
2012-04-13 18:01
《Re》들풀 님 ,
답변감사드립니다.
말씀하신 방법으로 다행이 잘 찾아서 해보고있습니다.
방법은 약간 다른데, Runtime 에서 사용되는 jar을 얻는 방법이 두가지가 있더군요. full build 하려고하다가 안드로이드 VM에서 DDMS로 보면 system/framework/framework.jar 파일이 android.jar의 런타임이란 이야길 들어서 해당 런타임 풀어서 사용중입니다.
찾아보고 글을 썻어야하는데 번거롭게해 드려서 죄송합니다.
들풀
DDMS를 통한 GUI 오퍼레이션이나, adb pull을 사용한 콘솔 오퍼레이션을 통해 에뮬레이터의 system/framework 디렉토리에서 가져올 수 있는 jar 확장자를 가진 파일들은 dex으로 이미 변환된 상태의 jar 파일입니다. 그것을 사용하시면 안될 겁니다.~
4/13 19:26
그로치
2012-04-16 10:00
《Re》들풀 님 ,
아 그 부분은 dex2jar이라는 프리웨어가 있어서해당 프로그램으로 변환해서 사용했습니다.
지금 갤럭시S2에는 올려서 확인은 해 봤는데요, startScanActive() 가 일반적인 startScan() 보다 훨씬 빠르다고 해서 사용해보고 있습니다만 큰 차이를 모르겠네요.