欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

autojs的nodejs打包成品app經(jīng)驗分享

 更新時間:2023年01月18日 10:17:19   作者:牙叔教程  
這篇文章主要為大家介紹了autojs的nodejs打包成品app經(jīng)驗分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

用nodejs寫腳本, 下面這九步你都要做

第一: vscode安裝插件 ESLint

為什么要安裝eslint?

因為 eslint 可以幫助你找到代碼中的各種bug, 尤其是像autojs這種寫腳本的, java和nodejs混合寫的代碼,

指不定那個類沒有寫全類名, 只寫了類名, 打包以后就會報錯, 或者閃退

安裝eslint依賴

npm i -D babel-loader @babel/core @babel/preset-env

根目錄增加 eslint 配置文件 .eslintrc.json , 看清楚, 文件名最前面有英文句號

{
  "env": {
    "browser": true,
    "commonjs": true,
    "es2021": true,
    "node": true
  },
  "extends": "eslint:recommended",
  "overrides": [],
  "parserOptions": {
    "ecmaVersion": "latest"
  },
  "globals": {
    "android": "readonly",
    "com": "readonly",
    "$autojs": "readonly",
    "androidx": "readonly"
  }
}

根目錄增加 eslint 忽略檢查某些文件, 文件名是: .eslintignore

dist/bundle.js

第二: 使用 babel 把es6轉(zhuǎn)成es5

webpack.config.js 增加 babel 配置

  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env"],
          },
        },
      },
    ],
  },

根目錄增加文件 .babelrc, 看清楚, 前面有點號

{
  "presets": ["@babel/preset-env"]
}

第三 可以復(fù)制我的 webpack 配置文件

webpack.config.js

const webpack = require("webpack");
const TerserWebpackPlugin = require("terser-webpack-plugin");
module.exports = {
  mode: "production",
  entry: "./main.js",
  output: {
    filename: "bundle.js",
  },
  target: "node",
  externals: {
    ui: "commonjs ui",
    rhino: "commonjs rhino",
    lang: "commonjs lang",
    toast: "commonjs toast",
    datastore: "commonjs datastore",
    axios: "commonjs axios",
    app: "commonjs app",
    color: "commonjs color",
    image: "commonjs image",
    device: "commonjs device",
    clip_manager: "commonjs clip_manager",
  },
  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env"],
          },
        },
      },
    ],
  },
  plugins: [
    new webpack.DefinePlugin({
      android: "android",
      java: "java",
      $java: "$java",
      $autojs: "$autojs",
    }),
  ],
  optimization: {
    minimize: true,
    minimizer: [
      new TerserWebpackPlugin({
        extractComments: false,
        test: /.js(?.*)?$/i,
        terserOptions: {
          output: {
            preamble: '"nodejs ui";',
          },
          toplevel: true,
          mangle: false,
        },
      }),
    ],
  },
};

在 optimization 這個字段中, 有一個 mangle 是用來控制壓縮變量的名字的, 就是把長長的變量名, 改成短短的變量名; 設(shè)置為 true 才會有效果;

我設(shè)置的是false, 因為設(shè)置為 true 的話, 我用 defineClass 定義的控件類就找不到了

await $java.defineClass(NoScrollViewPager, { packageName: "org.yashu" });

如果你沒有定義控件類的話, 建議設(shè)置為true

還有一個字段是

 preamble: '"nodejs ui";',

這個字段的作用是, 在bundle.js的文件頭第一行, 添加 nodejs ui;

第四: package.json 增加 build 命令

  "scripts": {
    "build": "webpack --config webpack.config.js"
  },

如果你沒裝 webpack, 那就先安裝 webpack

npm install webpack webpack-cli --save-dev

用webpack打包腳本, 就在命令行執(zhí)行

npm run build

生成的代碼就在

dist/bundle.js

第五: 保存bundle.js到手機

如果只有這一個文件的話, 直接按 F1, 輸入autojs, 選擇保存當(dāng)前文件, 打包的時候就打包單文件;

如果你還有其他依賴, 比如圖片, 那么你就要新建一個項目,

把圖片和bundle.js都復(fù)制一份過去, 然后按 F1, 輸入autojs, 選擇保存項目, 打包的時候就打包這個新建的項目.

為什么不打包寫代碼的那個項目呢?

因為我打包總是失敗, 不是這里錯, 就是那里錯.

第六: 打包成app測試

如果打包之后, 直接閃退怎么辦?

你可以給代碼中, 添加更多的日志, 然后保存到文件, 報錯了就去查日志;

我是不想寫很多日志的, 因此我采用的方法是, 專門打包一個app用來測試, 點擊按鈕之后, 就運行bundle.js

ui.執(zhí)行項目nodejs.click(function () {
  let filePath = ui.項目入口文件路徑nodejs.text().trim();
  let workingDirectory = getParentPath(filePath);
  console.log("workingDirectory =");
  console.log(workingDirectory);
  const execution = $engines.execScriptFile(filePath, {
    arguments: {
      serverEngineId: $engines.myEngine().id,
    },
    workingDirectory:  workingDirectory
  });
  nodejsExecutions.push(execution);
});

