轉自:http://www.eoeandroid.com/blog-493288-3123.html
問題:我需要在多個android項目中使用同樣的代碼,而且這些代碼又包含資源文件,怎麼辦?
當然會想到打成jar!
但是,當辛辛苦苦把資源文件與各種java文件打成一個jar在另外一個程序中使用的時候,無情的報錯:重複的命名(大致是這個意思,具體是什麼忘記了),
原因是jar的AndroidManifest.xml、drawable等文件名與我現在項目中的衝突了,但是把jar包項目中的這些文件名改了又不好使,所以,有人把資源文件提取出來放在src目錄中,而不是傳統的res目錄下。
圖個方便,我直接把圖片放到了Activity同一包下。
然後在Activity中如下引用這個圖片資源:
Bitmap bm = BitmapFactory.decodeStream(getClass().getClassLoader().getResourceAsStream("com/packetjar/main_bg_hair.jpg"));
ImageView iv = new ImageView(context);
iv.setImageBitmap(bm);
注意圖片路徑的寫法。
這個是圖片,如果是字符串,就可以弄個靜態類來保存這些字符串。
然後打成jar包,怎麼打jar包就不說了,注意把那些引起衝突的文件的勾都去掉:
由於去掉了配置文件啊什麼的,所以如果jar中包含Activity這些東西,而且res下面不止是圖片和字符串啊,還有動畫、樣式等文件, 會變得很麻煩,果斷放棄了。
幸虧有種比較好的代替方案,就是:
我在新建android項目的時候,可以把這個項目設置成庫項目。所謂的庫項目,就是指我這個項目可以被別的項目所引用(當然這個庫項目與引用這個庫項目的android項目必須在一個workspace下面)。
設置成庫項目的方法如下,先新建一個android項目,然後右擊項目->properties->Android
勾上。
這時你會發現,bin目錄下的內容變了:
在bin下面生成了一個jar包,而且res下面是空的,在不是庫項目的情況下大家可以看下是什麼。
按正常的流程,我寫一個Activity,引用res下的資源,並在配置文件中配置。
現在,我要在另外一個項目中引用這個庫項目。
右擊這個新的項目,properties->Android->
點Add,然後會讓你選擇添加庫項目,選擇好了後點確定。
這時發現項目發生了一些變化,多了一個目錄:
裏面有一個jar文件,就是剛纔庫項目中的那個bin目錄下的jar嘛。
這樣,我就可以引用庫文件下的內容了,Activity、Service這些也不用再在配置文件中定義了。
覺得這種方法很方便。