2011-07-25 134 views
2

我有一個Android應用程序項目,其中包含我所有的代碼。我已經將這個「app」定義爲here at android.developer.com.定義的庫項目。Android應用程序版本(免費和付費) - 告訴圖書館項目類,如果應用程序是免費或付費

因此,我製作了兩個利用這個庫項目的新Android項目。每個新項目的新包的名字是:

com.myapps.freeapp 
com.myapps.paidapp 

正如你很可能會看到,我試圖發佈應用的免費和付費版本。

什麼是告訴圖書館項目安裝的應用程序是免費版還是付費版的最佳方式?

回答

5

這是從我的blog post,描述如何使用庫項目建立免費/付費版本。

一般情況下,您將創建三個項目;免費項目,付費項目和圖書館項目。

,隨後創建庫項目中的一個Build.java文件,像這樣:

public class Build { 
    public final static int FREE = 1; 
    public final static int PAID = 2; 
    public static int getBuild(Context context){ 
     return context.getResources().getInteger(R.integer.build); 
    } 
} 

現在,你會在每個項目創建的build.xml資源:

[庫] /resources/values/build.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <integer name="build">0</integer> 
</resources> 

[遊離] /resources/values/build.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <integer name="build">1</integer> 
</resources> 

[付費] /resources/values/build.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <integer name="build">2</integer> 
</resources> 

然後,您將能夠在運行時檢查版本:

if (Build.getBuild(context) == Build.FREE){ 
    // Do the free stuff 
} else { 
    // Do the paid stuff 
} 

blog post詳細介紹了具體步驟在Linux命令行中從頭創建項目是必要的。

+0

我最終實現了一個像這樣的方法。 – dell116

+3

這似乎不是一個好主意。我相信根深蒂固的手機可以改變資源價值,將1變爲2可能非常簡單。 –

0

「已付費」和「免費」信息取決於每個應用程序 - 圖書館不知道這些信息。

如果您有依賴於這些應用程序(即代碼來檢查許可證,例如)一些特定的代碼,它應該是在具體應用中,而不是在這兩者共同的部分。

+0

我在想,因爲新的項目有不同的包名,然後我可以通過這些包名到庫項目和創建基於新項目(com.myapps.freeapp和COM的軟件包名稱不同的邏輯路徑。 myapps.paidapp)....這是不可能的? – dell116

+1

我想這將是可能的,但它*感覺不對*:你的圖書館將不會*通用*了。一個可能更好的解決方案是圖書館中的一個抽象類,每個項目擴展一個類;然後,從每個項目中,將相應的類實例化爲庫中的一個對象。 –

相關問題