引言
之前一直頭痛於沒有辦法在多個程式中共用資源,用作公用類庫的方法也是使用的匯出jar再匯入的辦法,現在終於初步搞明白了,可算解脫了~,分享出來。
建立公用庫
首先建立公用庫的Android項目,名為MyCoreLib:
完成後在左側包瀏覽器裡右鍵點選我們建立的這個項目,選擇Properties項:
左側選擇Android分類,右側勾選Is Library選項:
完成後在包資源管理員中刪除預設產生的資源,以避免以後被引用時衝突:
開啟AndroidManifest.xml,刪除中紅色部分代碼:
添加測試用資源
至此初始的空庫就建立完成了,現在我們來添加一個資源以供其他程式使用,我在這裡僅添加了一個名為libName的字串資源:
建立測試專案並引入公用庫
現在建立一個名為LibTest的項目來嘗試調用公用庫:
還是右鍵點選項目,選擇Properties:
還是左邊選擇Android分類,右邊點擊Add按鈕選擇以添加MyCoreLib類庫到項目:
完成後即添加到項目中來了:
此時還能看到gen目錄下也已經有MyCoreLib的包名及其資源ID了:
但此時你會發現字串資源裡莫名其妙多出兩個之前已經刪除的資源,這其實是因為此時已將引用的資源與程式預設包裡的資源混編在一起了,你可以看到上面預設包裡的資源ID和下面這裡也是一模一樣的。
換言之,你可以以使用本地資源的方式直接調用引用來的資源。
測試調用公用庫的資源
比如在AndroidManifest.xml裡這樣修改:
在java代碼中也同樣是使用調用預設資源的方式直接調用即可,當然也可以顯示加入公用庫的包名以調用;但加入顯示包名的方法在XML檔案中行不通,多次嘗試都提示找不到資源,也就是說在XML中只能以調用預設包資源的方式調用公用庫資源。
編譯並運行效果:
可以看到之前我們在公用庫中設定的資源內容被正確顯示出來了。
結語
這種調用方式不只是使資源調用成為可能,公用代碼在編輯起來也比jar方式方便許多,非常實用。
之前網上尋找此方法許久都沒獲知,此時突然想起參考Scoreloop的引用方法,總算將其搞明白了。