autojs使用未安装的app资源

简介: 牙叔教程 简单易懂

标准名字


Android插件化


DexClassLoader加载未安装的apk,提供资源供宿主app使用


网上有很多插件化的教程, 我看了很多教程, 都是android的, 没找到autojs的, 所以就翻译了一下, 并且画了一个简单明了的流程图


流程图


autojs版本


9.0.4


教程中可使用到的未安装app资源


  • 图片
  • 颜色
  • 字符串
  • activity_main.xml


代码讲解


1. 得到未安装的apk信息
// resourcePath就是sd卡上的app文件路径
function queryPackageInfo(resourcePath) {
  return context.getPackageManager().getPackageArchiveInfo(resourcePath, context.getPackageManager().GET_ACTIVITIES);
}


2. 创建AssetManager实例
assetManager = Class.forName("android.content.res.AssetManager").newInstance();


3. 添加apk路径
let method = assetManager.getClass().getMethod("addAssetPath", Class.forName("java.lang.String"));
// 反射设置资源加载路径
method.invoke(assetManager, resourcePath);


4. 构造出正确的Resource
resources = new Resources(
  assetManager,
  context.getResources().getDisplayMetrics(),
  context.getResources().getConfiguration()
);


5. 实例化DexClassLoader
// 构造函数
// public DexClassLoader(String dexPath, String optimizedDirectory, String libraryPath, ClassLoader parent)
// dexPath - 就是apk文件的路径
// optimizedDirectory - apk解压缩后的存放dex的目录,在4.1以后该目录不允许在sd卡上
// libraryPath - 本地的library
// parent - 父加载器
new DexClassLoader(resourcePath, mDexDir, null, context.getClassLoader())


6. 加载类
cls = mResourceLoadBean.getClassLoader().loadClass(rClassName);


7. 获取资源id
cls = mResourceLoadBean.getClassLoader().loadClass(rClassName);
resID = cls.getField(fieldName).get(null);


8. 获取资源实体
drawable = mResourceLoadBean.getResources().getDrawable(resourceID);


注意事项

  • DexClassLoader第二个参数, 必须为私有目录, 并且不可为空
  • activity_main.xml的文字居中, 在androi studio中是正常的, 动态加载使用activity.setContentView并没有居中
  • java的类, 转为autojs的类, 内部成员最好挂到this上面
  • assetManager的实例是宿主app创造出来的, 但是一定要反射设置资源加载路径, 为未安装的app, 因为插件化就是用未安装的app资源


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途






相关文章
|
10月前
|
缓存 监控 Android开发
App Trace 快速安装解析(开发者视角)
App Trace 是一款应用性能监控工具,可追踪启动时间、方法耗时及卡顿等指标,助力开发调试与性能优化。支持 Android 和 iOS 平台,提供依赖引入、初始化配置和自动化脚本等快速安装方案,同时包含采样率、本地缓存等高级配置选项。集成后可通过日志检查与测试事件验证功能,注意在发布版本中使用 no-op 版本以减少性能影响,并确保隐私合规。
|
10月前
|
监控 测试技术 Android开发
App Trace技术解析:传参安装、一键拉起与快速安装
本文从开发者视角解析App Trace技术的关键功能与实现方法,涵盖传参安装、一键拉起和快速安装技术。详细介绍了Android和iOS平台的具体实现代码与配置要点,探讨了参数丢失、跨平台一致性及iOS限制等技术挑战的解决方案,并提供了测试策略、监控指标和性能优化的最佳实践建议,帮助开发者提升用户获取效率与体验。
|
9月前
|
存储 人工智能 Android开发
为什么微信发送的APP安装不了,.apk转化为.apk.1
微信发送的APP文件常被改为.apk.1格式导致无法安装,推荐使用夸克或QQ浏览器解决。
1300 14
|
8月前
|
编解码 数据安全/隐私保护
手机录制脚本自动执行, 免root屏幕录制脚本,自动脚本精灵app【autojs】
自动创建保存目录确保路径存在 动态生成带时间戳的文件名避免重复
|
10月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
10月前
|
安全 测试技术 开发者
银行转账模拟器手机版app, 银行转账凭证生成器app,用autojs实现效果【逼真效果】
本内容展示了一套基于Auto.js的银行APP自动化测试脚本和框架,用于学习和研究移动应用测试技术。脚本涵盖登录、转账等功能测试
|
9月前
|
存储 移动开发 监控
App Trace功能实战:一键拉起、快速安装与免提写邀请码的应用实践
App Trace系统通过一键拉起、快速安装和免提写邀请码三大功能,显著提升用户转化率、安装成功率和邀请注册率。结合深度技术实现与优化,助力公司用户增长,成为移动端核心基础设施。
不封号的外卖抢单神器,美团抢单辅助器app,autojs版本源码
这个代码提供了基础框架,包含主循环、订单检测和点击功能。实际使用时需要根据美团骑手AP
|
Windows
【Azure App Service】误删除App Service资源,怎么办?
【Azure App Service】误删除App Service资源,怎么办?
167 2
|
Go PHP 数据安全/隐私保护
【应用服务 App Service】Azure App Service 中如何安装mcrypt - PHP
【应用服务 App Service】Azure App Service 中如何安装mcrypt - PHP
151 2

热门文章

最新文章