前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一种更优的方式获取私有API

一种更优的方式获取私有API

作者头像
用户2930595
发布2018-08-23 10:08:39
6370
发布2018-08-23 10:08:39
举报
文章被收录于专栏:difcareer的技术笔记

编译私有的Android SDK中讲述了如何通过编译一个完整的SDK来获取一些稀有的API,但是这个方法有几点不足:

  1. 编译耗时
  2. 不够灵活,换一个API版本难道要再编译一个对应的SDK?

其实私有API仅仅是为了在开发过程中欺骗编译器而已,你可以使用反射,但有一堆代码要写,运行时还影响了效率。

我想到一种更优的方法:将需要开发的API单独编译一个jar,这样和特定SDK版本脱离,还直接从现有编译结果里面拼凑一下即可得到。在项目中已provided方式引入这个jar即可欺骗编译器。

android.os.ServiceManager这个没有包含在Google提供的SDK来说明问题:

  1. 在AOSP的编译结果中找到编译的class文件: out/target/common/obj/JAVA_LIBRARIES/...
  2. 将class文件copy到一个单独的目录: cp ...../android/os/ServiceManager.class android/os/ServiceManager.class
  3. 打成jar包: jar cvf sdkpatch.jar .

看下效果:

结果

  1. copy到项目中, provided方式依赖。

如果需要其他API,参考上面操作即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.05.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档