如果你的 bundle.js 有別的依賴的話, 注意打印看看工作路徑是否和你預(yù)期的一致:

在bundle.js開頭添加這行代碼, 查看 Node.js 進(jìn)程的當(dāng)前工作目錄

consle.log(process.cwd());

這樣就算bundle.js崩潰了, 我打包的那個app是不會崩潰的, 還可以正常查看日志.

第七: project.json

按 F5 運行的腳本是由 main 字段決定的, 因此我們會修改main字段

"main": "main.js",
"main": "dist/bundle.js",

可以增加 type 字段, 那么代碼默認(rèn)用 nodejs 執(zhí)行

"type": "node"

第八: 三個文件

  • .autojs.build.ignore 打包的時候, 不打包它里面匹配的文件
  • .autojs.source.ignore 它匹配的文件, 不參與加密過程
  • .autojs.sync.ignore 同步的時候, 不給手機傳它匹配的文件

第九: 試試autojs的nodejs寫的app

用webpack壓縮后的腳本大小是 423 KB,

打包app的時候, 我選擇的 CPU 架構(gòu)是 arm64-v8a, 也許有的舊手機不能使用, 舊手機 v7 居多.

app下載體驗: ChatGPT安卓版

app功能

  • AI 聊天
  • AI 根據(jù)文件生成圖片
  • AI 修改圖片內(nèi)容

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文檔, autojs文檔, 最后才是群里問問 ---

以上就是autojs的nodejs打包成品app經(jīng)驗分享的詳細(xì)內(nèi)容,更多關(guān)于autojs nodejs打包成app的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在Node.js中使用HTTP上傳文件的方法

    在Node.js中使用HTTP上傳文件的方法

    這篇文章主要介紹了在Node.js中使用HTTP上傳文件的方法,作者以windows下的visual studio作為操作node的環(huán)境,推薦閱讀!需要的朋友可以參考下
    2015-06-06
  • NPM配置私服構(gòu)建內(nèi)網(wǎng)中央倉庫過程詳解

    NPM配置私服構(gòu)建內(nèi)網(wǎng)中央倉庫過程詳解

    這篇文章主要為大家介紹了NPM配置私服構(gòu)建內(nèi)網(wǎng)中央倉庫過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 使用forever管理nodejs應(yīng)用教程

    使用forever管理nodejs應(yīng)用教程

    這篇文章主要介紹了使用forever管理nodejs應(yīng)用教程,本文介紹了forever的安裝、常用命令等,最有用的莫過于文件改動監(jiān)聽并自動重啟了,這可以增加開nodejs應(yīng)用的效率,需要的朋友可以參考下
    2014-06-06
  • Node.js net模塊功能及事件監(jiān)聽用法分析

    Node.js net模塊功能及事件監(jiān)聽用法分析

    這篇文章主要介紹了Node.js net模塊功能及事件監(jiān)聽用法,結(jié)合實例形式分析了net模塊功能及事件監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Node.js用readline模塊實現(xiàn)輸入輸出

    Node.js用readline模塊實現(xiàn)輸入輸出

    在學(xué)C++的時候,有cout和cin,Java也有println和Scanner控件,Node.js也有如同C++和Java的標(biāo)準(zhǔn)輸入,當(dāng)然,是用JavaScript實現(xiàn)的,它就是Readline模塊。下面這篇文章就給大家詳細(xì)介紹一下readline模塊,來實現(xiàn)Node.js的控制臺輸入輸出。有需要的可以參考借鑒。
    2016-12-12
  • 簡單聊一聊Node.js參數(shù)max-old-space-size

    簡單聊一聊Node.js參數(shù)max-old-space-size

    簡單的說Node.js就是運行在服務(wù)端的JavaScript,下面這篇文章主要給大家介紹了關(guān)于Node.js參數(shù)max-old-space-size的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Node.js前后端交互實現(xiàn)用戶登陸的實踐

    Node.js前后端交互實現(xiàn)用戶登陸的實踐

    本文主要介紹了Node.js前后端交互實現(xiàn)用戶登陸的實踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 談?wù)刵ode.js中的模塊系統(tǒng)

    談?wù)刵ode.js中的模塊系統(tǒng)

    這篇文章主要介紹了node.js中的模塊系統(tǒng),幫助大家更好的理解和學(xué)習(xí)node.js框架,感興趣的朋友可以了解下
    2020-09-09
  • NodeJS如何實現(xiàn)同步的方法示例

    NodeJS如何實現(xiàn)同步的方法示例

    nodeJS最大的特點就是其異步操作,下面這篇文章主要給大家介紹了關(guān)于NodeJS如何實現(xiàn)同步的方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • node進(jìn)程管理工具PM2用法詳解

    node進(jìn)程管理工具PM2用法詳解

    本文詳細(xì)講解了node進(jìn)程管理工具PM2的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論