尝试在 CI/CD 环境中使用 Jetifier,特别是我使用的是 bitrise,但真正的问题是我想自动化部署过程。在 AndroidX 之前,这工作得很好,现在我需要一种通过命令行为整个应用程序使用 jetifier 的方法。我已经陷入使用exclude
来摆脱所有可以想象的依赖的兔子洞,但是enableJetifier=true
什么也没做,除非你从 Android Studio 构建。我是否错过了在过去 2 周的谷歌搜索中没有找到的 gradle 插件?或者这是一个未解决的问题?
2 回答
我在 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 的设置/环境变量。
一般来说,解决方案(也可能是其他解决方案,如果有人有任何其他说明,请告诉我们!):
使用辅助存储库来存储您的秘密,并使用 Script 步骤进行 git clone (如果您想这样做,请确保两个存储库都可以使用相同的 SSH 密钥!11)
在 bitrise.io 37 上使用 App Env Vars 或 Secret Env Vars - 您可以在 Workflow Editor(bitrise.io 37 上您的应用程序的 Workflow 选项卡)中找到这些。您在此处定义的变量是常规环境变量,因此您可以以任何您喜欢的方式使用它们,例如通过脚本步骤、写入文件。
使用 bitrise.io 37 的通用文件存储 63 功能,上传您的文件并使用文件下载器或 ZIP 资源存档下载器步骤下载它。
当然,这些只是主要解决方案的亮点,如果您更喜欢冒险,还有其他可能的方法,例如将加密的文件存储在您的存储库中,将加密密钥存储在 bitrise.io 上的 App Env Var 或 Secret Env Var 中37 并在构建过程中解密文件。
还要检查:https ://devcenter.bitrise.io/builds/env-vars-secret-env-vars/
作为记录,这是我在Bitrise 上启用 Jetifier 所做的:
- 转到工作流编辑器 > 代码签名选项卡
- 将文件上传
gradle.properties
到通用文件存储 - 返回工作流编辑器,在“Android lint”(或“Android build”)步骤之前插入“文件下载器”步骤
- 将文件下载器的源设置为您刚刚在步骤2中上传的新文件
- 将目的地设置为
$PROJECT_LOCATION/gradle.properties
- 节省
- 建造和享受!