Android 平台的Python——CLE方案实现(三)

本文介绍了在Android平台上使用CLE(Common Language Extension)中间件实现Python与Java的混合编程。通过CLE,开发者可以轻松地在Android应用中调用Python代码,并详细阐述了环境准备、Python代码编写以及Android代码集成的步骤。同时,提醒读者注意CLE在Android Studio中的使用注意事项。
摘要由CSDN通过智能技术生成

Android 平台的Python——基础篇(一)
Android 平台的Python——JNI方案(二)
Android 平台的Python——CLE方案实现(三)
Android 平台的Python——第三方库移植
Android 平台的Python——编译Python解释器

更新:本文已过时!!!CLE不再被推荐,接口不友好,且未提供一些需要编译的Python 第三方库,如numpy、pillow等等,推荐更新的方案 Android与Python混合编程

CLE(Common Language Extension)公共语言拓展
官网:http://www.srplab.com/cn/index.html
来自官网的简介:
CLE中间件支持多脚本语言混合编程。c/c++, lua, python, c#, ruby, java等语言可以通过CLE中间件直接使用其它语言中的类,函数,变量或者模块, 使得现有的功能库或者模块可以很容易的应用到其它编程语言中。开发者可以使用熟悉的语言编写功能库,然后在其它语言开发的应用中使用。CLE非常简单,其执行体仅为一个核心共享库和对应于每个脚本语言接口的共享库.

我们建议开发人员使用脚本语言编写主逻辑,并使用平台相关的语言开发GUI或设备特定部分。这样不仅可以保证应用程序的可移植性,而且还利用了平台SDK的优势。使用脚本语言可能会导致安装包的大小增加, 性能略有下降,但随着硬件性能提高和存储增加, 这些将不成为问题

在Android中通过CLE框架,实现与Python交互(以下内容为eclipse环境)

注:本博客之前以eclipse环境为主,后续有读者反馈,Android Studio下无法运行,在Android Studio下

  1. libs目录中请不要导入android-support-v4.jar
  2. 请在工程app目录下的build.gradle中对jni进行配置
android {
   
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
   
        applicationId "org.study"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    // jni配置
    sourceSets {
   
        main {
   
            jniLibs.srcDirs = ['libs']
        }
    }
}
1、环境准备

官网下载最新的CLE for Android 开发包,其中包含示例工程和API文档。解压开发包,拷贝如下文件

  • 拷贝 starcore_android_rX.X.jar到工程的libs目录
  • 拷贝 libstar_java.so、libstarcore.so、libpython3.4m.so和libstar_python34.so到libs目录

这里写图片描述

2、编写Python代码

text.py

def add(x,y) :
    return x+y

calljava.py

import imp  #test load path

def log(content):
    JavaClass.d("formPython",content)

log("Hello Android,form python")

py_code.py

import time

def get_time():
    return time.time()

将py_code.py压缩为py_code.zip文件。将编写的Python源码放入Android 工程的assets目录,其中还要包含一些Python需要的环境及标准库,见下图

这里写图片描述

3、编写Android相关代码,初始化CLE并调用Python
public class MainActivity extends Activity {
   

	public StarSrvGroupClass SrvGroup;

	@Override
	protected void onCreate(Bundle savedInstanceState) 
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程之路从0到1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值