【发布时间】:2017-10-06 18:40:03
【问题描述】:
我正在尝试在 Android Studio 中进行有条件的构建,如果特定发行版不需要它们,我可以通过删除任何多余的库依赖项来减小生成的 APK 的大小。
我有一些代码大致类似于以下内容:
public class MyClass {
/* Static Declarations. */
public static final boolean USE_LIBRARY = false;
public void doSomething() {
// Are we using the library?
if(MyClass.USE_LIBRARY) {
// Do something with the library that we'd define in my build.gradle.
com.some.gradle.library.MyLibrary.doSomethingWithLibrary();
}
else {
// Do something else.
}
}
}
如果我从我的 Gradle 依赖项中删除 com.some.gradle.library,我会收到编译错误,指出无法编译上述代码。如您所见,只要USE_LIBRARY 仍然为假,我们就不需要引用MyLibrary;甚至在实例化时也没有,因为它没有引用导入;这些仅在运行时被侵犯。
我可能应该注意到,在实践中,USE_LIBRARY 是与应用程序的BuildConfig.java 相关的以编程方式生成的常量。
编译器肯定可以确定这段代码可以优化吗?这是我可以解决的某种预处理器检查吗?
【问题讨论】:
标签: android gradle build compilation lint