1

尝试在 CI/CD 环境中使用 Jetifier,特别是我使用的是 bitrise,但真正的问题是我想自动化部署过程。在 AndroidX 之前,这工作得很好,现在我需要一种通过命令行为整个应用程序使用 jetifier 的方法。我已经陷入使用exclude来摆脱所有可以想象的依赖的兔子洞,但是enableJetifier=true什么也没做,除非你从 Android Studio 构建。我是否错过了在过去 2 周的谷歌搜索中没有找到的 gradle 插件?或者这是一个未解决的问题?

4

2 回答 2

4

我在 Jenkins/Fastlane 上遇到了同样的问题。由于gradle.properties出于安全原因不应该在存储库中,因此enableJetifier=true环境变量对任务不可见。

解决方案是添加properties到 gradle Fastlane 任务中:

  desc "Create a release build"
  lane :release do
    remove_apk
    gradle(
        task: "assembleRelease",
        properties: {
            "android.enableJetifier" => "true",
            "android.useAndroidX" => "true"
        }
    )
  end

我不熟悉 bitrise,但是这个链接可能有助于设置 bitrise 的设置/环境变量

一般来说,解决方案(也可能是其他解决方案,如果有人有任何其他说明,请告诉我们!):

  1. 使用辅助存储库来存储您的秘密,并使用 Script 步骤进行 git clone (如果您想这样做,请确保两个存储库都可以使用相同的 SSH 密钥!11)

  2. 在 bitrise.io 37 上使用 App Env Vars 或 Secret Env Vars - 您可以在 Workflow Editor(bitrise.io 37 上您的应用程序的 Workflow 选项卡)中找到这些。您在此处定义的变量是常规环境变量,因此您可以以任何您喜欢的方式使用它们,例如通过脚本步骤、写入文件。

  3. 使用 bitrise.io 37 的通用文件存储 63 功能,上传您的文件并使用文件下载器或 ZIP 资源存档下载器步骤下载它。

当然,这些只是主要解决方案的亮点,如果您更喜欢冒险,还有其他可能的方法,例如将加密的文件存储在您的存储库中,将加密密钥存储在 bitrise.io 上的 App Env Var 或 Secret Env Var 中37 并在构建过程中解密文件。

还要检查:https ://devcenter.bitrise.io/builds/env-vars-secret-env-vars/

于 2019-06-06T21:11:17.510 回答
3

作为记录,这是我在Bitrise 上启用 Jetifier 所做的

  1. 转到工作流编辑器 > 代码签名选项卡
  2. 将文件上传gradle.properties到通用文件存储
  3. 返回工作流编辑器,在“Android lint”(或“Android build”)步骤之前插入“文件下载器”步骤
  4. 将文件下载器的源设置为您刚刚在步骤2中上传的新文件
  5. 将目的地设置为$PROJECT_LOCATION/gradle.properties
  6. 节省
  7. 建造和享受!
于 2019-07-06T22:26:26.970 回答