2012-09-24 366 views
3

我正嘗試使用DexClassLoader在我的應用程序中下載JAR/APK。我想模塊化我的應用程序,以便我可以下載用戶可能需要的UI流而不是將它們一起發送到我的主應用程序中。Android動態加載資源

加載實際的類工作正常,我設法加載一些我可以添加到我的主機活動的UI組件。

我的問題是,顯然我無法訪問或添加資源(字符串,drawables,佈局)到我下載的軟件包,因爲他們沒有與我的主機APK。是否可以爲我的可下載JAR/APK動態加載資源?

+0

你有沒有找到解決辦法? –

+0

看起來像另一個問題的副本,檢查出答案:https://stackoverflow.com/a/44138255/3050249 –

回答

1

您可以「動態」下載所需的任何資源,將它們放入您選擇的目錄中,然後在您的應用程序中使用它們。這是我目前在應用中所做的。我不認爲你可以將它們放在與你項目中的資源相同的目錄中,但這很重要嗎?

+0

但如何?在下載的代碼中,如果我在任何地方執行R.string.my_string,則主機應用程序的R文件不包含my_string。實際上它會變成一個常數,並可能指向一個非常不同的字符串。我知道,因爲我已經嘗試過了,出來的字符串完全不同。同樣適用於佈局資源。我也缺少Android設備配置的動態佈局選擇。 – dnkoutso

+0

不,您不能輕鬆地將自己的資產包含在R文件中。但是,如果你下載資產,你不需要。你將你的字符串和png文件下載到Environment.getExternalStorageDirectory()+「/ assetsDir」中,然後從那裏讀取它們。你不能在R文件中包含東西,因爲R文件是在編譯時生成的,而不是在運行時生成的。 – Christine

+0

我明白,我同意。那麼解決這個問題的唯一方法是從/ assetsDir中提取它們並使用它們?我將不得不編寫自己的資源加載,這正是我想要避免的,因爲我可能會失去對不同屏幕和配置的動態資源加載。任何其他想法? – dnkoutso