【问题标题】:Product flavors, how to use custom class产品风味,如何使用自定义类
【发布时间】:2015-09-18 21:26:48
【问题描述】:

我找到了这个link,但我有疑问。 我对 android studio 中的 Product 风格有一些疑问。我有一个类似这样的结构:

app > src > main > java > com > mycompany > product > packages(view/utils/ etc)

      > app2 > java > com > mycompany > product > packages(view/ utils/ etc)

      > app3 > java > com > mycompany > product > packages(view/ utils/ etc)
  1. 如何在 main 包中使用 class,但更改特定构建的代码 sn-ps?我知道有可能使用带有标志的buildConfigField 使用if 并在类中使用代码sn-ps,但我认为这很糟糕,想知道您是否可以使用相同的类或其他方式来使用这些sn-ps的代码。我尝试创建相同的包结构并创建类的个性化副本,但 Android Studio 抱怨双重类,res 文件不会发生这种情况。

  2. 如何在debugrelease 中为每个构建同时生成apk。

  3. 如何同时测试每个构建。

【问题讨论】:

  • 这真的是三四个问题合二为一。您真的应该考虑将问题的范围限制在其中之一。

标签: android gradle apk


【解决方案1】:

说,你有main 和 2 个口味 'free' 和 'paid'

1) 你要么在 src/main 中有一个文件 MyFile.java,然后它就会进入两种风格

或者你有src/free/MyFile.javasrc/paid/MyFile.java,那么文件会因风格而异

或者你有src/free/MyFile.java andsrc/paid 中没有这样的文件,那么MyFile.java 只会被“免费”风格使用

已编辑:仅当MyFile.java 未被src/main 中的任何内容引用时,最后一种情况才会编译)

2) 使用 gradlew assembleDebug 为调试构建生成所有风味,或使用 gradlew assembleFreeDebug 或 gradlew assemblePaidDebug 仅生成免费或付费风味。发布也一样。

3) 同 2) 我不记得目标名称

Android Studio 有“Build Variants”窗口,您可以在其中处理 2) 和 3)

【讨论】:

  • “或者你有 src/free/MyFile.java 并且在 src/paid 中没有这样的文件,那么 MyFile.java 将只被 'free' 风格使用”——这将无法在大多数情况下编译案例。如果main 代码指的是MyFile,则每种风格都必须存在MyFile
  • 啊,确实!在我的代码中,它只是从风味本身中引用的。
  • 该项目最初是主开发的。并且这个类 X 会对其进行自定义,使其具有 A 风格。当尝试重构 X 类以具有 A 和 B 风格时,Android Studio 指责错误未在 main 中的其他类中找到类 X 的引用。
猜你喜欢
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
相关资源
最近更新 更多