专栏首页difcareer的技术笔记一种更优的方式获取私有API

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

编译私有的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,参考上面操作即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 最新版MacOS(10.13.2)编译Android 4.4.4源码

    网上搜一下Mac编译Android源码,能搜到很多,但最新版的MacOS(10.13.2)编译Android4.4.4的却没有,本文记录我的编译过程。

    用户2930595
  • 编译Android7.1.x源码

    编译过程基本和ubuntu14.04编译Android4.4源码一致,部分地方需要注意一下。

    用户2930595
  • 如何压缩ndk的so库

    用户2930595
  • 编译Android7.1.x源码

    编译过程基本和ubuntu14.04编译Android4.4源码一致,部分地方需要注意一下。

    用户2930595
  • react 同构初步(2)

    现在已经有了三条指令,做项目时,必须启动三个窗口,给开发带来了不便。npm上的开源库concurrently把它们整合为一条命令,可以提升开发体验。

    一粒小麦
  • 遇到VerifyError束手无策?

    VerifyError通常是修改字节码引起的类加载阶段的验证错误。类加载过程分三个阶段,分别是加载、链接和初始化,而链接阶段又可细分为验证、准备和解析三个阶段。...

    Java艺术
  • yml字符串值写法,单双引号区别,换行用法

    路过君
  • webpack常用loader和plugin及打包速度优化

    mcq
  • 这些优秀的 Spring Cloud 开源软件,你知道几个?

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线...

    lyb-geek
  • Android数据库中事务操作方法之银行转账示例

    本文实例讲述了Android数据库中事务操作方法之银行转账功能。分享给大家供大家参考,具体如下:

    砸漏

扫码关注云+社区

领取腾讯云代金券