AIGameAIGame
首页
API文档
UI框架
API实例
UI实例
下载软件
首页
API文档
UI框架
API实例
UI实例
下载软件
  • API文档

    • $global - 全局函数
    • $act - 手势动作
      • 01.手势动作 - $act
      • 02.节点选择器 - UiSelector
    • $ag - 图色框架
    • $app - 应用操作
    • $arc - 悬浮菜单按钮
      • 01.悬浮菜单 - $arc
      • 02.悬浮容器 - MenuBody
      • 03.菜单按钮 - MenuItem
    • $bus - 消息总线
    • $color - 颜色操作
    • $crypt - 加密算法
    • $device - 设备信息
    • $dex - dex,jar,so文件加载
    • $draw - 全局绘制
    • $engine - 脚本引擎
      • 01.任务信息 - JsTaskInfo
      • 02.脚本对象 - $task
    • $fc - 文件选择器
    • $file - 文件操作
    • $floaty - 悬浮窗
    • $img - 图片操作
    • $log - 日志框架
    • $ocr - 文字识别
    • $res - 资源管理器
      • 01.资源管理器 - $res
      • 02.资源操作 - ResManager
    • $root - ROOT与Shell命令
    • $screen - 屏幕操作
    • $storage - 应用内存储
    • $str - 字符串工具类
    • $sys - 系统操作
    • $thread - 并发编程
    • $tip - 对话框
    • $tts - 文字阅读

$dex 返回

Dex与Jar加载器

loadDex(dexPath)

版本:1.1.0 加载dex文件
$dex中存在一个内置的缓存机制,被加载的dex文件会被生成一个唯一的id作为类加载器的标识,
在起初加载dex文件的时候会保存id和类加载器对象
当再次加载相同的dex文件时,会通过id直接取得类加载器对象来执行类
如果想重新加载需要调用$dex.clear()清除id和类加载器

  • 参数 : dexPath {string} dex文件路径
  • 返回 : DexClassLoader
$dex.loadDex(path);
 //开始使用dex中的类

loadJar(jarPath)

版本:1.1.0 加载jar文件
$dex中存在一个内置的缓存机制,被加载的jar文件会被生成一个唯一的id作为类加载器的标识,
在起初加载jar文件的时候会保存id和类加载器对象
当再次加载相同的jar文件时,会通过id直接取得类加载器对象来执行类
如果想重新加载需要调用$dex.clear()清除id和类加载器

  • 参数 : jarPath {string} jar文件路径
  • 返回 : DexClassLoader
$dex.loadJar(path);
 //开始使用jar中的类

loadDex(options)

版本:1.1.0 加载dex/so文件
值得注意的就是so文件也有很多架构(x86_64,arm64_v8a等),根据自己手机的架构来选择需要加载的so文件(安卓特性);
此外:如果dex(java代码)中已经使用System.load(so);加载过的so文件不要重复加载,因为so文件只能被类加载器加载一次(安卓机制)

  • 参数 : options {LoadDexConfig} 加载配置
  • 返回 : DexClassLoader
let options = {
     path:"dexOrJarPath",//jar或者dex文件路径
     so:[
          {path:"soPath", load:false},
          {path:"soPath",//so文件路径 load:false //是否执行系统加载System.load(so); },
          //...
     ]
 }

 $dex.loadDex(options);

 //开始使用dex里面的类

loadJar(options)

版本:1.1.0 加载jar/so文件
值得注意的就是so文件也有很多架构(x86_64,arm64_v8a等),根据自己手机的架构来选择需要加载的so文件(安卓特性);
此外:如果dex(java代码)中已经使用System.load(so);加载过的so文件不要重复加载,因为so文件只能被类加载器加载一次(安卓机制)

  • 参数 : options {LoadDexConfig} 加载配置
  • 返回 : DexClassLoader
let options = {
     path:"dexOrJarPath",//jar或者dex文件路径
     so:[
          {path:"soPath", load:false},
          {path:"soPath",//so文件路径 load:false //是否执行系统加载System.load(so); },
          //...
     ]
 }

 $dex.loadJar(options);
 //开始使用jar里面的类

clear()

版本:1.1.0 清除缓存的类加载器
$dex中存在一个内置的缓存机制,被加载的jar/dex文件会被生成一个唯一的id作为类加载器的标识,
在起初加载jar/dex文件的时候会保存id和类加载器对象
当再次加载相同的jar/dex文件时,会通过id直接取得类加载器对象来执行类
如果想重新加载需要调用$dex.clear()清除id和类加载器
如果只是单纯的加载dex/jar文件,这个函数可以随便调用;
但是如果加载了so文件,这个函数最好只使用一次,因为so文件只能被一个类加载器加载一次
就算不小心把加载过so文件的类加载器清空了也没有关系,重启app重新运行即可。

$dex.clear();

delete()

版本:1.1.1 删除缓存文件
dex加载必须要在安卓的私有目录(安卓机制),所以每次加载的dex文件都会放在私有目录下面
然而我们最主要只是拿到类加载器,当加载完后dex文件也就不需要了,所以可以调用这个函数来删除dex文件

$dex.delete();
最近更新:: 2025/5/14 08:43
Contributors: 孑小白
Prev
$device - 设备信息
Next
$draw - 全局绘制