【问题标题】:Prevent code accidentally going into production防止代码意外投入生产
【发布时间】:2013-07-15 20:25:45
【问题描述】:

我正在寻找一种简单的方法来确保在将我的 Android 项目导出到 APK 时将我的 static final boolean DEBUG 标志设置为 false。

我尝试使用here 中提到的“STOPSHIP”评论标记,但它似乎对 apk 导出没有任何影响,或者我使用错误。

为此目的构建一个 lint 扩展似乎有点过头了,有没有更简单的方法来做到这一点?

编辑

使用自动生成的BuildConfig.DEBUG 标志,并结合一些难以错过的屏幕指示,表明您正在调试模式下运行(加上在快速修复后永远不要在凌晨 4 点上传 apk 的心理提示)- 可能会有你涵盖了。
但是这仍然不是我发布这个问题的 100% 万无一失的方法。

仍有complaints 关于BuildConfig.DEBUG 随机未按预期运行。 所以这个问题仍然悬而未决 - 是否有 lint 技巧或类似的技巧来做到这一点?

【问题讨论】:

  • 您没有使用自动为您生成代码的BuildConfig.DEBUG 标志是否有特殊原因?
  • @uval 是的,现在是。那篇文章来自 2012 年。
  • @Ahmad 我想相信这一点,但它仍然不是证据 :)
  • 错误报告 here. 显然这是在去年 3 月修复的。我确实注意到仍有一些人声称它没有修复,所以我不知道。我自己从来没有遇到过问题。

标签: android lint android-build android-lint


【解决方案1】:

Android Gradle Plugin 3.0开始你可以在build.gradle文件中进行如下配置:

android { lintOptions { fatal 'StopShip' } } 只要代码库中存在StopShip 注释,这就会破坏构建。

Watch the exact minute 来自 Tor Norbye 的 “使用 Android Lint 进行 Kotlin 静态分析” 演讲,其中他谈到了该功能。

【讨论】:

    【解决方案2】:

    你解决了吗?我知道 2 年过去了,但我在评论时偶然发现 STOPSHIP 是在搜索 STOPSHIP 时才发现的。

    StopShip
    --------
    Summary: Code contains STOPSHIP marker
    
    Priority: 10 / 10
    Severity: Warning
    Category: Correctness
    NOTE: This issue is disabled by default!
    You can enable it by adding --enable StopShip
    

    所以我想说你应该执行命令才能启用它。

    【讨论】:

    • 我对 BuildConfig.DEBUG 很满意——Android Studio 中的 Gradle 构建系统比 Eclipse 的可靠得多..
    • 我也在使用 Android Studio,我也可以保证 :)
    【解决方案3】:

    几年来我一直在可靠地使用这个标志:

    BuildConfig.DEBUG
    

    它不存在很久以前我发布此问题时发生的问题。

    【讨论】:

      【解决方案4】:

      您可以修改 build.xml,将其设置为 read your DEBUG flag from the source,然后根据值更改 APK 的文件名。使该名称足够明确,您将永远不会分发或上传错误的 APK(您也可以将其作为其他后续自动化流程的条件)。

      【讨论】:

      • 好主意。您发送的链接显示了如何从属性文件中提取值。是否可以从代码中提取?如果导出脚本可以检查自动生成的 'BuildConfig.DEBUG' 标志,并在 apk 名称中添加 DEBUG_...,它可以是额外的防呆保护层。
      • 确实,对于非属性文件,它变得有点复杂,但仍然可以做到:stackoverflow.com/questions/4302019/…。如果您使用的是基于 unix 的机器,您可能会发现从 Ant 调用 sed 会更容易。
      猜你喜欢
      • 2023-03-19
      • 2019-02-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2022-11-11
      • 2013-04-24
      相关资源
      最近更新 更多