【问题标题】:Android Jetifier CI/CDAndroid Jetifier CI/CD
【发布时间】:2019-10-22 09:52:24
【问题描述】:

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

【问题讨论】:

    标签: android androidx bitrise android-jetifier


    【解决方案1】:

    我在使用 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 设置 settings/environment variables

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

    1. 使用辅助存储库来存储您的秘密,例如使用脚本步骤 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 37 上的 App Env Var 或 Secret Env Var 中,并在构建期间解密文件。

    同时检查:https://devcenter.bitrise.io/builds/env-vars-secret-env-vars/

    【讨论】:

    • 你是天赐之物!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多