我的项目有几种可能的配置,每个配置都在'make'阶段运行它自己的任务。我怎样才能确定选择哪个配置?或者,确定运行哪个任务将会是一样的。如何确定在运行时哪个Gradle配置处于活动状态?
回答
是的,这可以通过检查生成的BuildConfig.java文件来实现。 BuildConfig.java是自动生成的,它被放到gen文件夹中。
假设在你的应用程序模块的build.gradle文件,你有这样的buildType配置:
buildTypes {
release {
shrinkResources true
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
}
preRelease {
// Pre release code over here.
}
debugConfiguration {
// Debug configuration code over here
}
}
而且,如果你选择buildVariant的发布,这BuildConfig.Java文件被生成...
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "com.yourapp.packagename";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}
因此,如果你想进行基于构建变量一些动作,你可以尝试这样的事情......
final String buildType = BuildConfig.BUILD_TYPE;
switch(buildType) {
case "release" :
// code for release build
break;
case "preRelease" :
// code for preRelease build
break;
case "debugConfiguration" :
// code for debugConfiguration build
break;
}
注意:我不确定这是推荐还是处理此问题的最佳方式。这种方法已知的问题检查此链接http://www.digipom.com/be-careful-with-buildconfig-debug/
我会建议您可以设置生成类型标志手动来照顾这个问题。例如,你可以使用该服务,并依据这个标志的行动...... 推荐
public class BuildTypeFlag {
// set this to release, debug, or prerelease manually for your requirements...
public static final BuildTypeEnum BUILD_TYPE_ENUM = RELEASE;
public enum BuildTypeEnum {
RELEASE, DEBUG, PRERELEASE, DUMMY_CONFIG
}
}
谢谢,但我对确定运行配置感兴趣,而不是构建类型。 – Fingolfin
你能详细解释一下吗?运行配置是什么意思?通过运行配置,我认为你提到了“调试”或“发布”构建配置。 – oathkeeper
我没有发明这个术语,这是如何在Android Studio中调用的。它用于定义执行“make”之前将运行哪些Gradle任务。 – Fingolfin
- 1. 确定哪个故事板处于活动状态
- 2. Swift:如何知道哪个Storyboard处于活动状态
- 3. 如何检查哪个UIViewController处于活动状态
- 4. 如何设置活动始终处于活动状态?
- 5. 在OSX中,我如何确定窗口的位置以及哪个窗口处于活动状态?
- 6. IBQuery组件处于活动状态时事务处于活动状态
- 7. 如何仅在用户/手机处于活动状态时运行服务?
- 8. 处于活动状态和非活动状态的状态图
- 9. 如何确定在运行时读取哪种配置
- 10. 如何将li设置为在PHP中处于活动状态
- 11. Qt:如何在QTimer处于活动状态时延迟程序?
- 12. Android:如何找到哪个选项卡在tablayout中处于活动状态?
- 13. 哪个监视器处于活动状态?
- 14. 我怎么知道哪个ViewController目前处于活动状态
- 15. 确定按钮/窗口是否处于活动状态winforms C#
- 16. 确定webkit中的窗口是否处于活动状态
- 17. 确定用户何时处于活动状态的更好方法?
- 18. 幻灯片处于活动状态时,将传送带自定义按钮设置为活动状态
- 19. 只有在制表符处于活动状态时才运行setTimeout
- 20. 当任何子视图处于活动状态时,AngularJs navbar父视图应该处于活动状态
- 21. 当活动处于活动状态时替换片段停止状态
- 22. 解决方法FloatingActionButton在TextField或TextArea处于非活动状态时处于非活动状态
- 23. 如何确保我的服务始终处于运行状态
- 24. 如何使选定的链接处于活动状态
- 25. Android:如何向用户显示哪个视图处于活动状态
- 26. 如何检查哪个标签栏项目处于活动状态?
- 27. 如何检查哪个UIViewController从AppDelegate处于活动状态(推后)
- 28. 如何知道OS X中的哪个连接处于活动状态?
- 29. 如何更改窗口中哪个视图处于活动状态?
- 30. iOS如何知道哪个视图控制器应该处于活动状态?
我已经回答您的查询增加了一个答案。如果这个答案对你有帮助,请注册并且标记为正确:) – oathkeeper
亲爱的downvoter - downvoting是合法的,所有的,但指定一个理由这样做会很好,你知道。 – Fingolfin