`
Rudolph
  • 浏览: 67470 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

自定义android.jar(包含internel,hide)

阅读更多

在Eclipse开发中,我们可能会需要引用android的hide或internals或自己添加到源码中的接口

所以公共api包无法满足我们的要求,为了方便开发。需要自定义android.jar,实质上就是把源码中的jar拖出来用,详细步骤如下。

 

在查阅了一些资料后,及验证后整理如下:

 

一、在源码中找到编译好的jar包。

 

地址如下:out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar

这个jar包, 这里面包含了framework中的包括hide和internal以及你自己添加的属性及方法

 

二、找到公共AndroidSDK下的jar包。

 

在你的AndroidSDK目录android-sdk-windows\platforms下找到对应以上源码版本下的android.jar

 

三、合并覆盖jar包。

 

(按照他人提供的资料,直接解压两个jar包,拷贝,然后重新打包的话,我打包的新的android.jar无法正常使用,原因未知)

解决方法如下:同时用rar打开两个jar包, 然后直接将上述的classes.jar里的东西全部拖到android.jar下,覆盖,然后直接打包。这样新的android.jar就可以正常使用了

 

四、取消ADT对internal的使用限制

 

(在尝试之前请先备份ADT jar)

这对Hidden API来说足够了。但对Internal API来说,仍然还有一个包袱:Eclipse的ADT插件。

它限制使用com.android.internal包中的任何类。

1) ADT源码可以下载。因此,删除/修改代码中的某些代码,从而编译出一个新的ADT是可以的。麻烦的是你需要搭建64位Linux系统,下载源码,编译等。它需要花费一些时间。当有新的ADT版本时,你需要重来一遍。

2) 另外的方法就是修改ADT的字节码。用一个类似于“com/android/internax/**”的字符串替换“com/android/internal/**”。

1. 关闭Eclipse

2. 从Eclipse的plugin文件夹中拷贝出ADT插件的jar文件

3. 重命名.jar -> .zip,然后解压至独立的文件夹

4. 找到com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class文件(用UE或其他支持十六进制编辑的工具打开,不要直接用记事本打开修改)

5. 用“com/android/internax/**”替换“com/android/internal/**”

(搜索2A 2A即**这两个字符然后把internal的l的16进制码6C改成78即x,然后添加进jar包即可。

要不然会导致Unsupported major.minor version 8241.8224的错误)

6. 压缩这个文件夹

7. 重命名 .zip -> .jar

8. 用修改后的jar替换原始的ADT jar文件

9. 启动Eclipse

 

五、创建自定义Android平台以方便随时切换工程引用的api版本

 

为了达到这样的灵活性,你需要创建一个新的自定义的Android平台。当不需要访问internal和hidden API时,你只需使用原有的Android平台。当你使用这些API时,你使用自定义的Android平台。

(假设当前操作源码为2.3.1)为了创建一个新的平台,我们需要拷贝android-9文件夹 -> android-9-internals。让我们做一些修正:

1. 删除其中的android.jar

2. 拷贝新的android.jar

3. 修改build.prop文件:

ro.build.version.sdk=9 -> ro.build.version.sdk=-9

ro.build.version.release=2.3 -> ro.build.version.release=2.3.extended

重启Eclipse。并确认你能看到新的平台。

 

最后,享受便捷的开发吧。


分享到:
评论
3 楼 kxl2005 2012-12-06  
ADT 12里面默认已经是"com/android/internal/**”
2 楼 Rudolph 2012-07-26  
revision 写道
>>这一步我验证会导致Unsupported major.minor version 8241.8224的错误,在尝试之前请先备份ADT jar,如果你知道解决方法,请告诉我一声,非常感谢

:这个问题我也遇到了,后来发现用UltraEdit在hex模式下编辑,不要直接修改文本就可以了。另外其实只要在Access Rule里加一个access规则(com/android/**)就可以绕过forbidden规则了

非常感谢
1 楼 revision 2012-07-05  
>>这一步我验证会导致Unsupported major.minor version 8241.8224的错误,在尝试之前请先备份ADT jar,如果你知道解决方法,请告诉我一声,非常感谢

:这个问题我也遇到了,后来发现用UltraEdit在hex模式下编辑,不要直接修改文本就可以了。另外其实只要在Access Rule里加一个access规则(com/android/**)就可以绕过forbidden规则了

相关推荐

    大华android客户端

    在提供的【压缩包子文件的文件名称列表】中,“General_DMSS_Android_Direct_Internel_Basic_IS_Lite_V2.70.1.R.120924.apk”是大华android客户端的安装文件。DMSS(Dahua Mobile Surveillance System)是大华监控...

    fckedit编辑器

    拷贝xalan.jar和serialize.jar到/WEB-INF/lib,问题解决 FCKeditor-java没有很好的解决中文问题需要我们修改它的源代码后重新编译打包打包过程如下: 1 新建一个web工程名字为FCKeditor-java-2.3,然后把...

    大华监控客户端

    本文将围绕大华手机监控客户端安卓版General_DMSS_Android_Direct_Internel_Basic_IS_Lite_V3.00.0.R.130115.apk进行详细介绍,解析其主要功能及特点。 首先,"大华监控客户端"是一款专为Android设备设计的应用程序...

    大华手机客户端

    在提供的【压缩包子文件的文件名称】"General_DMSS_Android_Direct_Internel_Basic_IS_Lite_V3.10.0.R.131114.apk"中,我们可以看到这是大华监控手机客户端的APK安装文件,版本号为V3.10.0.R.131114。"DMSS"可能是...

    vmware命令.doc

    2. **系统信息获取**:`esxcfg-info -a`显示包括硬件、内核、存储和网络在内的所有系统信息,`esxcfg-info -w`则专注于硬件信息。 3. **服务列表**:`esxcfg-firewall -s`用于查看ESX(i)上运行的所有服务。 4. **...

    InternalAppStore::package:管理您自己的内部Android App Store

    管理您自己的内部Android App Store。 • 目录 演示版 Web应用程序的公共版本托管在。 也可以下载最新的Android apk。 产品特点 公开或私有访问商店 用户角色(匿名或验证用户) 帐户限制(仅管理员具有写访问权限...

    超级缩放解析内核Blind Super-Resolution Kernel Estimation using an Internal-GAN

    Abstract Super resolution (SR) methods typically assume that the low-resolution (LR) image was downscaled from the unknown high-resolution (HR) image by a fixed ‘ideal’ downscaling kernel (e.g....

    百度钱包取消订单接口文档.docx

    | order_no | str | 是 | 订单号,由商家自定义,用于唯一标识每笔交易。 | | output_type | Int | 是 | 返回数据格式类型,1表示XML格式,2表示JSON格式。 | | output_charset | int | 是 | 输出字符集编码类型,1...

    windows internal book fifth(第五版) part2

    这第五版中把windows vista 和 windows server 2008等操作系统的内部原理剖析的相当详尽,可以说是一本非常经典的书

    Linux_BT_UART_v3.10_20170314_8821CS_BTCOEX_20170223-1111.tgz

    The default settings of RTK BT chip are H5 protocol, Flow control on, parity even and use internel 32k clock. The default baund rate is 115200. To support H5 protocal,you need to install hci_uart ...

    深入理解windows操作系统(part2)

    windows internel 第四版

    C# Unit Test 访问Internal类型和方法Demo

    在`UnitTestVisitInternal`这个压缩包中,我们可以找到相关的代码示例,包括被测试的`internal`类型和方法,以及使用上述策略之一编写的测试用例。通过这些示例,开发者可以更好地理解如何在实际项目中进行单元测试...

    TEE 规范文档合集

    GPD_TEE Sockets API _v1.0 GlobalPlatform_TEE_PP_v1.2 GlobalPlatform_Trusted_User_Interface_API_v1.0 GPD_TEE_Internal_API_Specification_v1.0 GPD_TEE_Internal_Core_API_Specification_v1.1 ...

    《深入理解Linux网络技术内幕》(英文版).pdf

    《深入理解Linux网络技术内幕》(英文版).pdf 英文名:understanding Linux network internals If you've ever wondered how Linux carries out the complicated tasks assigned to it by the IP protocols--or if ...

    VMware ESX Server 常用命令

    comando: esxcfg-vswitch -D internel vswitch1 这条命令用于删除一个名为 vswitch1 的 PortGroup。 创建 VMkernel Switch comando: esxcfg-vswitch -l esxcfg-vswitch -a vswitch2 esxcfg-vswitch -A "vm kernel...

    FHOG:Felzenszwalb HOG(FHOG)特征提取器,用于C ++

    福格 用于C ++的Felzenszwalb HOG(FHOG)特征提取器。 FHOG广泛用于对象跟踪和对象检测。 @joaofaro和他的KCF跟踪器一起提供C ++实现。 此实现使用OpenCV 1数据结构... // many internel Mats will be pre-allocated.

    VMware_ESX_Server_常用命令行

    - **示例**: `esxcfg-vswitch-D internel vswitch1` - **用途**: 移除交换机上的端口组,适用于网络策略调整或清理工作。 #### 13. 创建vKernel Switch - **命令**: `esxcfg-vswitch-a <交换机名>; esxcfg-...

    IPV6详解卷一 核心协议实现(上)-清晰中文版

    2003年在日本庆应义塾大学获得博士学位,Keiichi Shima(岛庆一)日本Internel lnitiative公司的资深研究人员。他的研究领域是IPv6和IPv6移动性。KAME项目核心开发人员,开发了移动IPv6/NEMO基本支持协议栈:现在正...

    详解VMware 当中出现:无法将 Ethernet0 连接到虚拟网络”VMnet8″的问题

    此文,是通过查阅各位大神的经验总结得出的小小的结论,只是为了记录自己在学习过程中,遇到的问题而写,假若能帮到大家,十分荣幸~ 当VMvare出现 :无法将 Ethernet0 连接到虚拟网络”VMnet8″的问题 ...

Global site tag (gtag.js) - Google Analytics