目录
无法访问xxx网址,连接超时
目标路径xxx已经存在,并且不是一个空目录
每次打包时间都要很久
待更新
在打包过程中难免会碰到一些问题,在本节,笔者会把自己碰到的一些问题的解决方案写出来,好让读者节省时间。
无法访问xxx网址,连接超时
在首次打包时,builozer会访问各个网址下载很多依赖文件,而有些网址需要先科学上网才能访问。所以解决方案就是先科学上网,然后再次运行打包命令即可。
目标路径xxx已经存在,并且不是一个空目录
buildozer在下载某些依赖文件时可能会因为网络原因下载失败(但其中一些可能已经下载成功了)。在重新运行打包命令后,buildozer会把这部分依赖文件全部重新下载,而如果其中一些依赖文件已经存在导致目录不为空,那就会报这种错误。
解决办法很简单,就是把报错提示的文件夹全部删除,然后再重新运行打包命令。比如图片上提示external/jpeg这个目录不为空,那我们就前往external文件夹,把jpeg文件夹删掉。external文件夹的位置在图片上有提示。
注:读者可以把external文件夹中的所有文件夹都删除,就只留一个download.sh文件。
还有一种更好的解决办法:如果读者之前已经成功打包过一次,可以把打包生成的.buildozer文件夹保留,然后前往它的external文件夹中把所有文件夹拷贝到当前正打包的.buildozer文件夹的external文件夹中。这样再次运行打包命令后,buildozer就会直接跳过这部分依赖文件的下载过程,因为文件都已经存在了
每次打包时间都要很久
Android SDK、NDK等文件是在首次使用buildozer打包时下载的,接下来打包都不会再去下载。但是除了这些文件外,每次打包时buildozer都会花时间去下载其他的依赖文件并编译。
如果当前被打包的程序与之前打包的程序在导入库方面并无很大差异,比如之前只使用了kivy,现在是kivy+requests。那我们完全可以保留之前打包生成的.buildozer文件夹,这样buildozer就不会花很多时间去下载依赖文件了,节省很多时间。
但如果当前打包的程序跟之前的很不一样,那我们可以在打包前把一些必然会有的依赖文件保留下来。在运行打包命令后,可以提前终止并将这些依赖文件复制到对应路径下,然后再次打包。目前笔者知道的有以下路径中的文件。
.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/packages
.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/bootstrap_builds/sdl2/jni/SDL2_image/external