2015-02-02 12 views
5

Stavo scrivendo del codice di test per verificare il tipo e l'ambito delle autorizzazioni richieste dalle nostre app e ho notato due nuovi livelli di protezione aggiunti di recente ad Android.A cosa servono le bandiere di protezione "appop" e "sviluppo"?

Secondo il official Android docs, l'elemento <permission> in AndroidManifest.xml accetta uno dei seguenti quattro valori:

Android: ProtectionLevel = [ "normale" | "pericoloso" | "firma" | "SignatureOrSystem"]

ma ho notato che la classe PermissionInfo (vedi here) ha bandiere per un totale di sei livelli di protezione. Sembra che questi due livelli sono stati aggiunti in SDK 16 e 21, rispettivamente, ma non sembrano essere documentata:

int PROTECTION_FLAG_DEVELOPMENT = 0x20 
int PROTECTION_FLAG_APPOP  = 0x40 

mi chiedevo che la differenza tra questi livelli di protezione e quelli che possono essere definiti nel manifest e se/quando dovrebbero essere usati.

risposta

4

Il permesso appop non è altro che una reminiscenza dello strumento Ops App che Google ha introdotto di nuovo in Android 4.3 ed è stato rimosso da allora . In teoria, le autorizzazioni con il flag appop potevano essere attivate dall'utente durante il test per verificare come si comporterebbe l'applicazione quando alcune funzionalità software o hardware erano abilitate o disabilitate.

Questa è la descrizione reale di App Ops forniti da Google ingegneri:

Per esempio, è utilizzato oggi per il controllo di notifica per-app, per tenere traccia di quando posizione è stata letta nella nuova posizione UI, per alcuni aspetti del nuovo controllo applicazione SMS corrente, ecc

Ecco un link per il post completo: https://plus.google.com/+DannyHolyoake/posts/FkfBxA5i3iG

3

Il development bandiera (0x20):

Ulteriori bandiera dal tipo di permesso di base: questa autorizzazione può anche (opzionalmente) essere concesso alle applicazioni di sviluppo.

E la bandiera appop (0x40):

Ulteriori bandiera dal tipo di permesso di base: questa autorizzazione è strettamente associato ad un op app per il controllo degli accessi.

Ecco il riferimento: http://developer.android.com/reference/android/R.attr.html

Il development il permesso, o qualcosa di simile, di solito è usato in situazioni in cui sono richieste determinate autorizzazioni per scopi di sviluppo/debugging, ma non per scopi di rilascio. Ad esempio, supponiamo che tu stia creando una nuova applicazione. Inizialmente, si distribuisce una versione candidata di rilascio dell'applicazione a un gruppo selezionato di persone/tester. È possibile utilizzare il livello di autorizzazioni development per abilitare le funzionalità che potrebbero essere utili per il test iniziale e la raccolta dei risultati, come il GPS per vedere la posizione del gruppo di test e le capacità di archiviazione/rete per archiviare e registri di posta elettronica per l'analisi. Una volta che sei pronto per una versione generale, rimuovi questa autorizzazione, dal momento che la raccolta di tali dati non è più necessaria o, più probabilmente, non è realmente possibile per un gruppo più ampio di persone (ad esempio problemi di privacy, ecc.).

Per quanto riguarda il permesso appop va, io non sono del tutto sicuro ...

+0

Grazie Willis! Qualche idea di cosa intendono con "applicazioni di sviluppo" o "un'applicazione per controllare l'accesso"? –

+0

Aggiunte alcune informazioni ... – Willis

1

GRANT_RUNTIME_PERMISSIONS è concesso a sborsare applicazione. Consente all'utente della shell di concedere autorizzazioni di sviluppo durante il runtime. Questa operazione viene eseguita con i comandi pm grant e pm revoke.

È possibile controllare frameworks/base/core/res/AndroidManifest.xml per verificare quali autorizzazioni normalmente concesse solo alle app di firma o di sistema possono essere concesse alle normali applicazioni tramite shell.

Problemi correlati