CLE的使用笔记
CLE官网http://www.srplab.com/cn/index.html
下载CLE for Android,解压文件,拷贝 starcore_android_rX.X.jar到工程的libs目录,拷贝 libstar_java.so、libstarcore.so、libpython3.6m.so和libstar_python36.so到libs/x86目录,拷贝编写的Python源码和python需要的环境及标准库到src/main/assets目录.需要的python的.so文件可下载
android.python.x.x.x,解压获得。在build.gradle中android {}中添加
sourceSets.main.jniLibs.srcDirs = ['libs']
使用JAVA初始化CLE http://www.srplab.com/cn/files/cle_initialization.html
import com.srplab.www.starcore.*;
public class test_server{ StarCoreFactoryPath.StarCoreCoreLibraryPath = this.getApplicationInfo().nativeLibraryDir;
StarCoreFactoryPath.StarCoreShareLibraryPath = this.getApplicationInfo().nativeLibraryDir;
StarCoreFactoryPath.StarCoreOperationPath = "/data/data/"+getPackageName()+"/files";
public static void main(String[] args){
StarCoreFactory starcore=StarCoreFactory.GetFactory();
StarServiceClass Service=starcore._InitSimple("test","123",0,0);
StarSrvGroupClass SrvGroup = (StarSrvGroupClass)Service._Get("_ServiceGroup"); ......
SrvGroup._ClearService();
starcore._ModuleExit();
}
}
java调用 python http://www.srplab.com/cn/files/cle_javacallothers.html
- 调用函数"_InitRaw"初始化python接口
- 调用函数"_LoadRawModule"加载python脚本文件
- 使用函数"_ImportRawContext("python","",false,nil);"获取python全局原生对象,python类
- 使用函数"XX._Call("_StarCall",Args...)"或者"XX._New("","",Args,..)"创建python类的实例
- 使用函数"XX._Call("funcname",...)"或者"XX._Get/_Set("Variable")"调用python函数,设置/获取python变量数值
python调用java http://www.srplab.com/cn/files/cle_pythoncallothers.html
- 调用函数 "_InitRaw" 初始化java接口
- 调用函数 "_LoadRawModule" 加载java脚本文件
- 使用函数 "_ImportRawContext("java","",False,"");" 获取java类
- 使用函数 "XX(Args...)" 创建java类的实例
- 使用函数 "XX.func(...)"或者"XX.Variable"调用java函数,获取/设置java变量数值
/*----run python code----*/
SrvGroup._InitRaw("python36", Service); //调用函数_InitRaw初始化python接口
StarObjectClass python = Service._ImportRawContext("python", "", false, "");
// 设置Python模块加载路径
python._Call("import", "sys");
StarObjectClass pythonSys = python._GetObject("sys");
StarObjectClass pythonPath = (StarObjectClass) pythonSys._Get("path");
pythonPath._Call("insert", 0, appFile.getPath() + File.separator + "python3.6.zip");
pythonPath._Call("insert", 0, appLib);
pythonPath._Call("insert", 0, appFile.getPath()); //调用Python代码
Service._DoFile("python", appFile.getPath() + "/py_code.py", "");
long time = python._Calllong("get_time");
Log.d("", "form python time=" + time);
tv1.setText("time:"+String.valueOf(time) + "");
//调用Python代码
Service._DoFile("python", appFile.getPath() + "/test.py", "");
int result = python._Callint("add", 5, 2);
Log.d("", "result=" + result);
tv2.setText("add:"+result + "");
//将一个java类设置给Python,变成Python类
python._Set("JavaClass", Log.class);
Service._DoFile("python", appFile.getPath() + "/calljava.py", "");
出现问题:ModuleNotFoundError("No module named 'encodings'",)Py_Initialize: unable to load the file system codec
A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 4184
解决方法:似乎是python版本的问题。
可以查看File appFile = new File("/data/data/"+getPackageName()+"/files");中appFile的值,是否包含多个版本的.so文件
参考:Android 平台的Python——CLE方案实现(三)
CLE的使用笔记的更多相关文章
- SQL*Loader实验笔记【二】
所有SQL*Loader实验笔记 实验案例总结(1-7): SQL*Loader实验笔记[一] 实验案例总结(8-13): SQL*Loader实验笔记[二] 实验案例总结(14-19 ...
- STM32学习笔记——FSMC 驱动大容量NAND FLASH [复制链接]
本文原创于观海听涛,原作者版权所有,转载请注明出处. 近几天开发项目需要用到STM32驱动NAND FLASH,但由于开发板例程以及固件库是用于小页(512B),我要用到的FLASH为1G bit的大 ...
- 最全的ORACLE-SQL笔记
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unloc ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
随机推荐
- 【mysql】分区表
分区表是什么? 分区表可以按照事先创建的规则,对mysql的记录进行分组,每一个组具有一个独立的逻辑单元来存储该组的数据.典型的如:按照创建时间的年份分组,按照id的顺序分组(每1000万条数据分一个 ...
- UVa 1103 Ancient Messages(二重深搜)
In order to understand early civilizations, archaeologists often study texts written in ancient lang ...
- VS unable to update auto-refresh path。。。。
手工创建提示报错的路径,重新生成,成功
- 数字&字符串
一.数字 数字分为整型(int)和浮点型(float) int(整型):整数数字 >>> a = 12 >>> a 12 >>> b = 12.3 ...
- js关于去重的写法
break和continue的区别和作用 break和continue都是用来控制循环结构的,主要是停止循环. 1.break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才 ...
- js 正则表达式:密码必须由6-12位数字加字母组成
^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$
- webstorm配置node.js
1.确保电脑已经安装好了node.js
- 找不到或无法加载主类(Could not find or load main class )
在Linux环境下,写了一个简单的java程序,通过javac编译成class文件,然后用java 运行的时候,报了这个错误, 搜了一下,可能是classpath的问题,所以用echo $CLASSP ...
- BZOJ4033或洛谷3177 [HAOI2015]树上染色
BZOJ原题链接 洛谷原题链接 很明显的树形\(DP\). 因为记录每个点的贡献很难,所以我们可以统计每条边的贡献. 对于每一条边,设边一侧的黑点有\(B_x\)个,白点有\(W_x\),另一侧黑点有 ...
- 网络编程 tcp(一)
server端: #include <stdio.h> #include <string.h> #include <unistd.h> #include <s ...