前言

安卓里面做边缘计算的功能,需要动态编辑js代码执行

巨坑

java里面有ScriptEngineManager类,可以执行js
但在安卓里面没有这个类,javax下面的都不能执行
网上说的安卓里面用ScriptEngineManager的都是坑!

解决方法

使用Rhino可以完美执行js代码

1、下载Rhino包

选择一个最新版本下载即可

2、安卓添加依赖

implementation files('libs\\rhino-1.7.14.jar')
也可以右键jar包,选择

3、编写代码

import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.Scriptable;public class JsRun
{private static Object _lock = new Object();private static Context _rhino = null;private static Scriptable _scope = null;private static void init(){if( _rhino==null ){synchronized (_lock){if( _rhino==null ){_rhino = Context.enter();_rhino.setOptimizationLevel(-1);_scope = _rhino.initStandardObjects();}}}/* 这里是测试执行代码String js = "function aa(){return 'sdfsdfsdf';}";initScript(js);js = "function bb(){return '11111';}";initScript(js);Object obj = callFunc("aa");System.out.println(obj);obj = callFunc("bb");System.out.println(obj);*/}public static boolean initScript(String js){init();try {_rhino.evaluateString(_scope, js, null, 1, null);return true;}catch (Exception e) {e.printStackTrace();}return false;}public static Object callFunc(String functionName, Object... functionParams){try{Function function = (Function) _scope.get(functionName, _scope);if( function != null )return function.call(_rhino, _scope, _scope, functionParams);}catch (Exception e) {e.printStackTrace();}return null;}
}

安卓运行js代码-完美相关推荐

  1. 运行JS代码报错:Uncaught TypeError: Cannot read property‘style‘ of undefined

    运行JS代码报错:Uncaught TypeError: Cannot read property'style' of undefined 这个报错的原因通常是没有获取指定的标签: 这个报错的原因通常 ...

  2. Nodejs 中运行 JS 代码

    Nodejs 中运行 JS 代码 接下来,演示一下 Nodejs 中如何运行 JS 代码. 以前 JS 只能运行在浏览器中,Node.js 出现之后,不管是服务器上,还是我们自己的的笔记本上,只要安装 ...

  3. 运用Rhino,在Android上运行js代码

    简单记录如何运用Rhino 在这里不过多赘述rhino,百度以及官网到处都是介绍,本文只提供我自己封装的工具类,用于处理运行js代码(字符串形式),返回js对象或者String.支持es5语法,支持部 ...

  4. 潇洒郎:Python 使用pyexejs运行js代码

    潇洒郎:Python 使用pyexejs运行js代码 安装 pip install pyexecjs js代码: import execjsjs_code='''function x(a, b){re ...

  5. 【笔记】Pycharm配置Node.js运行js代码

    最近在学习关于Js逆向的知识,需要在PyCharm中运行Js程序,记录一下配置过程. 安装Node.js Node.js中文网 选择自己电脑对应的安装包下载暗转即可 安装好软件后,配置node.js环 ...

  6. python通过execjs运行js代码

    python通过execjs运行js代码 pip install PyExecJS 使用方法 import execjsctx = execjs.compile(""" ...

  7. Android中使用WebView加载本地html并支持运行JS代码和支持缩放

    场景 Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/art ...

  8. (5)通过Node.js 运行JS代码

    一.使用快捷键ctrl+`键打开终端,也可以手动选择菜单栏中的终端,然后编写一个hello.js文件 二.输入命令node .\node_demo\hello.js 三.得到JS文件的内容 如果没有显 ...

  9. pycharm安装nodejs插件运行js代码

    pcharm 安装node.js 1.下载文件 https://nodejs.org/en/download/ 2.安装文件 2.1 : cmd 进入安装的目录下面 node -v 3.电脑环境变量添 ...

最新文章

  1. 【组队学习】【34期】百度飞桨AI达人创造营
  2. LeetCode(30):与所有单词相关联的字串
  3. Nginx技术研究系列7-Azure环境中Nginx高可用性和部署架构设计
  4. 你确定你会使用git commit?
  5. lstm原文_LRCN: LSTM与CNN相结合模型
  6. day08面向对象+
  7. [转载] 百科全说——王晓斋:感冒时您找准医生了吗?(10-10-11)
  8. 如何在 Mac 上设置自定义锁屏信息?
  9. 阿里云云计算 36 PolarDB MySQL的管理步骤
  10. VS编译器常见的问题
  11. PHP实现生成二维码的示例代码
  12. nodejs操作Excel
  13. python uwsgi_python,uwsgi_安装uwsgi时报错,python,uwsgi - phpStudy
  14. HTML实现文件上传和HTML实现打开文件目录
  15. 软件测试好学吗?发展前景如何?
  16. matlab 读取脉冲数,已知一段波形,求脉冲个数,用代码实现
  17. 【数据挖掘】频繁模式挖掘及Python实现
  18. 下拉框优化威zx78_下拉框优化应到千捷网络下拉系统
  19. 永磁同步电机参数自整定 包括电机极对数、电阻、电感、磁链、反电势常数、编码器零位等
  20. postgresql创建数据库

热门文章

  1. 2021最新CSDN积分获取攻略(如何快速获取CSDN积分)
  2. 中视频计划过不了审怎么办?务实社海哥三招教你做好中视频计划,提前通过原创
  3. 古代中国使用计算机工具叫什么,古代四大计时工具是什么
  4. js 所有的网络请求方式
  5. 【微信小程序】-miniprogram init [Error: ENOENT: no such file or directory]
  6. 没有996的当代年轻人,配过怎样的生活 1
  7. 算法基础--《我的第一本算法书》--(算法学习一)
  8. 在html页面写一个富文本框
  9. KONAMI公司:魂斗罗的诞生
  10. 干脆大大方方的以前高