如何创建可访问受限API的定制构建android.jar文件?
如何构建可访问受限API的定制Android.jar文件
嘿,关于这个问题我刚好有实操经验!要搞定能访问Android受限API的定制android.jar,核心得靠AOSP(Android开源项目)——毕竟标准Android SDK里的android.jar故意隐藏了系统级的受限API,系统服务类应用根本没法用常规方式构建。下面是一步步的具体操作指南:
1. 搭建AOSP编译环境
- 先根据你用的操作系统(首推Ubuntu这类Linux发行版)配置好AOSP编译环境,安装好必要的依赖包,比如
git、python、对应版本的OpenJDK等等,版本一定要和你打算编译的Android版本匹配 - 克隆对应Android API版本的AOSP源码仓库,记得选对分支(比如要做Android 8.0,就选
android-8.0.0_r1这类对应分支)
2. 编译定制版android.jar
- 进入AOSP源码根目录,先执行命令初始化编译环境:
source build/envsetup.sh - 选择目标编译配置,比如针对通用系统镜像可以用
lunch aosp_x86_64-eng(eng是调试版本,包含完整的系统API) - 开始编译android.jar,直接执行:
make android-sdk-lib;如果需要完整SDK模块,也可以跑make sdk - 编译完成后,定制的jar包会出现在
out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar路径下,把它重命名为android.jar就行
3. 替换本地SDK中的android.jar
- 找到你本地Android SDK的
platforms/android-<API版本>目录(比如android-26对应Android 8.0) - 重要:先备份原来的
android.jar,避免后续出问题没法恢复 - 把刚才编译好的定制
android.jar替换到这个目录里
关键注意事项
- 编译的AOSP版本必须和你使用的SDK API版本严格对应,否则会出现各种兼容性问题
- 用定制android.jar构建的应用,只能在对应的AOSP系统或者定制ROM上运行,普通厂商的ROM大概率会限制这些受限API的调用
- 要是你只需要访问个别特定的受限API,也可以试试反射调用,但稳定性肯定不如直接用定制jar包靠谱
补充说明:系统服务应用无法通过常规Android开发者SDK构建,因其需要访问开发者受限API,因此需将
/platforms/android-<版本>目录下的现有android.jar文件替换为该类定制构建的android.jar文件
内容的提问来源于stack exchange,提问作者eomercelik
相关产品推荐
相关产品推荐

