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

  1. 调用函数"_InitRaw"初始化python接口
  2. 调用函数"_LoadRawModule"加载python脚本文件
  3. 使用函数"_ImportRawContext("python","",false,nil);"获取python全局原生对象,python类
  4. 使用函数"XX._Call("_StarCall",Args...)"或者"XX._New("","",Args,..)"创建python类的实例
  5. 使用函数"XX._Call("funcname",...)"或者"XX._Get/_Set("Variable")"调用python函数,设置/获取python变量数值

python调用java http://www.srplab.com/cn/files/cle_pythoncallothers.html

  1. 调用函数 "_InitRaw" 初始化java接口
  2. 调用函数 "_LoadRawModule" 加载java脚本文件
  3. 使用函数 "_ImportRawContext("java","",False,"");" 获取java类
  4. 使用函数 "XX(Args...)" 创建java类的实例
  5. 使用函数 "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方案实现(三)

android 调用 python

CLE的使用笔记的更多相关文章

  1. SQL*Loader实验笔记【二】

      所有SQL*Loader实验笔记 实验案例总结(1-7):     SQL*Loader实验笔记[一] 实验案例总结(8-13):   SQL*Loader实验笔记[二] 实验案例总结(14-19 ...

  2. STM32学习笔记——FSMC 驱动大容量NAND FLASH [复制链接]

    本文原创于观海听涛,原作者版权所有,转载请注明出处. 近几天开发项目需要用到STM32驱动NAND FLASH,但由于开发板例程以及固件库是用于小页(512B),我要用到的FLASH为1G bit的大 ...

  3. 最全的ORACLE-SQL笔记

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unloc ...

  4. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

随机推荐

  1. IE浏览器调试工具不能使用

    Mac 使用VMware Fusion虚拟机,安装Windows 7 Service Pack 1 (SP1). 移除自带的IE8,下载并安装IE11(64位). IE 11 调试工具不能使用,并且调 ...

  2. leetcode输入输出加速

    C++兼容C的输入输出,即cin与scanf混用文件指针不会出错,cout亦同,导致cin有额外开销. 可以用std::ios::sync_with_stdio(false);手动关闭. cin.ti ...

  3. pycharm中conda环境部署

    问题 pycharm中部署了conda base环境,项目中 import sklearn 报错,缺少DLL模块 . 但是在Anaconda Prompt中 import sklearn 则成功. 发 ...

  4. Django xadmin后台添加富文本编辑器UEditor的用法

    效果图: 步骤: 1.利用命令:pip install DjangoUeditor,安装DjangoUeditor,但由于DjangoUeditor没有python3版本的,从的Github上把修改好 ...

  5. Tomcat配置远程调试端口(windows、Linux)

    当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: decl ...

  6. 编程,将data段中的字符串转化成大写

    assume cs:code data segment db 'conversation' data ends code segment start: mov ax,data mov ds,ax ca ...

  7. IntelliJ IDEA return null with ClassLoader.getSystemResourceAsStream(“configFilename”));

    参考https://stackoverflow.com/questions/49470053/intellij-idea-return-null-with-classloader-getsystemr ...

  8. [Z]Spring Data JPA 之 一对一,一对多,多对多 关系映射

    一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...

  9. Dom,pull,Sax解析XML

    本篇随笔将详细讲解如何在Android当中解析服务器端传过来的XML数据,这里将会介绍解析xml数据格式的三种方式,分别是DOM.SAX以及PULL. 一.DOM解析XML 我们首先来看看DOM(Do ...

  10. linq 动态判断

    以前要不是使用扩展方法 要么使用如(t==2&&判断条件)||(s==1&&判断条件) 其实可以简单的实现扩展一个whereIf即可(abp实现),如下所示 ··· / ...