美文网首页
autojs热更新dex

autojs热更新dex

作者: 牙叔教程 | 来源:发表于2021-05-09 17:58 被阅读0次

牙叔教程 简单易学

声明

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

使用场景

热更新

autojs版本

8.7.7-0

热更新

热更新是App常用的更新方式。简单来说,就是在用户通下载安装APP之后,打开App时遇到的即时更新。

代码简介

文件版本号和下载地址信息放在语雀,
语雀可以随时更改信息
语雀文章url是不变的

脚本执行的时候,
先从语雀获取更新信息,
然后对比版本号
然后决定是否更新文件

文件放在码云

代码讲解

1. 获取dex更新信息
let 获取dex更新信息 = require("./获取dex更新信息");
let dex更新信息 = 获取dex更新信息();
log(dex更新信息);
2. 比较文件版本号
let localFileVersion = "0.0.1";
let needUpdate = isNeedToUpdateFile(localFileVersion);
3. 卸载所有dex和jar, 下载新dex, 加载dex
runtime.unloadAll(true);
let filePath = 下载新版dex();
runtime.loadDex(filePath);
4. 执行dex
new Packages["测试"]()();

获取语雀文章内容

1. 加载类
runtime.loadJar("./jsoup.jar");
importClass(java.io.IOException);
importClass(java.text.ParseException);
importClass(org.jsoup.Jsoup);
importClass(org.jsoup.nodes.Document);
importClass(org.jsoup.select.Elements);
importClass(org.jsoup.safety.Whitelist);
2. 获取bookId
function getBookId() {
  let dexVersionurl = "https://www.yuque.com/yashujs/di90k3/gamwoe";
  let r = http.get(dexVersionurl);
  r = r.body.string();
  let content = r.match(/window\.appData =.*/);
  if (content) {
    let appData = content[0].replace("window.", "");
    eval(appData);
    let bookId = appData.book.id;
    if (bookId) {
      return bookId;
    }
    throw new Error("没有获取到bookId");
  }
  throw new Error("没有匹配到appData");
}
3. 获取页面内容
function getPageContent(bookId) {
  log("bookId = " + bookId);
  let url =
    "https://www.yuque.com/api/docs/gamwoe?book_id=" +
    bookId +
    "&include_contributors=true&include_hits=true&include_like=true&include_pager=true&include_suggests=true";
  let r = http.get(url);
  r = r.body.json();
  let content = r.data.content;
  return content;
}
4. 获取网页所有文字
function StripHT(strHtml) {
  //获得带有保留的br和p标签的漂亮打印的html
  let prettyPrintedBodyFragment = Jsoup.clean(
    strHtml,
    "",
    Whitelist.none().addTags("br", "p"),
    new Document.OutputSettings().prettyPrint(true)
  );
  // 通过禁用prettyPrint获得带有保留的换行符的纯文本
  return Jsoup.clean(prettyPrintedBodyFragment, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
}

参考文章

声明

部分内容来自网络

给我个面子小图.jpg

相关文章

  • autojs热更新dex

    牙叔教程 简单易学 声明 本教程仅用于学习, 禁止用于其他用途 使用场景 热更新 autojs版本 8.7.7-0...

  • 热更新预言

    热更新 参考链接 安卓热更新之Nuwa实现步骤 Android动态加载Dex机制解析 https://github...

  • Autojs : Dex加密混淆

    GitHub 魔改 Rhino 源码 使用IDEA 运行 java 进行 js 转 dex https://git...

  • 动态加载jar、dex 热更新

    Android动态加载jar,dex,apk文件 坑 1.程序没给分配sd卡权限 mContext.getClas...

  • dex,odex,热更新原理简述

    APK执行过程 代码编译形成APK的过程中,其实在里面生成了一个classes.dex文件,解压APK文件如下图:...

  • 2019阅读记录

    [toc] 2019阅读记录 热更新 ClassLoader理解 DexElements 由一个个dex文件组成的...

  • 安卓面试总结——提升

    1.热修复的几种方式 1.通过更改dex加载顺序实现热修复 热修复是基于dex分包方案,和Android虚...

  • Android插件化开发笔记

    目前主流的技术:插件化,热更新,增量更新 动态加载 1.解决一个dex不能加载65535个方法的问题2.解耦合3....

  • Android热修复简单总结

    1. Dex修复 Dex修复分为热部署底层热替换与冷部署重启 1.1 热部署底层替换 直接在native虚拟机层替...

  • 热修复Dex替换

    热修复 两种loader load不同的dex 首先需要将修复的class打包成dex(需要用dex工具) Sys...

网友评论

      本文标题:autojs热更新dex

      本文链接:https://www.haomeiwen.com/subject/qjhvdltx.html