2016-06-02 23 views
6

Firma la mia applicazione Android come sistema appFirma la mia applicazione Android come sistema app

Nella mia azienda, vorremmo il controllo totale per il consumo della batteria nel campo, utilizzando solo 2G e GPS potrebbe scaricare la batteria terribilmente veloce. Ciò che abbiamo deciso è che dobbiamo avere accesso root al telefono cellulare, in modo che quando il telefono è inattivo, spegniamo il consumo di batteria inutile. E inoltre non permetteremo agli utenti di disinstallarlo e cancellare i dati ad esso.

mia domanda è:

  1. Dove posso trovare questi chiave di firma?
  2. Sta andando a un accesso root Se mai sono riuscito a firmare con successo a ?
  3. Qual è la differenza tra Root vs Firmato con chiave?
+2

È possibile registrarsi solo l'applicazione come un'applicazione di sistema se si sta costruendo per android da fonte per il vostro progetto. –

+0

@ VíctorSantoja Dubito che sia l'unico modo possibile, ho cercato questi problemi tutta la settimana ma quello che ho trovato è stato intrigante. Penso che possiamo firmare attraverso le chiavi del costruttore. [http://stackoverflow.com/a/15655078/3974048](http://stackoverflow.com/a/15655078/3974048) – david

+1

So che se si firma l'apk con le chiavi del produttore, è possibile ma non si può t pubblicare questo apk in Google Play –

risposta

4

Ben al di sotto è la vostra risposta,

  1. Potete trovare le chiavi della piattaforma da HERE. Il comando per firmare apk (per Linux) è:

    java -jar signapk.jar -w platform.x509.pem platform.pk8 APPLICATION.apk APPLICATION_sign.apk

  2. Se firmare l'APK con chiavi della piattaforma non sarà necessario l'accesso di root si può semplicemente installarlo dal "adb install" di comando, e sì in qualche modo è come root, perché può accedere a tutte le API interne, ma tieni presente che se la tua app è firmata dal sistema, non puoi scrivere spazio di archiviazione esterno.

  3. Prima di tutto non combinare sia root sia utente in cui l'app di sistema è un tipo di applicazione che distingue dall'applicazione normale sotto il collegamento potrebbe cancellare la tua confusione in merito.

    what-is-the-difference-between-android-user-app-with-root-access-and-a-system-ap

+0

non posso davvero scrivere archivi esterni? è corretto? – david

+0

se si effettua l'app di sistema o si può dire di firmare con il certificato di piattaforma, quindi NO non è possibile scrivere su memoria esterna. –

+0

grazie per la risposta, la mia mente era così assente la risposta è corretta. – david

2

rispondere alle vostre tre domande:

1 - Dove posso trovare questi chiave di firma?

Da Android's own documentation nella sezione Keys Stampa

L'albero Android include test-chiavi sotto build/target/prodotto/sicurezza

Ma la parte successiva è dove si dovrebbe davvero prestare attenzione

Poiché le chiavi di prova sono pubblicamente note, chiunque può firmare i propri file .apk con le stesse chiavi, che possono consentire loro di sostituire o applicazioni di sistema di hijack incorporate nell'immagine del sistema operativo.Per questo motivo è importante specificare per l'immagine del sistema operativo Android rilasciata pubblicamente o implementata con un set speciale di chiavi di rilascio a cui è consentito l'accesso solo a a.

Quindi, in pratica, a meno che non si riesca in qualche modo ad accedere alle chiavi pvt del produttore, potrebbe essere difficile ottenerlo. Questo è il motivo per cui un utente in un commento precedente stava dicendo che questo è solitamente ottenuto producendo la propria build.

2 - Vorrà un accesso root Se mai riuscito a gestire con successo per firmarlo?

Non si otterrà "accesso root" eseguendolo, ma si avrà accesso a un livello estremamente alto di accesso. In particolare, ciò che ti raggiunge è che ti verranno concesse le autorizzazioni con dichiarato android:protectionLevel="signature" che è, probabilmente, il più esclusivo.

Un'altra conseguenza pericolosa (o divertente, a seconda di come la si guarda) è che ora è possibile eseguire l'app sotto il processo utente di sistema android:sharedUserId="android.uid.system" - con le regole di sicurezza "process sandboxed" di Android questo normalmente fallirebbe.

3 - Qual è la differenza tra Root vs Firmato con chiave?

Con un app firmato con la chiave piattaforma dalla vostra generazione, è possibile ottenere i permessi di cui sopra, o eseguire l'applicazione con UID 1000 (uid sistema), che in Android è molto più potente rispetto alle UID di altre applicazioni a causa delle autorizzazioni che può richiedere, si tratta comunque di un comportamento specifico di Android. In un dispositivo rooted, è possibile utilizzare UID 0 (root) che ha l'accesso più ampio nei sistemi basati su linux, è possibile ignorare la maggior parte dei sandboxing/checks/fences di sicurezza sul sistema operativo.

Spero che questo aiuti;)

+0

Ho creato la mia app come app di sistema con il comando sopra menzionato. Nel tuo primo punto hai fatto un punto molto valido "Chiunque può firmare i propri file .apk con gli stessi tasti, il che potrebbe consentire loro di sostituire o dirottare le app di sistema incorporate nell'immagine del tuo sistema operativo". Come posso superare questo ho menzionato un modo, ma non sono in grado di firmare il sistema operativo distribuito con un set speciale di chiavi di rilascio. Grazie in anticipo so che è una vecchia risposta, ma apprezzerò se spiegherò o fornirò qualsiasi link riguardante il problema. –

+0

@HassanMunir Nessun problema, il punto è condividere le conoscenze. Per rispondere alla tua domanda, dipende da cosa esattamente stai cercando di ottenere, e dalla tua posizione come sviluppatore: 1-sei tu qualcuno che sta facendo la propria build di Android da AOSP o il codice di qualche altro progetto Android. 2- sei qualcuno che in qualche modo (root o altro), può scrivere nella partizione/system 3- sei uno sviluppatore "normale" che crea un'app per il pubblico generale – HenriqueMS

+0

@david Mentre sempre più persone continuano a guardare la tua domanda , è importante notare che la risposta accettata è molto pericolosa, come puoi leggere nella mia risposta (citata direttamente da Google Docs) - credo che questa dovrebbe essere contrassegnata come la risposta corretta – HenriqueMS

Problemi correlati