关于pywebview项目打包成apk(笔记版)
根据官方文档:https://pywebview.flowrl.com/guide/freezing.html#android 描述可以完成一个简单的打包工作
1、准备工作
1.1 安装Buildozer
参考官网,依次执行安装命令 点击跳转官网
执行buildozer --version
可以查看版本号则安装成功。
1.2 安装及编译依赖(重点)
1、准备一个 main.py 文件,文件内容可以为空。
2、需要访问 github 下载依赖库
执行buildozer android debug
命令则开始将当前目录的文件打包成APK,在打包文件前会先安装各种依赖。
1.2.1 编译 libffi 失败(例子)
在打包命令时,按需要下载libffi库进行编译,大概率会出现编译失败的情况。
解决方法:手动下载libffi文件,并替换图中的目录。libffi的github地址
- (1)选择 android 分支进行下载,建议直接下载成 ZIP 文件
- (2)下载完成后得到 libffi-android.zip,解压后并重命名为 libffi 替换图中的目录
- (3)再重新执行打包命令,若不出现libffi编译失败则成功。
1.2.2 注意情况(必看!!!
)
- (1).buildozer 目录千万不能删除,因为很多打包的依赖都保存在该路径下
- (2)慎重执行
buildozer android clean
命令,该命令会把之前部分依赖文件清除
特殊问题答疑
1、android中无法创建、保存文件
在.buildozer.spec
文件配置以下内容授权软件的存储权限
android.permission.WRITE_EXTERNAL_STORAGE
但是Android api 29+以后的版本中,还需要在AndroidManifest.xml中的application配置以下内容
<application
...
android:requestLegacyExternalStorage="true"
...
></application>
解决方式:修改这个路径下的模板文件,在application节点中添加以上的配置内容。
.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/bootstrap_builds/sdl2/templates/AndroidManifest.tmpl.xml
...
android:requestLegacyExternalStorage="true"
android:extractNativeLibs="true" >
...
更多内容待更新中…