问题 Android用于发布和调试版本的单独字符串值


每次我发布我的应用程序,我都会改变我的所有 网址字符串 还有一些 按键 从测试到生产。我这样做的方法就是在发布之前注释掉测试字符串。有没有更好的方法来处理基于构建类型的字符串?


4737
2018-03-16 15:18


起源

stackoverflow.com/questions/17197636/... - CommonsWare
正在寻找这个..很棒的问题和答案.. - DJphy
不要那样做。使用您的方法在生产代码中使用不正确的字符串的可能性非常高。这样做: developer.android.com/tools/building/configuring-gradle.html - Rusheel Jain
@RusheelJain是否只有android资源值的解决方案? - spaceMonkey
@spaceMonkey是我给你的链接。我知道这是因为我今天自己尝试过:P我在下面的答案中写下了这些步骤。如果有什么不清楚,请告诉我:) - Rusheel Jain


答案:


假设您使用Android Studio,默认情况下系统会创建一个基本的 release 和 debug 味道。所以,如果你添加一个 debug 和 release 文件夹中 app/src 您可以在项目文件夹中声明单独的值。

所以你的结构应该是这样的:

project
  -app
    -src
      -debug
        -java
          ...
        -res
          -values
            -strings.xml
      -release
        -java
          ...
        -res
          -values
            -strings.xml
      -main
        -java
          ...
        -res
          -values
            -strings.xml

我还应该补充说,如果你有一个未在任何一个中定义的字符串 debug 或者 release 它将回退到你的文件夹 main 夹。


15
2018-03-16 17:03



所以,每次我工作的东西,我应该更新所有3个文件夹? - spaceMonkey
怎么样将url特定的字符串分隔成一个单独的“url-strings.xml”然后拥有 project/app/src/main/res/values/strings.xml  project/app/src/debug/res/values/url-strings.xml  project/app/src/release/res/values/url-strings.xml - k3b
不,你只需要你的默认应用程序 main 夹。任何需要不同的资源 debug 要么 release 构建您只需添加到strings.xml(或@ k3b提到不同的文件)。 Android Studio将始终回归 main 文件夹,所以你可以有1个网址字符串 debug/release 文件夹,它只会采取那些。 - Jasper van de Klundert
我不得不使用它 欣赏广告单位 我在3个新的资源文件中创建(主要,调试和发布)。在我的情况下,有一个发布版本是没有必要的,尽管我仍然创建它。但是我发布了版本和主要版本 admob.xml 相同(复制和粘贴)cos我移植到其他只识别主文件夹中的文件的操作系统。 - aphoe
还要确保在Android Studio中更改构建变体以管理集成的所有内容 - Juancho


只需在build.gradle中创建两种风格。然后是两个目录,再次在链接中给出(developer.android.com/tools/building/configuring-gradle.html)。 由于您只需要更改字符串,只需将strings.xml文件复制到新目录(即开发和生产)中 删除原始strings.xml

就是这样。 :)

无需移动您的java文件或其他布局文件。

简而言之,将“main”目录中的所有内容保留在所有构建版本中应保持一致。 将依赖于构建flavor的值重写到其各自的目录中。


1
2018-03-16 17:27



打造口味?你的意思是“构建类型”还是“产品口味”? - spaceMonkey
抱歉。是的产品口味,如测试和生产 - Rusheel Jain