我在App模塊的BuildConfig中有一些配置值。我想將這些值傳遞給MyLib的BuildConfig,它是App模塊的依賴項。可能嗎?如何將BuildConfig值傳遞給依賴模塊?
2
A
回答
1
不,我們不能這樣做。相關模塊無法訪問App模塊的BuildConfig文件。
您的問題的唯一替代解決方案是您需要添加相同的屬性到您的依賴項BuildConfig文件。
1
最簡單的方法是創建第三個模塊(庫),並將此模塊添加到庫模塊和應用程序模塊的依賴關係中。
然後把共享構建配置到共享的第三個模塊。
app module <------------------ library module
^ ^
| |
| dependency |dependency
------------ third module -------
0
一般來說,BuildConfig
有靜態成員。所以我會建議反思將您的BuildConfig作爲模型列表保存字段/值
我們需要一個模型來包含所有類成員的字段和值。讓我們把它叫做BuildConfigItem
(我建議把這個類目的地模塊):
public class BuildConfigItem {
public final Field field;
public final Object object;
public BuildConfigItem(Field field, Object object) {
this.field = field;
this.object = object;
}
}
現在你可以得到BuildConfig的所有集體成員使用此方法。想法是將它們轉換成可以獨立於其他模塊上進行檢索便攜式階段,甚至不知道什麼BuildConfig有:
public static ArrayList<BuildConfigItem> getBuildConfigField() {
ArrayList<BuildConfigItem> list = new ArrayList<>();
Field[] declaredFields = BuildConfig.class.getDeclaredFields();
BuildConfig buildConfig=new BuildConfig();
for (Field field : declaredFields) {
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
try {
BuildConfigItem buildConfigItem = new BuildConfigItem(field, field.get(buildConfig));
list.add(buildConfigItem);
} catch (IllegalAccessException e) {
Log.e(TAG, "error during assigning fields: ", e);
}
}
}
return list;
}
讓您的BuildConfigItem
列表:
ArrayList<BuildConfigItem> buildConfigItemArrayList = getBuildConfigField();
然後把它傳遞給你的模塊。這裏是簡單的方法如何迭代該列表來獲取值: for(BuildConfigItem buildConfigItem:buildConfigItemArrayList){ Log.d(TAG,buildConfigItem.field.getName()+「:」+ buildConfigItem.object); }
這裏是如何列出的所有值和鑄造常見類型:
for (BuildConfigItem buildConfigItem : buildConfigItemArrayList) {
if (buildConfigItem.field.getType() == String.class) {
String value = (String) buildConfigItem.object;
Log.d(TAG, "String:" + buildConfigItem.field.getName() + ":" + value);
} else if (buildConfigItem.field.getType() == int.class) {
Integer value = (Integer) buildConfigItem.object;
Log.d(TAG, "integer:" + buildConfigItem.field.getName() + ":" + value);
} else if (buildConfigItem.field.getType() == boolean.class) {
Boolean value = (Boolean) buildConfigItem.object;
Log.d(TAG, "boolean:" + buildConfigItem.field.getName() + ":" + value);
} else {
Log.d(TAG, "Other:" + buildConfigItem.field.getName() + ":" + buildConfigItem.object);
}
}
完蛋了
您需要,如果你定義BuildConfig場的自定義類型來調整這個代碼。即日期或更復雜的類型。
另請注意,目標模塊應該具有BuildConfig類型的所有依賴關係。 (如果你使用自己的對象來定義BuildConfig中的字段)
祝你好運。
相關問題
- 1. CPAN模塊的遞歸依賴,如何?
- 2. 如何使用Django中的Factory Boy將值傳遞給依賴模型?
- 3. 如何將變量傳遞給模塊?
- 4. 如何將庫傳遞給節點中較低的依賴項?
- 5. 如何將依賴關係傳遞給Serilog Enricher?
- 6. 如何將屬性傳遞給依賴項?
- 7. 如何將依賴關係傳遞給@ auth0-angular-jwt?
- 8. 傳遞依賴
- 9. 如何將值傳遞給
- 10. 與傳遞依賴
- 11. 將參數傳遞給Drupal模塊
- 12. Mef,將參數傳遞給模塊
- 13. Browserify模塊依賴
- 14. 角模塊依賴
- 15. 如何將一個塊傳遞給have_selector?
- 16. 傳遞一個依賴對象到一個Javascript模塊
- 17. 搖籃+ OSGi的Liferay7模塊,包括傳遞依賴
- 18. 如何讓maven解析本地依賴的傳遞依賴項
- 19. setuptools如何處理傳遞依賴?
- 20. 傳遞依賴如何排除。 - Maven的
- 21. 如何通過依賴注入將狀態傳遞到依賴鏈中
- 22. 將塊傳遞給方法
- 23. 如何捆綁循環依賴模塊?
- 24. JSPM Builder:如何依賴其他模塊?
- 25. 如何解決合併模塊依賴
- 26. 將目標名稱傳遞給makefile中的依賴項列表
- 27. 將jQuery依賴關係傳遞給角度js控制器
- 28. 將服務作爲依賴項傳遞給服務
- 29. 將值傳遞給節點js模塊以獲得Express路由
- 30. 如何將maven模塊類傳遞給maven插件
可能不是,你的庫不依賴於應用程序模塊 –