# webpack-autojs **Repository Path**: hanshan-by/webpack-autojs ## Basic Information - **Project Name**: webpack-autojs - **Description**: No description available - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-07-14 - **Last Updated**: 2023-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 由于webpack5和4语法不一样, 本项目创建时用的是webpack4, 所以请安装指定版本的webpack 和 cli ``` npm i webpack@4.41.4 -g npm i webpack-cli@3.3.10 -g ``` ## 请手动创建一个dist文件夹 ### 20200920 添加一个字符串替换的正则, 比如 ``` InputLayout.prototype.render = function () { return } ``` 替换为 ``` InputLayout.prototype.render = function () { return `` } ``` 就是在xml两边加上反引号, 其他啥也没动. ## QQ交流群 1019208967 webpack-autojs #### bilibili 本仓库的使用教程 https://www.bilibili.com/video/BV1n7411q7rC/ ### 该视频已作废, 因为是好几月前录制的, 请以README为准 -2. 无法加载文件, 因为在此系统上禁止运行脚本。 cmd管理员执行该代码 `set-ExecutionPolicy RemoteSigned` -1. 需要全局安装webpack webpack-cli `npm i -g webpack webpack-cli --registry=https://registry.npm.taobao.org` 0. 功能: 打包autojs, 不论单个文件, 还是多个文件, 不管有ui还是没ui, 都可以正常打包使用 1. 下载仓库 `git clone https://github.com/snailuncle/webpack-autojs` 2. 命令行 `npm install --registry=https://registry.npm.taobao.org` 3. 复制autojs项目的入口文件路径到`entry.txt` 4. 命令行 `webpack` 5. 打包后的文件在`dist`目录下 其他说明: 1. 主要配置文件就一个`scriptConfig.js` 2. `scriptNamePrefix`是文件前缀, 可以为打包后的文件加一个文件前缀, 比如打包`index.js`, 前缀为`测试_`, 那么打包后的文件名就是`测试_index.js` 3. `header.txt` 该文件中的内容会被添加到打包后的文件的头部, 默认为空. 4. `uiMode` true: ui模式, false 非ui模式 5. `base64`webpack打包后是否base64编码 6. `base64RandomStrLength`base64编码后, 在字符串前面添加的随机字符长度 其他说明2: 1. 目前支持的ui有四种, ` ui.layout, ui.inflate, floaty.rawWindow, floaty.window ` 2. 如果layoutContent是一个字符串变量, 而不是xml的话, 可以尝试, 将`floaty.window`定义为`floatyWindow`, 其他的` ui.layout, ui.inflate, floaty.rawWindow, floaty.window `也一样: ``` let floatyWindow = floaty.window; var w = floatyWindow(layoutContent); ``` 3. loader文件是`node_modules\webpack-autojs-loader\index.js` 其他说明3: 1. webview打包推荐: `https://github.com/molysama/auto.pro` 2. require只能用相对路径, webpack才能正常打包 3. require如果用绝对路径, 请使用global.require代替 如global.require("/sdcard/module1.js") ## 常见错误 1. xml中使用了圆括号, 由于loader使用了正则匹配, 圆括号会影响正则, 请使用中文括号 2. require使用了绝对路径, 请避免使用绝对路径, 3. 如果require用了绝对路径, webpack是找不到的, webpack是电脑使用的工具, 不是手机使用的工具,他找不到/sdcard, 请使用global.require代替 4. 若果xml中有list, 请不要省略this, 因为loader正则中会区分xml中的{{}}中是不是带了this, 来进行不同的处理 5. 变量未定义, 请注意所有变量都要先定义, 再使用; 注意js的变量提升, 导致打包后的运行错误. 6. 如果不定义就使用, 请在变量前面加上 global. 这7个字符, 可以避免一些变量提升导致的错误 7. 如果导入jar或者dex, 使用java对象, 建议直接使用对象的完整名字, 比如`var url = new java.net.URL(myUrl);`, 而不是`var url = new URL(myUrl);` ## js转dex, 可以参考此仓库 [batchJs2Dex](https://github.com/snailuncle/batchJs2Dex) ## so中执行autojs脚本, 可以参考此仓库 [autojsNativeJs](https://github.com/snailuncle/autojsNativeJs)