2012-07-02 13 views
5

Sto lavorando a un'applicazione Android con un'enorme base di codice sorgente. Non mi piace che la mia applicazione non abbia bisogno di alcune autorizzazioni, e ho iniziato a sospettare che ce ne siano alcune che sono deprecate e non più necessarie.Come determinare le autorizzazioni deprecate?

La domanda è - Come determinare se è così, e quali sono davvero deprecati?

ho cercato di rimuovere un permesso sospetto off e ricompilarlo (con Eclipse Juno), e spera che il compilato per contrassegnare come un errore o un avviso, ma non lo ha fatto.

Inoltre, ha provato a eseguire esplicitamente Lint sul codice e non lo ha rilevato.

L'applicazione è compilata e viene eseguita sul dispositivo, e credo che genererà un'eccezione di runtime con AccessDenied quando l'API pertinente verrà richiamata in un determinato flusso di codice.

Esiste un modo efficace per rilevare tale API, senza sfogliare tutto il codice sorgente o eseguire l'applicazione in più scenari?

Grazie!

risposta

0

Sfortunatamente, la risposta breve è no. Non c'è un modo automatico per rilevarlo. Gli unici metodi provati e veri stanno rimuovendo le autorizzazioni una per una e testando o passando attraverso il codice per ispezionarle.

Ci dovrebbe essere, però. Sospetto che non sarebbe così difficile scrivere uno script che legge il codice del progetto e determina le autorizzazioni necessarie. La parte più difficile sarebbe tenerlo aggiornato con le modifiche API.

1

Esegui il codice con -Djava.security.debug = accesso, errore. Questo mostrerà tutte le autorizzazioni effettivamente utilizzate.

+0

I suoni interessanti. Ma in realtà come faccio sul mio dispositivo? a chi dare quella bandiera? quando si installa l'apk? – Dekel

+0

Questa è una soluzione Maven? – TacB0sS

0

Direi che stai andando nella direzione sbagliata.

Invece di chiedere quale permesso è possibile rimuovere, passare attraverso l'elenco e generare una giustificazione ricercata del motivo per cui ciascuna autorizzazione è necessaria e quali funzionalità dovrebbero essere disabilitate se l'autorizzazione è stata rimossa.

Se si capisce cosa fa un permesso, non sarà difficile generare query di ricerca per trovare i punti più probabili in cui viene utilizzato almeno in codice Java. Ma molti manifesti (e anche la risposta SO occasionale) hanno permessi che non sono necessari; non è raro vedere richieste di permessi che la piattaforma non concederebbe nemmeno alle app non di sistema.

0

Non so quanto bene funzioni, ma sembra che alcuni ricercatori dell'UC Berkeley stiano lavorando a un progetto per scansionare app Android e mostrare quali permessi usano. Maggiori informazioni allo http://www.android-permissions.org/