Android110418: PackageParser和AndroidManifest.xml注記
Email: zcatt@163.com Blog http://zcatt.blog.chinaunix.net 內(nèi)容提要 PackageParser和AndroidManifest.xml.以供備忘和參考。
聲明 僅限學(xué)習(xí)交流,禁止商業(yè)用途。轉(zhuǎn)載需注明出處。
版本記錄 Date Ver Note 2011-04-18 0.1 Draft. zcatt, Beijing apk包中的AndroidManifest.xml文件包含了package的各種描述信息. 分析和獲取這些信息的工作是由PackageParser完成的. 這里簡述之. 首先我們先羅列AndroidManifest.xml文件的簡要結(jié)構(gòu), 其次在大致整理PackageParser的邏輯.
AndroidManifest.xml的簡要結(jié)構(gòu) ==================================== AndroidManifest.xml的內(nèi)容在frameworks/base/core/res/res/values/attrs_manifest.xml中定義. 這里簡要羅列, 按照層進(jìn)關(guān)系, xml element用 "tagName, Name"的形式標(biāo)記, 對于某些xml element的重要屬性(attribute), 用"attr NAME"標(biāo)記.
AndridManifest.xml
manifest, AndroidManifest
attr versionCode
attr versionName
attr sharedUserId
attr sharedUserLabel
attr installLocation
permission, AndroidManifestPermission
attr name, label, icon
attr permissionGroup
attr protectionLevel
permission-group, AndroidManifestPermissionGroup
attr name, label, icon
permission-tree, AndroidManifestPermissionTree
attr name, label, icon
uses-sdk, AndroidManifestUsesSdk
uses-permission, AndroidManifestUsesPermission
attr name
uses-configuration, AndroidManifestUsesConfiguration
attr reqTouchScreen
attr requKeyboardType
attr reqHardKeyboard
attr reqNavigation
attr reqFiveWayNav
application, AndroidManifestApplication
attr name, label, icon
attr permission
attr process
attr taskAffinity
attr persistent
service, AndroidManifestService
attr name, label, icon
attr permission
attr process
attr enabled
attr exported
receiver, AndroidManifestReceiver
attr name, label, icon
attr permission
attr process
attr enabled
attr exported
provider, AndroidManifestProvider
attr name, label, icon
attr process, authorities, syncable
attr readPermission, writePermission, grantUriPermissions
attr permission
attr mulitprocess
attr enabled
attr exported
grant-uri-permission, AndroidManifestGrantUriPermission
attr path, pathPrefix, pathPattern
path-permission, AndroidManifestPathPermission
attr path, pathPrefix, pathPattern
attr permission, readPermission, writePermission
activity, AndroidManifestActivity
attr name, label, icon
attr theme, launchMode, screenOrientation
attr configChanges, permission, multiprocess
attr process, taskAffinity, allowTaskReparenting
attr finishOnTaskLaunch, finishOnCloseSystemDialogs
attr clearTaskOnLauch, noHistory
attr alwaysRetainTaskState, stateNotNeeded
attr excludeFromRecents
attr enabled, exported
attr windowSoftInputMode
activity-alias, AndroidManifestActivityAlias
attr name, label, icon
attr targetActivity
attr permission
attr enabled, exported
uses-library, AndroidManifestUsesLibrary
attr name
attr required
instrumentation, AnroidManifestInstrumentation
attr name, label, icon
attr targetPackage, handleProfiling
attr functionalTest
uses-feature, AndroidManifestUsesFeature
attr glEsVersion
attr name
attr required
supports-screens, AndroidManifestSupportsScreens
attr smallScreens, normalScreens, largeScreens
attr resizeable, anyDensity
protected-broadcast, AndroidManifestProtectedBroadcast
attr name
adopt-permissions, AndroidManifestOriginalPackage
attr name
還有幾個特別的xml element, 可以有多個parent element. application activity, receiver, provider, service permission, permissionGroup instrumentation meta-data, AndroidManifestMetaData attr name, value, resource
activity, receiver, service intent-filter, AndroidManifestIntentFilter attr label, icon, priority action, AndroidManifestAction attr name
data, AndroidManifestData attr mimeType, scheme, host attr port, path, pathPrefix attr pathPattern
category, AndroidManifestCategory attr name
intent, Intent attr action, data, mimeType attr targetPackage, targetClass
category, IntentCategory attr name extra, Extra attr name, value
PackageParser的邏輯 ==================================== PackageParser的parsePackage()方法會讀取apk包中的AndroidManifest.xml文件, 調(diào)用各子par***XX()方法, 解析出包信息. 同時, PackageParser定義了一些class, 容納這些解析得到的信息. 下面是對應(yīng)的關(guān)系.
class xml elements ------------- -------------------------------------- Package package Permission permission, permission-tree PermissionGroup permission-group Activity activity, activity-alias, receiver Service service Provider provider Instrumentation instrumentation ActivityIntentInfo intent-filter @ activity or receiver ServiceIntentInfo intent-filter @ service
PacakgeParser的結(jié)果主要被PackageManagerService使用.
|