2011-06-01 24 views
1

我有一個小型Android項目,我用它作爲核心項目。從這個核心項目中,我希望能夠進行定製。同樣的項目,但可以相互定製和安裝?

所以我有使用標準圖標,按鈕等框架格式的應用程序...我想能夠創建不同的版本與不同的圖標和按鈕。

這個我知道該怎麼做。 (我將有兩個單獨的apk文件,兩者具有相同的代碼,但具有不同的資源)

但是,我希望能夠在同一設備上同時安裝核心項目和定製。目前會覆蓋另一個。

我試圖更改清單中的包,但這意味着我將不得不在Java文件中更改R.java的所有導入,這是我想避免的。

是否有可能在xml中只改變一些東西,使我有兩個項目使用相同的Java文件但使用不同的資源?

回答

2

您應該使用Android庫。

將所有應用程序代碼放入一個Android庫,然後創建兩個具有自定義圖標和不同包名的Android應用程序。在最終的Android應用程序中定義的資源將覆蓋Android庫中所有已經存在的資源。

一個缺點:您需要在Android應用程序中擁有幾乎相同的AndroidManifest.xml文件副本(但它們仍應具有不同的軟件包名稱)。

欲瞭解更多信息:

  1. Android的文檔:Settings up Android Library project
  2. 我的帖子:Android Application, Android Libraries and Jar Libraries.這其中描述的Android庫的工作原理。
+0

這是唯一的選擇嗎?對於我想要的東西似乎有點矯枉過正,我已經在VSS中設置了一個分支,可以讓我輕鬆創建兩個項目,唯一的問題是它們在安裝時會相互覆蓋。如果一個圖書館是我唯一的選擇,它將涉及到它的外觀再次分裂整個事情。但是我認爲它比不得不更改所有R導入更好 – 2011-06-01 12:55:50

+1

您可以強制'R類位於與AndroidManifest中定義的包無關的包中。但是這需要一些編碼(ant腳本和ant的自定義Java任務)。另一方面,Android庫並不那麼令人煩惱。當你習慣它時,它實際上非常簡單直觀。此外,Android庫可以在一秒之內轉換爲Android應用程序(反之亦然)。 – inazaruk 2011-06-01 13:13:01

2

您應該創建一個包含所有源代碼的庫項目,併爲每個引用該庫項目的可安裝包創建一個項目。然後,您可以定義/覆蓋可安裝項目中的任何資源定義

相關問題