2010-07-28 127 views
3

我正在開發我的第一款Android應用程序,而且我幾乎可以開始考慮將其作爲付費應用程序投入市場。爲市場保護應用程序

在研究這一步驟的過程中,我發現打破Google的複製保護方案基本上微不足道。我不知道這個問題有多嚴重,或者我們需要研究其他形式的保護。

很顯然,像ProGuard這樣的混淆器是一個很好的第一步,但是如何保護你的應用程序免於被釋放?其次,除了加密內容(這很難,因爲解密密鑰也必須存儲在程序中),你會如何防止某人僅僅傾銷sqlite3數據庫的內容?

回答

2

這聽起來像你有兩個安全問題:

  1. 用戶複製並無需支付
  2. 開發反編譯你的源代碼,並竊取它自己的應用程序

關注分發應用程序#1:它絕對有可能爲用戶做到這一點。一種解決方案是免費提供應用程序,但禁用它直到他們在獨立網站上註冊(他們付費)。但是,這種方式違背了使用市場作爲分發應用程序的便捷方式的目的。

關注#2:這是一般開發Java應用程序的問題,並非針對Android。正如你所說,使用混合器是一個好的開始。但是,您總是能夠反編譯Java代碼,並且我知道這確實沒有任何簡單的解決方法。

我的意見是,盜版是非常困難的,如果罪魁禍首有足夠的動機停止。不過,總的來說,我不認爲它是Android開發人員的一個巨大關注。我知道很多不會眨眼下載盜版電影或視頻遊戲的人,但卻爲他們的所有移動應用程序付費。

+0

那麼,依靠我們大多數目標人口是計算機文盲我們唯一的選擇? 我很清楚,除了不使用計算機之外,沒有真正的計算機安全這樣的事情,我只是希望找到一種方法,使得難以推遲一些可能想要竊取它的人。 – AndyD273 2010-07-28 15:38:00

+2

我寧願將其視爲依賴於我們的大多數目標人羣都是誠實的事實;) – dbyrne 2010-07-28 15:50:27

+0

這種新的許可服務聽起來很有希望,儘管我會擔心在不需要網絡連接的應用程序中使用它。 – dbyrne 2010-07-28 15:55:33

0
  1. 請勿使用sqlite。使用您自己的自定義格式。這不是牢不可破的,但肯定會使其難以提取數據
  2. 只是不要將您的敏感數據保存在客戶設備上。將其保存在您自己的服務器上的Internet上。並使您的應用程序成爲服務器端數據/應用程序的「瘦」客戶端。

目前90%的設備具有互聯網連接,其運行時間的90%。您應該考慮數據的重要性,並選擇始終保持服務器端,需要Internet連接,或將其保留在客戶端,使其易受攻擊。

+0

嗯,不知道如何去做我自己的自定義格式...數據庫有一打表,和數千條記錄......在搜索平面文件時保持響應速度會很困難。 我認爲數字2,雖然不是一個壞主意,但似乎速度可能再次成爲問題,尤其是如果向下鑽取幾個等級,並且每次都必須等待一秒鐘。 – AndyD273 2010-07-28 16:00:28

+0

來解決連接延遲問題,您可以使用您的自定義二進制協議並始終保持套接字連接,或者找到一種方法來處理Android內部HTTP客戶端。無論如何,持久連接是一個關鍵。 – 2010-07-28 16:07:06