加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

使ADT支持internal包

(2013-11-19 14:05:43)
标签:

android

sdk

internal

adt

it

上午发布的文章《自行修改android.jar使其包含隐藏api》(点击阅读),按照文章所述替换了 android.jar 后,会发现依然无法使用 com.android.internal 包下的资源,这是由于 ADT 插件作了限制,如果您使用 Intellj IDEA 作为开发环境,那么可以路过这篇文章,IDEA 并不会对 internal 包作任何限制,本篇仅针对使用 eclipse + ADT 方式开发的工程师。

先讲一下原理,ADT 插件针对 internal 包的限制在 AndroidClasspathContainerInitializer.class 文件内,该文件位于 ADT 插件包的 com.android.ide.eclipse.adt.internal.project 空间内
该文件指出了要被过滤的包,即 com.android.internal,仅需要将该字符串替换即可正常使用 internal 包

同样的,我也写了一个脚本来完成这项工作

#!/bin/sh
ADT=$1
OUT=$2
cp $ADT adt.zip
unzip -o adt.zip com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class
./adt_changer -n com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class
zip -r adt.zip com/
mv adt.zip com.android.ide.eclipse.adt_patched.jar
mv com.android.ide.eclipse.adt_patched.jar $OUT
echo "done"

将以上脚本保存为 patchadt.sh 并给予可执行权限,执行时,找到 ADT 插件包,将其路径作为输入参数即可
$ patchadt.sh ~/eclipse/plugins/com.android.ide.eclipse.adt_22.0.5.v201307292155--757759.jar ~/Desktop/
执行完毕后,即可以桌面上看到一个名为 com.android.ide.eclipse.adt_patched.jar 的文件,将该文件替换回 eclipse 插件目录即可,注意改名

此时再打开 eclipse,即会发现,com.android.internal 包可以正常访问了。

这段脚本中使用到的 adt_changer 这个程序是用来修改 class 文件的,需要自行编译
包括早上的文章中的脚本一起,所有的源码均已上传到github,地址如下

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有