我試圖在Android Studio中進行條件構建,在這裏我可以通過刪除任何多餘的庫依賴關係來減少生成的APK的大小,如果它們不需要特定分發。如何在Android中有條件地編譯JAR?
我有一些代碼,大致接近於以下內容:
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.
}
}
}
如果我從我的搖籃依賴刪除com.some.gradle.library
,我收到指示上面的代碼不能被編譯編譯錯誤。正如你所看到的,只要USE_LIBRARY
保持不真實,我們絕不需要參考MyLibrary
;甚至沒有實例化,因爲它沒有提到進口;這些只在運行時被侵犯。
我應該注意到,在實踐中,USE_LIBRARY
是一個程序生成的常量,與應用程序的BuildConfig.java
有關。
當然,編譯器可以確定這個代碼可以優化嗎?這是一種預處理器檢查,我可以解決嗎?
這聽起來很有希望。我有階段1和階段2,但我不知道第三個甚至是一個選項!我會讓你知道我如何繼續,謝謝。 –