安卓插件开发混合开发

安卓脚本插件开发与 Java-JS 混合编程:扩展自动化平台能力

插件本质就是一个 apk:IDEA 新建插件工程、目录结构(jarlibs/solibs/resources/jslibs)、打包 release.apk、脚本 loadDex 调用,外加 Java-JS 混合开发模式。

约 5 分钟

插件开发和 Java-JS 混合开发

安卓自动化脚本里,操作系统底层、Android 原生 API、自己写的 Java 算法,纯 JS 够不着。EasyClick 有两条路:插件开发,用 Java 写 apk,脚本再引用;Java-JS 混合开发,Java 和 JS 放在一个工程里编,js 直接调 java。

EasyClick AI Agent 工作流画布展示自定义插件能力扩展

插件本身就是一个 apk,和普通 Android 开发一样。可以用 Android Studio 打包,也可以用 EasyClick 的 IDEA 模板。在 IDEA 里新建项目,选「EasyClick 插件工程」,下一步做完,会生成对应的 java 类和配置。目录是:

路径 作用
src/js/main.js js 调用插件相关方法的测试入口
src/com/ Java 源码,PluginClz 类是默认生成的插件入口类
libs/jarlibs 三方引用 jar 包,会被合并到插件中
libs/solibs so 封装文件,会被编译到插件的 lib 文件夹
libs/resources 资源文件,会被编译到插件的 resources 文件夹
libs/jslibs JS 类库文件,不会编译到插件中,仅用来测试和调用

写插件时主要看 java。有 jni 调用,把 so 放到 libs/solibs。PluginClz 是默认生成的入口类,test 是默认方法,调用方式看 main.js。运行走菜单「EasyClick 开发工具 - 运行工程」,手机要先连上。打包走「EasyClick 开发工具 - 打包插件 - 编译插件 apk 文件」,结果在运行日志里,一般是 build/release.apk。正常插件只有几到几百 kb。包特别大,多半是 libs 里放进了不该合并的文件。脚本里用它分三步:apk 放到脚本工程的 plugin 文件夹,用 loadDex 载入,再用 new 生成实例。插件就是 Android apk,Java 里可以用 Android SDK。jslibs 里的 JS 只给测试和调用,不会打进插件,这样包不会被这些库撑大。

另一条路不拆两个工程,Java 和 JS 放在一起编。js 调 java 方法,编译后 java 代码和 jar 会变成 defaultplugin.apk,当作插件用。IDEA 新建项目时选「EasyClick Java-JS 混合项目」,JDK 用 1.8,小版本无所谓。目录和插件工程一样:src/js/main.js 是测试入口,src/com/ 放 Java(PluginClz 是入口类),libs/jarlibs 放三方 jar,libs/solibs 放 so,libs/resources 放资源,libs/jslibs 放 JS 类库。配置分两步:在项目上右键进项目结构,配好 JDK 和 class 输出目录;找到 android.jar,右键选「加入 lib」。java 编出来的插件名是 defaultplugin.apk:

// 脚本运行的时候调用 loadDex 载入插件
loadDex("defaultplugin.apk");
// 使用 importClass 或者 importPackage 引入 java 类
// 使用 new 方法生成插件对象实例即可调用

运行执行菜单栏「EasyClick 开发工具 - 运行工程」(需连接手机),打包执行「EasyClick 开发工具 - 打包工程」,打包结果看 EasyClick 运行日志的输出。

两条路怎么选,和产物大小

维度 插件开发 Java-JS 混合开发
代码组织 Java 独立成 apk,脚本引用 Java 和 JS 同工程编写
产物 release.apk(几到几百 kb) defaultplugin.apk
适用 已有 Android 工程 / 复用代码 以脚本为主、Java 补能力
调用方式 loadDex + new loadDex + importClass + new

已经有一套独立的 Android 能力,做成插件再被脚本引用。脚本里只是夹带少量 Java,用混合开发,编出 defaultplugin.apk,脚本侧 loadDex,再 importClass,然后 new。正常插件几到几百 kb。两条路可以同时留着。

想要真实跑起来?

本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。

访问 iEasyClick 官网 →