位置: 编程技术 - 正文
推荐整理分享使用android hide API(使用Android Go的手机),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:使用权资产的账务处理,使用灭火器时要对准火焰的什么部位喷射,使用灭火器人要站在上风口还是下风口,使用其他机动车号牌行驶证扣几分,使用驱动器u盘之前需要格式化,使用Android Go的手机,使用灭火器时要对准火焰的什么部位喷射,使用驱动器u盘之前需要格式化,内容如对您有帮助,希望把文章链接给更多的朋友!
Android有两种类型的API是不能经由SDK访问的。
第一种是位于com.android.internal包中的API。我将称之为internalAPI。第二种API类型是一系列被标记为@hide属性的类和方法。从严意义上来讲,这不是一个单一的API,而是一组小的被隐藏的API,但我仍将其假设为一种API,并称之为hiddenAPI。
使用hide具体步骤分为:调用hideapi和获得使用hideAPI权限
第一,调用hideAPI第一种方法就是使用Java反射机制了,可以利用这种反射机制访问存在访问权限的方法,另一种方法就是或修改其域自己去掉Android源码中的"@hide"标记,然后重新编译生成一个SDK。
1.1反射法,简单,但是运行时间较长请参考: 在Java中的反射机制,被称为Reflection(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了)。它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法。Reflection机制允许程序在正在执行的过程中,利用Reflection APIs取得任何已知名称的类的内部信息,包括:package、 type parameters、 superclass、 implemented interfaces、 inner classes、 outer classes、 fields、 constructors、 methods、 modifiers等,并可以在执行的过程中,动态生成Instances、变更fields内容或唤起methods。
1.2生成新的android.jarwith hide API,复杂,调用hideapi和一般API一样基于以下事实:当你使用AndroidSDK进行开发的时候,你引用了一个非常重要的jar文件——android.jar。它位于AndroidSDK平台的文件夹中(SDK_DIR/platforms/platform-X/android.jar,其中,X表示API等级)。这个android.jar移掉了com.android.internal包中所有的类,也移掉了所有标记有@hide的类,枚举,字段和方法。
但当你在设备上启动应用程序时,它将加载framework.jar(简单来说,它和android.jar等同),而其未移掉internalAPI和hiddenAPI。(但它对开发者来说,并不能友好地访问)。
请参考: 选择你的目标平台X
2. 创建目标平台X的模拟器
3. 启动模拟器,下载/system/framework/framework.jar
adb pull /system/framework/framework.jar
4. 重命名framework.jar-> framework.zip
5. 从framework.zip中抽取classes.dex
6. 使用dex2jar工具,将其转换成classes.jar
dev2jar classes.dex
7. 重命名classes.jar-> framework-classes.zip
8. 拷贝android.jar–> custom-android.zip
9. 解压custom-android.zip至custom-android文件夹
. 将framework-classes.zip中所有文件拷贝至custom-android文件夹(覆盖存在的文件)
. 压缩custom-android文件夹成original-android.zip
. 重命名original-android.zip->original-android.jar
替换原来的android.jar(注意备份!!)
但是:在android5.0下Android lollipop framework.jarhas noclasses.dex
api,但是有些基础包没有例如java,javax
原先无hideapi的android.jar对比,目录:android-sdk/plaforms/android-xx/android.jar(ubuntu下双击就可以打开jar)
对比两个jar
sdk的android.jar
有javajavax
无hideapi
下载的android-5.0.1_r1.jar
无javajavax
有hideapi
所以不能用下载的android.jar直接替代原有的android.jar
而是把android-5.0.1_r1.jar中需要用的class拖入原有的android.jar中即可
原先用反射实现的方法可以像其他API一样调用!!
第二,获得使用hideAPI权限无论是反射还是使用自编译的android.jar,只能解决调用隐藏API的问题,而无法越过权限检查。
可能会报类的错误:
”Neither user nor current process hasandroid.permission.LOCATION_HARDWARE“
原因:
This permission is only given to system apps. In order to get thispermission, your app:
must be signed with the system certificates. Thesecertificates are generally available only to the devicemanufacturers.
be installed in /system/apppartition.
解决方案:
order to install an app as a system app on your Androiddevice, your device must be rooted.
Dialog背景色透明效果轻松实现 finalDialogdialog=newDialog(context);dialog.show();dialog.getWindow().setBackgroundDrawable(newColorDrawable(0));dialog.setContentView(R.layout.login);From:
序列化和反序列化技术 序列化和反序列化技术转载:
android内核剖析-----activity启动流程 主要类:ActivityThread(一个应用的启动入口)ActivityServiceManager(负责所有activity的管理)每个应用的启动都会产生一条ActivityThread线程负责维护该应用当ActivityThr
标签: 使用Android Go的手机
本文链接地址:https://www.jiuchutong.com/biancheng/374586.html 转载请保留说明!友情链接: 武汉网站建设