Android 平台的Python——基础篇(一)
Android 平台的Python——JNI方案(二)
Android 平台的Python——CLE方案实现(三)
Android 平台的Python——第三方库移植
Android 平台的Python——编译Python解释器
上一篇博客已经讲了Python与C的交互,本篇主要关于在Android项目中嵌入Python解释器,实现Java与Python相互调用。以有好的项目提供了思路,地址:https://github.com/joaoventura/pybridge
我这里说一下简单实现
1、环境准备
配置好crystax ndk环境,并创建一个NDK项目,将crystax 包下面的 libpython3.5m.so拷贝至工程 lib/armeabi目录下
2、为Java 编写 native方法
public class Util {
static {
try {
System.loadLibrary("jni_test");
} catch (Exception e) {
Log.e("jni_test", ""+e);
}
}
public static native int run(String path);
}
3、编写Jni代码
jni_test.c
#include <Python.h>
#include <jni.h>
#include <android/log.h>
#define LOG(x) __android_log_write(ANDROID_LOG_WARN, "jni_test", (x))
/* --------------- */
/* Android log */
/* --------------- */
static PyObject *androidlog(PyObject *self, PyObject *args)
{
char *str;
if (!PyArg_ParseTuple(args, "s", &str))
return NULL;
LOG(str);
Py_RETURN_NONE;
}
static PyMethodDef AndroidlogMethods[] = {
{
"log", androidlog, METH_VARARGS, "Logs to Android stdout"},
{
NULL, NULL, 0, NULL}
};
static struct PyModuleDef AndroidlogModule = {
PyModuleDef_HEAD_INIT,
"androidlog", /* m_na

本文介绍如何在Android项目中嵌入Python解释器,通过JNI实现Java与Python的相互调用。首先需要配置crystax NDK环境,然后在Java中编写native方法,接着编写JNI代码和Python脚本。最后,通过AssetExtractor.java调用Python脚本。这种方法虽然自定义程度高,但要求熟悉Android NDK和C语言。
最低0.47元/天 解锁文章
3258

被折叠的 条评论
为什么被折叠?



