如何使用AOP接口对系统接口进行插桩或替换?

如何使用AOP接口对系统接口进行插桩或替换?

HarmonyOS
2024-05-23 22:10:54
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
firecc

ArkTS提供的接口本身没有限制参数是否为系统的接口,只要类和方法在运行时是实际存在的对象,并且方法的属性描述符的writable字段为true,就可以使用提供的接口进行插桩和替换。

获取方法的属性描述符的writable字段:

在ts创建ObjectUtil工具类,实现ObjectGetOwnPropertyDescriptor方法(

ets限制使用):

export class ObjectUtil { 
  static ObjectGetOwnPropertyDescriptor(o: any, p: PropertyKey): PropertyDescriptor | undefined{ 
    return Object.getOwnPropertyDescriptor(o, p) 
  } 
}

ets调用工具类获取方法的属性描述符:

class Test { 
  static data: string = "initData"; 
  static printData(): void { 
    console.log("execute original printData"); 
  } 
} 
// 获取 myMethod 的属性描述符 
let des = ObjectUtil.ObjectGetOwnPropertyDescriptor(Test, 'printData') 
// 判断 writable 字段是否为 true 
if (des && des.writable) { 
  console.log('Method is writable'); 
} else { 
  console.log('Method is not writable or does not exist'); 
}
分享
微博
QQ
微信
回复
2024-05-24 22:01:25
相关问题
如何异步方法进行/替换
316浏览 • 1回复 待解决
如何namespace中的函数替换
365浏览 • 1回复 待解决
运行时AOPdemo测试
494浏览 • 1回复 待解决
基于AOP的代码,都有哪些场景?
278浏览 • 1回复 待解决
如何选择使用同步接口还是异步接口
750浏览 • 1回复 待解决
如何使用接口下载文件
954浏览 • 1回复 待解决
如何Serviceabbility进行调试?
1713浏览 • 1回复 待解决
使用OkHttp访问本地接口会失败?
8565浏览 • 2回复 待解决
鸿蒙系统有没有调用锁屏的接口
5663浏览 • 1回复 待解决
http接口如何设置cookie
770浏览 • 1回复 待解决
LocatorCallback接口,求助
7411浏览 • 3回复 待解决
如何图片进行高斯模糊处理
771浏览 • 1回复 待解决
如何相册图片进行编辑裁剪
794浏览 • 1回复 待解决
如何常见密钥进行格式转换
268浏览 • 1回复 待解决
如何鸿蒙设备进行ui测试?
2177浏览 • 1回复 待解决