Devo proteggere la mia app Android dalla copia?

Devo proteggere la mia app Android (scaricata da Google Play Store) dalla copia? Sto seguendo collegamenti a documenti che dicono cose in conflitto.

Se cerco “Crittografia app” utilizzando la guida di Google Play Developer Console, viene visualizzata la pagina Web “Servizio licenze Google Play” che termina:

Si noti che a partire dalla versione JellyBean del sistema operativo Android, tutte le app, a pagamento e gratuite, sono crittografate per impostazione predefinita e, pertanto, non richiedono alcuna protezione aggiuntiva contro la copia non autorizzata, come il server di gestione licenze di Google.

“Filtri su Google Play” dice:

Google Play non supporta più la funzionalità di protezione dalla copia nella Console per gli sviluppatori …

e fornisce un collegamento a ” Sostituzione per la protezione dalla copia “. Questo link a ” Impostazione per le licenze “, che collega a ” Aggiunta di licenze alla tua app “, si collega a ” Domande frequenti sul supporto delle licenze di mercato “, che visualizza la pagina Web ” Servizio licenze di Google Play ” (con il testo sopra che indica che le app post-Jellybean sono crittografate). Quindi, a meno che non lo fraintenda, questo sembra contraddire se stesso.

A giudicare dalle date di altri post su questo argomento, suppongo che devo fare la mia protezione app utilizzando il LVL (License Verification Library) di Google Market Licensing. Tuttavia, ci sono segnali che questa non è la migliore soluzione attuale (ad esempio, l’app di esempio di Market Licensing appare obsoleta, pochi post recenti sul forum che lo utilizzano, nessuna class udacity.com che potrei trovare sul suo utilizzo). Quindi ho pensato che sarebbe stato utile per ottenere una risposta definitiva prima.

Innanzitutto non è ansible proteggere il tuo codice al 100%. Ma puoi rendere il lavoro dell’hacker abbastanza duro. Esistono alcune tecniche per proteggere l’ app Android di protezione del codice. Vi consiglio di vedere lo strumento proguard .

ProGuard è un programma per la riduzione di file di classi Java gratuito, ottimizzatore, offuscatore e preverifier. Rileva e rimuove classi, campi, metodi e attributi non utilizzati. Ottimizza bytecode e rimuove le istruzioni inutilizzate. Rinomina le restanti classi, campi e metodi usando nomi brevi e privi di significato. Le applicazioni e le librerie risultanti sono più piccole, più veloci e leggermente più resistenti al reverse engineering.

Se la tua APP forniva un tipo di servizio, un gioco online (un server richiesto), puoi semplicemente proteggere il tuo servizio tramite una regola di registrazione / authorization.

Oppure, se la tua APP era uno strumento, un gioco autonomo, è davvero difficile da proteggere. C’è qualche sito Web che fornisce un servizio che consente all’utente di scaricare direttamente il file APK da GooglePlay e senza alcun acquisto …… Chiunque può installare questi APK semplicemente autorizzando l’installazione APP da sorgenti non GooglePlay. In questo caso, hai bisogno di un modo per proteggere la tua APP dalla copia.

Avendo preso in considerazione il feedback a questo post (grazie), credo che la risposta sia “no”, non ho bisogno di proteggere la mia app dall’essere copiata poiché il beneficio discutibile non giustificherebbe lo sforzo (spiegazione spiegata di seguito). Tuttavia, questa risposta è basata sull’app che sto attualmente sviluppando e non si applica a tutti.

L’app non dipende da un componente del server e, di conseguenza, funzionerà separatamente. Cioè, se qualcuno ottiene una copia pirata di esso, sarà in grado di eseguirlo. Tuttavia, l’app avrà un prezzo basso. Quindi, se qualcuno fa una copia e inizia a venderla illegalmente, dovrebbe venderne molti per fare soldi e giustificare i loro sforzi e rischiare di essere presi. Potrebbero anche scegliere di regalare una copia pirata dell’app, ma suppongo che la maggior parte degli utenti di una tale versione pirata non l’avrebbero pagata in primo luogo.

Se integro il LVL di Google Market Licensing, ciò renderebbe difficile piratare l’app. Tuttavia, con uno sforzo sufficiente, potrebbe essere decodificato sul codice sorgente (anche con me con Proguard), la funzionalità LVL potrebbe essere eliminata e l’app ricostruita. Inoltre, l’integrazione LVL è uno sforzo significativo (almeno per me), rischia di introdurre bug nell’app e non sono convinto che si tratti di una buona soluzione (l’app di esempio di Market Licensing non è aggiornata, pochi post recenti del forum a usarlo, …). Di conseguenza, non penso che lo sforzo e il rischio valgano il beneficio.

Se l’app avesse un prezzo di vendita elevato, la mia risposta sarebbe probabilmente diversa e prenderei in considerazione altre opzioni. Ad esempio, il LVL di Google Market Licensing potrebbe essere integrato, ma ciò non eliminerebbe completamente il rischio di pirateria, a meno che Android non fornisse la crittografia sicura delle app. La crittografia delle app mi sembra una grande sfida (dato, ad esempio, che deve essere decodificato a un certo punto per eseguirlo), il che potrebbe spiegare il motivo per cui la crittografia dell’app post-Jellybean è stata rimossa (se è stata rimossa). Potrei anche spostare la funzionalità sul lato server: questa mi sembra la strategia più sicura, anche se sarebbe costoso svilupparla e richiederebbe che il lato server fosse gestito e mantenuto in futuro.

È probabile che ci siano aspetti di ciò che non ho considerato. Per favore commenta se non sei d’accordo con la mia risposta, o hai altri pensieri.