2015-02-02 8 views
5

Ich habe einen Testcode geschrieben, um die Art und den Umfang der Berechtigungen zu überprüfen, die von unseren Apps angefordert werden, und mir ist aufgefallen, dass Android kürzlich zwei neue Schutzebenen hinzugefügt hat.Wofür werden die Flags "appop" und "development" verwendet?

Nach dem official Android docs, das <permission> Element in AndroidManifest.xml akzeptiert einen der folgenden vier Werte:

android: Protectionlevel = [ "normal" | "gefährlich" | "Unterschrift" | „SignatureOrSystem“]

aber ich bemerkte, dass die PermissionInfo Klasse (siehe here) Fahnen für insgesamt sechs Schutzstufen hat. Es scheint, dass diese beiden Ebenen in SDK 16 und 21 hinzugefügt wurden jeweils, aber sie scheinen nicht zu dokumentieren:

int PROTECTION_FLAG_DEVELOPMENT = 0x20 
int PROTECTION_FLAG_APPOP  = 0x40 

Ich habe mich gefragt, was der Unterschied zwischen diesen Schutzebenen und diejenigen, die definiert werden können im Manifest und wenn/wann sollten sie verwendet werden.

Antwort

4

Die appop Erlaubnis ist nichts anderes als eine Reminiszenz an die App Ops-Tool, das Google in Android 4.3 eingeführt zurück und wurde immer entfernt, da . Theoretisch können Berechtigungen mit dem Flag appop vom Benutzer während des Tests umgeschaltet werden, um zu überprüfen, wie sich die App verhalten würde, wenn bestimmte Software- oder Hardwarefunktionen aktiviert oder deaktiviert sind.

Dies ist die eigentliche Beschreibung von Ops App von Google-Ingenieuren gegeben:

Zum Beispiel ist es jetzt für die pro-App-Benachrichtigung Kontrolle, für die Verfolgung von als Standort verwendet wurde, in dem neuen Standort abgerufen UI, für einige Aspekte der neuen aktuellen SMS-App Steuerung usw.

Hier ist ein Link zum vollständigen Beitrag: https://plus.google.com/+DannyHolyoake/posts/FkfBxA5i3iG

3

Die development Flagge (0x20):

Zusätzliche Flagge von Basisberechtigungstyp: Diese Berechtigung kann auch (optional) für die Entwicklung von Anwendungen gewährt werden.

Und die appop Flagge (0x40):

Zusätzliche Flagge von Basisberechtigungstyp: Diese Berechtigung ist eng mit einer App op zugeordnet ist, um den Zugriff zu steuern. Hier

ist die Referenz: http://developer.android.com/reference/android/R.attr.html

Die development Erlaubnis, oder etwas ähnliches, in der Regel in Situationen verwendet, in denen bestimmte Berechtigungen erforderlich sind für die Entwicklung/Debugging-Zwecke, aber nicht für die Freigabe Zwecke. Angenommen, Sie erstellen eine neue Anwendung. Zunächst stellen Sie eine Release-Candidate-Version der Anwendung für eine ausgewählte Gruppe von Personen/Testern bereit. Sie können die Berechtigungsstufe development verwenden, um Funktionen zu aktivieren, die für erste Tests und die Erfassung von Ergebnissen nützlich sein können, z. B. GPS, um den Standort Ihrer Testgruppe und Speicher-/Netzwerkfunktionen zum Speichern und E-Mail-Protokollen zur Analyse anzuzeigen. Sobald Sie für eine allgemeine Veröffentlichung bereit sind, entfernen Sie diese Erlaubnis, da die Sammlung solcher Daten entweder nicht mehr benötigt wird oder, wahrscheinlicher, nicht wirklich für eine größere Gruppe von Leuten möglich ist (d. H. Bedenken bezüglich des Datenschutzes usw.).

Soweit die appop Erlaubnis geht, bin ich nicht ganz sicher ...

+0

Danke Willis! Irgendeine Vorstellung davon, was sie mit "Entwicklungsanwendungen" oder "einer App zur Kontrolle des Zugriffs" meinen? –

+0

Hinzugefügt Info ... – Willis

1

GRANT_RUNTIME_PERMISSIONS gewährt Anwendung zu schälen. Es ermöglicht dem Shell-Benutzer, während der Laufzeit Entwicklungsberechtigungen zu erteilen. Dies geschieht mit den Befehlen pm grant und pm revoke.

Sie können überprüfen frameworks/base/core/res/AndroidManifest.xml zu sehen, welche Berechtigungen, die normalerweise nur für Signatur oder System-Anwendungen gewährt werden, für normale Anwendungen von Shell gewährt werden können.