2012-12-22 94 views
2

我將發佈應用程序的多個版本至Android Market/Google Play Store。現在我正在研究這樣做的最佳方式。圖書館發佈免費和付費版本的方法

我在這裏讀了很多關於如何以最簡單的方式實現這個問題的問題。 我不想創建應用程序版本特定的活動,因爲這很容易導致不同版本之間的代碼不一致。所以我想用library的方法。這也似乎是最簡單的方法,而不是我見過的所有示例需要ANT腳本等

的鉅額數量爲了便於討論,我將有:

  • com.app.library
  • com.app.free
  • com.app.paid
  • com.app.paidmore

我的想法是基本代碼庫中的Ø n包名稱。 我的部分活動不會顯示或僅根據包名禁用功能。 這種方法有什麼缺點?我似乎無法找到任何,但我很好奇的意見。當然,所有的應用程序版本在某種意義上都包含了所有的功能,但是這些功能是通過代碼實時禁用的。我認爲修改代碼以破解應用程序以獲得完整功能將是很多工作,但是我是對的嗎?

This方法似乎是錯誤的,因爲它會很容易修改apk並以修改的方式分發它。

回答

0

這種方法的缺點是什麼?

您的應用程序比需要的大(例如,付費功能駐留在免費用戶的設備上)。而且,正如您注意到的那樣,它將所有功能都放在用戶的設備上。

我認爲這將是很多工作來修改代碼來破解應用程序以獲得完整的功能,但我是對嗎?

如果超過五分鐘,腳本小子輸入的速度太慢。反編譯,搜索並替換你的軟件包名稱,重新編譯。

這種方法似乎是錯誤的,因爲修改apk並以修改的方式分發它會很容易。

這種方法實際上可能需要更多的時間 - 也許需要十分鐘的時間 - 因爲腳本小孩可能需要更長的時間才能確切瞭解哪些資源需要更改。

當然,腳本小子只需抓住你paidmore版本和攻擊,所以實際上你freepaid應用程序碰巧有paidmore功能並不是太大的問題。所以,恕我直言,最大的區別是APK的大小,只有你會知道這些版本之間的差異以及它是否是一個問題。

+0

該死的,完全忽略了那個,傻!那麼我想我會在每個版本中定義一個'private final String PACKAGE_NAME',並在應用程序執行任何操作之前將其與'PackageManager'找到的名稱進行比較。至少會被ProGuard混淆,所以它會不那麼容易。你還有其他建議嗎?而apk的大小確實可能是一個問題,好點,但在我的情況下,它只會產生50千字節的差異 – slinden77

+0

@dmmh:「至少會被ProGuard混淆,因此會稍微簡單一些」 - 符號將是,但價值將不會。 「你還有其它的想法嗎?」 - 正如多次說過的那樣,你的問題不會是盜版,而是晦澀難懂。首先擔心其他問題,比如你將如何推銷你的應用。 – CommonsWare

相關問題