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 将无法工作,androidjdk8 SDK 工具已弃用,仅支持该版本,因此请勿将其更新为更高版本.

如果需求没有改变,则无需为您的架构重新构建。

每次更改要求时都请bulldozer clean

kivy_gardensrc/文件夹放在项目的侧文件夹中,不需要从需求部分安装。

另外,我对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 在显示预启动屏幕后很快崩溃

Kivy 应用程序构建 apk 文件不可能?

Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m "kivy" d

如何在Buildozer中构建kivy和Twisted