Bar*_*ski 3 java android annotations gradle android-gradle-plugin
假设我有一个自定义注释:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Test {
boolean type();
}
Run Code Online (Sandbox Code Playgroud)
我希望type参数根据构建类型而不同(但这会自动更改)。
所以,我可以做一些喜欢的是:
@Test(type = BuildConfig.DEBUG)
public class Example {
}
Run Code Online (Sandbox Code Playgroud)
但是当然Example该类的代码不会编译,因为 的值BuildConfig.DEBUG不是常量。
任何人都知道为此创建解决方法吗?也许在gradle中指定一些其他参数?我对让我手动更改type特定构建的解决方案不感兴趣。这样或那样。我正在寻找一种通过构建自动执行此操作的方法。
通过 gradle android 插件
您可以使用 gradle buildConfigField。例如
android {
...
buildTypes {
debug {
buildConfigField "boolean", "TYPE", "true"
}
release {
buildConfigField "boolean", "TYPE", "false"
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
进而
@Test(type = BuildConfig.TYPE)
public class Example {
}
Run Code Online (Sandbox Code Playgroud)
有了buildConfigField你还可以添加一些其他类型的BuildConfig。
android {
buildTypes {
debug {
buildConfigField "int", "A_INT", "1"
buildConfigField "String", "A_STRING", "\"string_1\"" // <---note the escape
}
release {
buildConfigField "int", "A_INT", "2"
buildConfigField "String", "A_STRING", "\"string_2\""
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有多种口味,则可以在每种口味中定义一个字段:
productFlavors {
// Define separate dev and prod product flavors.
dev {
buildConfigField "boolean", "IS_DEV", "true"
}
prod {
buildConfigField "boolean", "IS_DEV", "false"
}
}
Run Code Online (Sandbox Code Playgroud)
使用相同的规则,您可以使用resValue以下方法在资源中添加值:
android {
buildTypes {
debug{
resValue "string", "dev_name", "Alice"
}
release {
resValue "string", "dev_name", "Bob"
}
}
}
Run Code Online (Sandbox Code Playgroud)
按代码
您可以在 src/debug/java/your.package.name 下放置一个具有值的类,在 src/release/java/your.package.name 下放置具有不同值的相同类
调试版本
public final class MyConfigurations {
public static final boolean TYPE = true;
...
}
Run Code Online (Sandbox Code Playgroud)
发布版本
public final class MyConfigurations {
public static final boolean TYPE = false;
...
}
Run Code Online (Sandbox Code Playgroud)
而且您还可以使用与 android gradle 插件相同的逻辑来玩味(实际上这个解决方案也取决于该插件)
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |