2012-05-08 61 views
17

我已經構建了一個免費版本的遊戲應用程序,該應用程序現在在市場上有一個名稱爲com.mycompany.myfreegame的名稱。現在我想製作一個付費版本。毫無疑問,對於這兩個版本都需要進行微調和缺陷修復,因此我希望以儘可能緊湊的方式封裝免費和付費信息的編碼,以便我可以同時修復兩個版本中的錯誤。如何維護應用程序的付費和免費版本

如果兩個版本之間的全部差異是在運行時處理的,那麼我可以在源代碼中設置一個標誌,這就是問題的終結。不幸的是,還有兩件事需要考慮,

  1. 包的名稱需要在兩個版本之間不同。
  2. 有些xml需要不同。例如,免費版本需要線性佈局來存放廣告,付費版本則不需要。

實現此目標的最簡單方法是什麼?

+0

那豈不是更容易地處理應用程序的註冊狀態?這可以讓你有一個單一的項目,而你所要做的只是「隱藏」廣告,如果它是付費版本的話。 –

+0

或使用市場中的「應用內購買」? – Eonasdan

回答

7

我想我會嘗試的第一種方法是在Eclipse中使用3個項目:一個用於任一版本的遊戲,以及一個包含所有共享代碼的庫項目。圖書館項目將成爲你的核心遊戲的所有代碼所在,並且特定於版本的項目管理加載不同的佈局,將廣告投放到免費版本中,並向付費版本添加級別/功能/帽子。

你也許能夠用一個螞蟻任務完成一個帶有編譯器標誌的單一代碼庫的目標,但這超出了我的想象。

+2

這是我過去一直追求的解決方案。雖然現在,我會認真考慮在應用程序購買升級。 –

4

我想你要找的是一個圖書館項目http://developer.android.com/guide/developing/projects/index.html#LibraryProjects

從該網頁:

If you are creating an application that exists in both free and paid versions. You move the part of the application that is common to both versions into a library project. The two dependent projects, with their different package names, will reference the library project and provide only the difference between the two application versions.

另一個問題,非常相似,這一次,似乎有一個體面的討論並回答:Multiple Apps with a shared code base

編輯:這是一個關於如何實現一個庫項目的鏈接。 http://developer.android.com/guide/developing/projects/projects-eclipse.html

關於不同的版本略有不同,一個庫項目可以容納。庫項目是先構建的,然後父項(使用庫的項目)最後構建,並且它們合併在一起。兩個項目都可以定義相同的資源標識符和最後構建的項目(父項目),獲得優先權(覆蓋)。所以基本上,您可以在父/調用應用程序中重寫字符串/佈局(可能更多,不確定?)。

例如:假設您有兩個免費和付費的項目。您可以使用默認實現(免費版本)創建一個字符串,並在付費版本(父應用)中覆蓋它。

代碼共享庫中的strings.xml文件:

<string name="AppName">My Application (Free)</string> 

代碼在父應用程序的字符串。xml文件:

<string name="AppName">My Application Premium</string> 
3

我會去與Maven。您可以定義父項目有三個子項目,說:

  • 常見
  • 付費
  • 免費

的Maven允許有不同的配置文件,同時具有相同的代碼庫。

例如,我現在有其中兩個數據庫都使用的項目,因此,所有的應用程序配置文件留在一個共同的項目,在數據庫配置文件和類留在每個項目文件夾。當我在父進行構建,每一個子項目建成後,單元測試通過了,等...

而且,這僅僅是行家的一千優勢之一!

編輯:我剛剛發現,你有行家的android-plugin,用很酷的功能也

+1

+1 - 我使用Maven來管理我的android應用程序的構建步驟和依賴項管理......初始配置稍微難一些,但現在我已經完成了所有設置,它工作得很好。 –

1

可能是現在最好的辦法是使用過Android Studio + gradle這個。 這種情況下允許在控制檯中使用一個命令來構建付費和免費版本。 更多細節在這個帖子:https://stackoverflow.com/a/17286142/1705370

+0

正如有人誰的完成Android Studio中這一點,搖籃整合(尤其是Mac OS版本!)是片狀的,不可靠的,很遠很遠,遠從Beta版的品質。不要使用它。它會到達那裏,但它還沒有。 – Delyan

+0

是的,還有很多錯誤,但可以在生產中使用它。 – galex

+0

例如Android Studio中是在生產中成功使用我們的產品[Glextor AppManager的](http://glextor.com/products/appmanager/)。該產品是支付,免費和一些合作伙伴的版本與Gradle同步。但是我們不得不使用模板化的menifest和一些java文件。 – galex

相關問題