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. js数组排序实用方法集锦

    前言: 据说程序员三个月就能忘记自己写的代码,所以最好是在有空的时候及时做些总结,记录下来,这样后边遇到类似问题的话,就可以直接先查看自己的博客了.写技术博客,对自己是一种总结,对别人,是一种参考. ...

  2. TabLayout+ViewPager的简单使用

    1.   build.gradle文件中加入 compile 'com.android.support:design:22.2.0' 2.写Xml文件,注意TabLayout的三个属性 app:tab ...

  3. rbac集成 权限分配。之角色管理

    权限分配功能拆分: a. 角色管理 b. 用户管理 c. 菜单和权限的管理 d. 批量的权限操作 e. 分配权限 先实现 角色管理: 无非也就是,增删改查: 定义路由, 编写视图. 1.查看角色页面: ...

  4. ABP框架使用Mysql数据库

    参考文档:https://github.com/ABPFrameWorkGroup/AbpDocument2Chinese/blob/master/Markdown/Abp/9.4ABP%E5%9F% ...

  5. Android TV开发 焦点控制

    转载:http://www.eoeandroid.com/thread-264177-1-1.html 最近在做一款基于Android的互联网电视客户端,开发与phone/pad差不多,但是有一个值得 ...

  6. Oracle_高级功能(7) 数据字典视图和动态性能视图

    oracle数据字典 1.概念数据字典是oracle数据库用来存储数据库结构信息的地方.数据字典是用来描述数据库数据的组织方式的,由表和视图组成.数据字典基表是在任何 Oracle 数据库中创建的第一 ...

  7. istio promethus收集不到数据

    1.重新apply istio.yaml kubectl apply -f install/kubernetes/istio.yaml kubectl get metrics.config.istio ...

  8. hdu 5691(状压DP) Sitting in Line

    题目http://acm.hdu.edu.cn/showproblem.php?pid=5691 状态DP,dp[i][j],i 表示的是一种状态,这个状态指的是当前这个数取或不取,j表示的是以第j个 ...

  9. hdu 5692(dfs+线段树) Snacks

    题目http://acm.hdu.edu.cn/showproblem.php?pid=5692 题目说每个点至多经过一次,那么就是只能一条路线走到底的意思,看到这题的格式, 多个询问多个更新, 自然 ...

  10. libjpeg安装和使用

    转自: http://blog.csdn.net/ice__snow/article/details/52563944 ,有几处做了一部分修改 一. 编译 下载地址 http://www.ijg.or ...