首先贴上官方的地址: BeeWare 教程
其中的安装和初始化过程在上一片有描述,这张介绍一些基础使用:
1. 多文件开发支持
通常一个工程下我们通常会分为多个 app进行开发,例如如下目录:
如果我们按照一般的引入方法:
会出现找不到模块错误,这里看下官方的解释issues;
也就是以下几步骤:
- 在目录下创建
__init__.py
; - 导入方式:
from logfileprocess.tools.webrtc_log import extract_objc_lines_from_logs
,然后就可以按照正常的方式使用了
2. java和Python交互
java调用python
BeeWare使用的是chaquopy和Java进行交互(我还是认为Jep - Java Embedded Python的交互方式比较好,当然BeeWare选择这个,那就用这个也是可以),其文档地址,;初始化完BeeWare后就会自动在Python环境和Java环境配置好chaquopy相关的配置,这里我们直接看一个简单的调用:
- 在app.py中新增如下代码:
def hello_python(str):
print(u"Hello, Python({})!!!!!!".format(str))
2.在Java的MainActivity中新增
py.getModule("logfileprocess.app").callAttr(
"hello_python","sdcard/0/logfileprocess"
);
关于chaquopy的Python对象创建,这里在后面分析源码的时候说,具体的可以看原文实现;
然后在命令行执行:
briefcase build android -r
在实际测试的时候如果不加-r,Python修改的代码不会同步;
接着执行
briefcase run android
在控制台就是输出:
这里看到我们从Java传递的参数在Python中输出了
python调用java
这里直接使用MainActivity类做示范:
现在类中增加方法:
public static void onPthonCallback(String msg){
Log.d("MainActivity 这是来及Java--》",msg);
}
python中调用:
首先引入# 调用 Java 的 Android API 示例
from java import jclass
调用Java方法:
# 获取 Java 类
MyJavaClass = jclass('org.beeware.android.MainActivity')
# 创建类的实例
my_java_object = MyJavaClass()
# 调用 Java 方法
my_java_object.onPthonCallback("John")
输出结果:
其他类
这里使用自定义的Java类,然后在Python中调用,Java类的定义如下:
p