2013-02-06 55 views
-2

當我將APK文件發送給某人的電子郵件時,他可以複製該文件一百萬次並將其賣出一百萬次,但我不想那麼做。如何創建複製保護的apk文件?

如何將保護集成到Java文件,manifest.xml或其他地方,使程序的副本不起作用?或者我可以爲APK文件設置一次性密碼嗎?

+0

接受的答案是http://stackoverflow.com/questions/7717580/how-to-proect-apk-file-being-shared-with-other-people – hakiko

回答

2

你不能。沒有辦法做到這一點。不需要的分發是您將apk發送給某人時必須承擔的風險。

您可以做的最好的事情是每次將電子郵件發送給某人時編譯一個單獨的apk,並在其中放入一個唯一的代碼。當應用程序第一次啓動時,讓它註冊一個在線服務器。如果有人試圖再次註冊相同的代碼,那麼您知道該apk已發送給其他人或安裝在多個設備上。在這種情況下,您的服務器可以告訴您的應用程序該特定的代碼已被使用,並拒絕其工作。

缺點這種方法的:

  1. 您需要專門編寫新的APK,爲每個單獨的電子郵件
  2. 任何人都可以反編譯的應用程序和代碼更改爲別的東西,並重新編譯和使用它。或者他們可以刪除整個檢查機制,如果他們想要的話。

總之,沒有萬無一失的方法來做到這一點。

+0

您可以使用ProGuard來使應用程序的反編譯變得更加困難 – nicopico

+0

你的意思是,我需要服務器? – nns

+0

@nicopico反編譯仍然很容易。它更難讀。而現在你有反編譯器可以在一定程度上撤銷混淆。 –

0

你沒有任何辦法做到這一點,如果你希望你的用戶能夠安裝應用程序

可能的解決方法將是檢驗設備ID,並且只允許當的DeviceID應用程序進行已被授權。

顯然你必須在你的代碼中管理這個,如果你需要授權許多設備,這可能會變得非常麻煩。另外我不知道每個設備具有一個的DeviceID

看到Is there a unique Android device ID?,瞭解更多有關這

0

創建自定義APK這是代碼只是一些額外的線路使用下列選項之一

如何關於保持計數時間App啓動並且超出時間顯示消息並關閉它?

或者您可以在您的代碼中檢查#天的試用期,在您的MainActivity/Base Activity檢查中,如果超過退出應用程序,則從現在開始5天后檢查。

您可以隨時將這些詳細信息保存到您的應用程序共享的首選項中,並與之交叉檢查。