Buildozer 每次都在构建 kivy,尽管它之前已经构建了 dist
Posted
技术标签:
【中文标题】Buildozer 每次都在构建 kivy,尽管它之前已经构建了 dist【英文标题】:Buildozer is building kivy each time though it has previously built dist 【发布时间】:2022-01-22 15:07:59 【问题描述】:我正在使用带有 kivy 的 buildozer 及其过程如果
下载东西 构建拱门的配方 在 apk 的下一个发行版中重复使用该 dist但是在我的应用程序中,我使用花园花 zbarcam,我直接放入 gsource 文件夹,但是每个 gtime,buildozer 都在为 arch 构建 dist,尽管它已经存在,根据我的阅读,版本号应该与 buildoser 中的要求标签匹配。规范,但我没有在其中定义版本号,直接使用,意味着配方中的版本号不应该存在问题
我的问题是,buildozer 每次都在进行 ndk 构建,它在 dists 文件夹中找到它,尽管它已经从以前的编译中构建了 dist。 有人可以帮忙吗?
【问题讨论】:
【参考方案1】:我集思广益,想出了如下解决方案
无需从11jdk
更新到13jdk
将无法工作,android 的jdk8
SDK 工具已弃用,仅支持该版本,因此请勿将其更新为更高版本.
如果需求没有改变,则无需为您的架构重新构建。
每次更改要求时都请bulldozer clean
。
将kivy_garden
的src/
文件夹放在项目的侧文件夹中,不需要从需求部分安装。
另外,我对p4a
下的toolchain文件做了一些修改,如下
def require_prebuilt_dist(func):
"""Decorator for ToolchainCL methods. If present, the method will
automatically make sure a dist has been built before continuing
or, if no dists are present or can be obtained, will raise an
error.
"""
@wraps(func)
def wrapper_func(self, args, **kw):
ctx = self.ctx
ctx.set_archs(self._archs)
ctx.prepare_build_environment(user_sdk_dir=self.sdk_dir,
user_ndk_dir=self.ndk_dir,
user_android_api=self.android_api,
user_ndk_api=self.ndk_api)
dist = self._dist
info_notify(dist)
if dist.needs_build:
info_notify('needs build')
if dist.folder_exists(): # possible if the dist is being replaced
info_notify('not deleting')
#dist.delete()
info_notify('No dist exists that meets your requirements, '
'so one will be built.')
#build_dist_from_args(ctx, dist, args)
func(self, args, **kw)
return wrapper_func
现在它只有在成功构建后才能工作,
如果您找到解决此问题的更好方法,请发表评论。
谢谢
【讨论】:
以上是关于Buildozer 每次都在构建 kivy,尽管它之前已经构建了 dist的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 buildozer 和最新的 kivy 构建 kivy 应用程序?
Kivy Buildozer VM sh.ErrorReturnCode_127 错误
由 buildozer 构建的 Kivy apk 在显示预启动屏幕后很快崩溃