【001】RenPy打包安卓apk 流程源码级别分析
1. 入口在下图
2. SDK版本及代码入口 (renpy-8.3.7-sdk)
由于SDK一直在升级,本文采用 标题中的版本进行分析,整体逻辑变化不太大。
实际执行逻辑是调用的rapt
2.1 点击按钮实际执行逻辑
def AndroidIfState(state, needed, action):
if state >= needed:
return action
else:
return None
2.2 点击触发操作
class AndroidBuild(Action):
def __init__(self, label):
self.label = label
def __call__(self):
renpy.jump(self.label)
2.3 调用函数 def android_build(...)
def android_build(p=None, gui=True, bundle=False, install=False, launch=False, destination=None, opendir=False, packages=None):
...
2.4 执行构建过程
rapt.build.build(
rapt_interface,
dist,
p.path,
bundle=bundle,
install=install,
launch=launch,
finished=finished,
permissions=p.dump['build']['android_permissions'],
version=p.dump['build']['version']
)
2.5 构建完成后处理输出文件
def finished(files, destination=destination):
# 复制文件到目标路径,并打开目录
3. 总结:
graph TD
A[点击 Build Package 按钮] --> B{AndroidState() == ANDROID_OK?}
B -- 是 --> C[执行 AndroidBuild("android_build")]
C --> D[跳转到 label android_build]
D --> E[调用 python 函数 android_build()]
E --> F[执行构建逻辑]
F --> G{构建成功?}
G -- 是 --> H[复制文件到目标路径]
G -- 否 --> I[显示错误信息]
H --> J[打开输出目录]
下一篇 分析 rapt中实际的执行逻辑