autojs热更新dex

简介: autojs热更新dex

牙叔教程 简单易学


声明

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


使用场景

热更新


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));
}


参考文章


声明

部分内容来自网络



相关文章
|
8月前
|
JavaScript Android开发
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---js文件打包发布成APK文件
1081 0
AutoJs4.1.0实战教程---js文件打包发布成APK文件
|
5月前
|
图形学 数据安全/隐私保护 iOS开发
Unity与IOS⭐Xcode打包,上架TestFlight的完整教程
Unity与IOS⭐Xcode打包,上架TestFlight的完整教程
|
监控 Android开发
cordova实现热更新
cordova实现热更新
442 0
cordova实现热更新
|
算法 安全 C#
Unity——热更新浅析
Unity——热更新浅析
129 0
|
Web App开发 开发者
Chrome 技术篇-将程序打包为crx文件,chrome插件的打包方法。
Chrome 技术篇-将程序打包为crx文件,chrome插件的打包方法。
719 0
Chrome 技术篇-将程序打包为crx文件,chrome插件的打包方法。
|
Android开发
Ant 打包安卓apk(2)-手写版
Ant 打包安卓apk(2)-手写版
129 0
|
Java 开发工具 Android开发
Ant 打包安卓apk(1)-手动档
Ant 打包安卓apk(1)-手动档
160 0
|
Java 编译器 开发工具
cocos打包安卓: gradlew打包Android环境搭建
cocos打包安卓: gradlew打包Android环境搭建
611 0
|
安全 Java Android开发
安卓APK及framework代码反编译过程
本文仅是实验使用,并不支持商业用途! 最近想做一下反编译。
181 0
|
XML Android开发 数据格式
Ant打包安卓apk(5)-多渠道(配置)打包方案 ant脚本
不废话, 直接上货 <?xml version="1.0" encoding="UTF-8"?> <project name="MyProject" default="init" basedir="."> <description> simple example build file </description> <!-- 使用第三方的ant包,使ant支持for循环--> <taskdef resource="net/sf/antcontrib/antcontrib.properties"> <classpath> <pathelement l
278 0

热门文章

最新文章

下一篇
开通oss服务