ICSとGingerbreadのPermission比較(メーカー署名関係)
ICSのテストをしていると、前まで動いていたところでSecurityExceptionをはきました。
端末不具合かソースが変わったのかを調べる為に
公開されているICS(Android 4.0)とGingerbread(Android 2.3.3)のAndroidManifest.xmlを比較してみました。
AndroidではAndroid自体をビルドする時に使用されている署名(所謂メーカー所有の署名)とその他の署名の間に格差があり、特定のAPIを叩く際に必要となるpermissionの値が、“signatureOrSystem” もしくは"signature"となっている時は、実行する為にこのメーカー署名が必要となります。
それらAPIを叩くためには、メーカーに依頼して出来たAPKに署名を入れてもらうか、
rootを取る、もしくは自分でAndroidをビルドして実機に焼く等を行う必要があります。
それぞれ、frameworks/base/core/res/AndroidManifest.xml
を比較し、ICSで増えた箇所を赤字+太字で表示しました。
※ICSで減ったものはなかった。
[signatureOrSystem]
android.permission.SEND_SMS_NO_CONFIRMATION
android.permission.RECEIVE_EMERGENCY_BROADCAST
android.permission.INSTALL_LOCATION_PROVIDER
android.permission.CONNECTIVITY_INTERNAL
android.permission.MANAGE_USB
android.permission.ACCESS_MTP
android.permission.MODIFY_PHONE_STATE
android.permission.READ_PRIVILEGED_PHONE_STATE
android.permission.WRITE_MEDIA_STORAGE
android.permission.WRITE_SECURE_SETTINGS
android.permission.WRITE_GSERVICES
android.permission.DUMP
android.permission.RETRIEVE_WINDOW_CONTENT
android.permission.SET_TIME
android.permission.WRITE_APN_SETTINGS
android.permission.STATUS_BAR
android.permission.UPDATE_DEVICE_STATS
android.permission.SHUTDOWN
android.permission.STOP_APP_SWITCHES
android.permission.BIND_WALLPAPER
android.permission.INSTALL_PACKAGES
android.permission.DELETE_CACHE_FILES
android.permission.DELETE_PACKAGES
android.permission.MOVE_PACKAGE
android.permission.CHANGE_COMPONENT_ENABLED_STATE
android.permission.READ_FRAME_BUFFER
android.permission.REBOOT
android.permission.MASTER_CLEAR
android.permission.CALL_PRIVILEGED
android.permission.PERFORM_CDMA_PROVISIONING
android.permission.CONTROL_LOCATION_UPDATES
android.permission.ACCESS_CHECKIN_PROPERTIES
android.permission.PACKAGE_USAGE_STATS
android.permission.BACKUP
android.permission.BIND_REMOTEVIEWS
android.permission.BIND_APPWIDGET
android.permission.GLOBAL_SEARCH
android.permission.SET_WALLPAPER_COMPONENT
android.permission.ACCESS_CACHE_FILESYSTEM
android.permission.CRYPT_KEEPER
android.permission.READ_NETWORK_USAGE_HISTORY
android.permission.MODIFY_NETWORK_ACCOUNTING
android.permission.PACKAGE_VERIFICATION_AGENT
[signature]
android.permission.ACCOUNT_MANAGER
android.permission.HARDWARE_TEST
android.permission.NET_ADMIN
android.permission.REMOVE_TASKS
android.permission.FORCE_STOP_PACKAGES
android.permission.SET_PREFERRED_APPLICATIONS
android.permission.ASEC_ACCESS
android.permission.ASEC_CREATE
android.permission.ASEC_DESTROY
android.permission.ASEC_MOUNT_UNMOUNT
android.permission.ASEC_RENAME
android.permission.DIAGNOSTIC
android.permission.STATUS_BAR_SERVICE
android.permission.FORCE_BACK
android.permission.INTERNAL_SYSTEM_WINDOW
android.permission.MANAGE_APP_TOKENS
android.permission.INJECT_EVENTS
android.permission.SET_ACTIVITY_WATCHER
android.permission.READ_INPUT_STATE
android.permission.BIND_INPUT_METHOD
android.permission.BIND_TEXT_SERVICE
android.permission.BIND_VPN_SERVICE
android.permission.BIND_DEVICE_ADMIN
android.permission.SET_ORIENTATION
android.permission.SET_POINTER_SPEED
android.permission.CLEAR_APP_USER_DATA
android.permission.ACCESS_SURFACE_FLINGER
android.permission.BRICK
android.permission.DEVICE_POWER
android.permission.FACTORY_TEST
android.permission.BROADCAST_PACKAGE_REMOVED
android.permission.BROADCAST_SMS
android.permission.BROADCAST_WAP_PUSH
android.permission.CONFIRM_FULL_BACKUP
android.permission.CHANGE_BACKGROUND_DATA_SETTING
android.permission.GLOBAL_SEARCH_CONTROL
android.permission.COPY_PROTECTED_DATA
android.permission.MANAGE_NETWORK_POLICY
android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE
android.permission.BIND_PACKAGE_VERIFIER