2012-07-09 50 views
1

我正在使用Eclipse + Subversion進行Android開發。我曾經用廣告創建了我的應用程序的免費版本,另一個版本沒有它們付款,所以我將它們保留在兩個獨立的分支上進行顛覆。與Android(Java)項目的Eclipse合併問題

我發現的問題是,由於這些是Google Play和其他市場的兩種不同的應用程序,它們必須具有不同的軟件包名稱。所以我有,例如:

com.package.game com.package.gamefree

當我做遊戲的免費版本的一些變化,並希望與顛覆它們合併到所許科,我發現自己陷入了麻煩,因爲免費遊戲的源文件在com/package/gamefree下面,並且在com/package/game下付款

我最終做了一個「手動」合併,源文件,但我也必須檢查已添加到另一個目錄中的文件和那些已被刪除的文件。浪費時間。

那麼,有沒有什麼方法讓顛覆者知道com/package/game在一個分支中是與其他的com/package/gamefree相同的目錄?

非常感謝提前,

回答

0

谷歌搜索在深一點後,我發現我更好的機會是隻有兩個:

  • 使用ANNY方式ANT,在建設時間automatizes免費和付費版本之間的切換。
  • 使用兩個版本之間共享的Android庫項目。

我已經看到,大部分使用ANT的人都因缺乏其他選項的前一段時間做這件事,但因爲是基於Eclipse/ADT的Android庫項目,這是對這類事情的首選方式。即使在Android的開發文檔,他說:

http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

如果要創建存在於免費和付費兩種版本的應用程序。您將這兩個版本通用的應用程序部分移動到庫項目中。這兩個依賴項目以其不同的包名稱將引用庫項目,並僅提供兩個應用程序版本之間的區別。

這似乎是對我來說也是最好的方式,因爲我從來沒有使用ANT,並給予庫選項沒有理由去學習它。

所以我這樣做了:我的項目現在被拆分成MyGameCore,它是MyGameFree和MyGamePay項目的所有常見文件的庫項目,現在只需要最少的類就可以擁有不同的主包名稱Google Play知道他們是不同的應用程序,並且根據Google文檔的原始資產文件夾無法移動到圖書館。無論如何,這些都是二進制文件,我只是簡單地從一個版本複製到另一個版本,而不是經常更改。

因此,從現在開始,大部分時間我只需要在MyGameCore項目上工作,並且所做的更改對MyGameFree和MyGamePay項目都具有中等效果,而無需合併分支。

這將節省很多時間,我將在第一個代碼行中用於我的更多項目。

1

我猜在這裏,但也許你可以有在com.package.gamefree包放在trunk的免費應用程序。

在樹枝上,你可以有其他進口樹幹上作爲一個依賴的lib開發了一個,並與被com.package.game下包裝發射類繞到它,添加許可的東西...

這樣您只需修改一次代碼,然後構建2個應用程序。

+0

不錯的建議,但它在測試之前需要一些工作。我會在本週嘗試一下,結果回來。非常感謝。 – 2012-07-09 18:35:26

+0

當然沒有問題,是的,我知道它的粗糙,但正如我所說,我只是猜測:)。順便說一句,如果你需要一個自動化的過程來適應這種建築,你可以看看詹金斯持續集成服務器http://jenkins-ci.org。它是開源的,它允許您創建依賴於其他人的構建作業,並與maven結合在一起實現。還有持續的整合規則。 – Morfic 2012-07-09 18:43:49

+0

好吧,我現在正在處理這個問題,並且發現了第一個重大問題。我已經將所有文件從com.package.gamefree移動到了com.package.gameshared但是主要活動,所以我將把所有內容都放到com.package.gameshared中,並且只是com.package.gamefree和com.package上的主要活動。遊戲在每種情況下。但是問題是資源的R文件是在與主要活動相同的包中生成的,它存儲在AndroidManifest.xml文件中,我無法更改它,因爲市場將它用於識別不同的應用程序。 – 2012-07-18 11:13:27