0

我爲我的應用程序創建了兩種風格。免費版和專業版。專業版可以訪問其他功能(活動)。我加入了相關的資源文件夾針對每種口味和更新我的gradle產出:Android Productflavors購買/下載Pro版本

productFlavors { 

     free { 
      applicationId "com.***.***.free" 
      versionName "1.0 - Beta - Free" 
     } 

     pro { 
      applicationId "com.***.***.full" 
      versionName "1.0 - Beta - Pro" 
     } 

    } 

    sourceSets { 

     free { 
      res.srcDirs = ['src/free/res', 'src/free/res/'] 
     } 

     pro { 
      res.srcDirs = ['src/pro/res', 'src/pro/res/'] 
     } 

    } 

我在免費版本中添加上應做到以下幾點主屏幕按鈕:

  • 打開一個對話框,在支付
  • 如果成功的話......(做的東西)
  • 開始親 - 版本

而在 「...」 是我的曲提示: - 當我將附加的專業版活動和相關資源從main-res文件夾移動到pro-res文件夾時,免費版下載是否不包含它們,因此必須在購買時下載它們? 還是免費版下載包含一切?所以我必須禁止從免費版本訪問它? 因爲如果免費版本只包含必要的東西,並且當您購買專業版時,額外的下載將會更好。

  • 如果不是,該怎麼做?
+0

要做到這一點的最佳方法是不要有2個版本,但有1個版本的應用內購買可支持付費內容。 –

+0

所以免費版本包含一切。但只要你沒有購買它,額外的東西被封鎖? – XxGoliathusxX

+0

是的。查看https://developer.android.com/google/play/billing/billing_overview.html –

回答

0

簡單的方法
通常和實現這一流程的最簡單的方法是創建一個應用程序,其中包括所有類和資源,然後編程方式禁用它們中的一些,直到應用程序內支付完成。


可能的方式
有可能不包括在APK一切:

  • 代碼(類)
    您可以在運行時加載編譯後的代碼。看看thisthis。一個問題是活動類必須在清單中註冊,所以它們必須存在於apk中。可能的解決方案是創建這些類,但將其大部分邏輯分離爲動態加載的代碼。
    請注意,Google Play的policy禁止從Google Play以外的來源下載可執行代碼。

  • 資源
    資源可以作爲被成功後在應用程式下載到應用程序的目錄中的文件進行管理。然後你可以使用它們作爲文件(而不是作爲資源,編寫更多的代碼來加載它們)。這樣你就需要處理方向,語言等等,在你的代碼中手動修改。此外,似乎不可能使用xml佈局,即在運行時加載的樣式,因此您可能會將它們留在資源中,或者通過編程設置(不是爲了膨脹資源,而是在代碼中構造佈局)來​​替換它們。


更多信息

至於你的配置,freepro口味有不同的應用程序,因爲他們有不同的軟件包名稱(applicationId),所以它是不可能自動遷移用戶從一個到另一個。