-
Notifications
You must be signed in to change notification settings - Fork 381
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
Checking mergeability…
Don’t worry, you can still create the pull request.
Comparing changes
Choose two branches to see what’s changed or to start a new pull request.
If you need to, you can also or
learn more about diff comparisons.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Learn more about diff comparisons here.
base repository: AOSPA/android_frameworks_base-old
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: kitkat
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: beerbong/android_frameworks_base
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: kitkat
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 3 commits
- 78 files changed
- 2 contributors
Commits on May 10, 2014
-
Introduce a new tool 'idmap' to handle generation and verification of idmap files. The tool is modelled on 'dexopt', and is intended to be used similarly, notably by 'installd'. See cmds/idmap/idmap.cpp for further documentation on 'idmap'. Note: this commit is interdependent on a commit in project build/ to add 'idmap' to PRODUCT_PACKAGES. Note: the changes to androidfw are only stubs. The actual implementation will be provided in Runtime resource overlay, iteration 2. Change-Id: I7131b74ece1e46c8a9c0a31d103e686aa07da2bb
Configuration menu - View commit details
-
Copy full SHA for e38348c - Browse repository at this point
Copy the full SHA e38348cView commit details -
Runtime resource overlay, iteration 2
Support any number of overlay packages. Support any target package. UPDATED PACKAGE MATCHING ------------------------ In Runtime resource overlay, iteration 1, only a single overlay package was considered. Package matching was based on file paths: /vendor/overlay/system/framework-res.apk corresponded to /system/framework-res.apk. Introduce a more flexible matching scheme where any package is an overlay package if its manifest includes <overlay targetPackage="com.target.package"/> For security reasons, an overlay package must fulfill certain criteria to take effect: see below. THE IDMAP TOOL AND IDMAP FILES ------------------------------ Idmap files are created by the 'idmap' binary; idmap files must be present when loading packages. For the Android system, Zygote calls 'idmap' as part of the resource pre-loading. For application packages, 'idmap' is invoked via 'installd' during package installation (similar to 'dexopt'). UPDATED FLOW ------------ The following is an outline of the start-up sequences for the Android system and Android apps. Steps marked with '+' are introduced by this commit. Zygote initialization Initial AssetManager object created + idmap --scan creates idmaps for overlays targeting 'android', \ stores list of overlays in /data/resource-cache/overlays.list AssetManager caches framework-res.apk + AssetManager caches overlay packages listed in overlays.list Android boot New AssetManager's ResTable acquired AssetManager re-uses cached framework-res.apk + AssetManager re-uses cached 'android' overlays (if any) App boot ActivityThread prepares AssetManager to load app.apk + ActivityThread prepares AssetManager to load app overlays (if any) New AssetManager's ResTable acquired as per Android boot SECURITY -------- Overlay packages are required to be pre-loaded (in /vendor/overlay). These packages are trusted by definition. A future iteration of runtime resource overlay may add support for downloaded overlays, which would likely require target and overlay signatures match for the overlay to be trusted. LOOKUP PRIORITY --------------- During resource lookup, packages are sequentially queried to provide a best match, given the constraints of the current configuration. If any package provide a better match than what has been found so far, it replaces the previous match. The target package is always queried last. When loading a package with more than one overlay, the order in which the overlays are added become significant if several packages overlay the same resource. Had downloaded overlays been supported, the install time could have been used to determine the load order. Regardless, for pre-installed overlays, the install time is randomly determined by the order in which the Package Manager locates the packages during initial boot. To support a well-defined order, pre-installed overlay packages are expected to define an additional 'priority' attribute in their <overlay> tags: <overlay targetPackage="com.target.package" priority="1234"/> Pre-installed overlays are loaded in order of their priority attributes, sorted in ascending order. Assigning the same priority to several overlays targeting the same base package leads to undefined behaviour. It is the responsibility of the vendor to avoid this. The following example shows the ResTable and PackageGroups after loading an application and two overlays. The resource lookup framework will query the packages in the order C, B, A. +------+------+- -+------+------+ | 0x01 | | ... | | 0x7f | +------+------+- -+------+------+ | | "android" Target package A | Pre-installed overlay B (priority 1) | Pre-installed overlay C (priority 2) Conflicts: core/jni/android_util_AssetManager.cpp libs/androidfw/AssetManager.cpp packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java Change-Id: If49c963149369b1957f7d2303b3dd27f669ed24e
Configuration menu - View commit details
-
Copy full SHA for 2555960 - Browse repository at this point
Copy the full SHA 2555960View commit details
Commits on May 13, 2014
-
CM Theme Engine (frameworks/base part)
[Summary] Took the T-mobile theme engine, replaced redirection mechanism with a modified Sony idmap and then extended the feature set. The new theme engine allows the following: 1. Simple creation of themes by compiling on the device 2. System level icon packs. 3. Font packs 4. Swappable boot animations 5. Lockscreen wallpaper 6. Alarms 7 Of course all the things the previous engine could do including skins, ringtones and notifications. There is also legacy support for old themes. [Theme Format] For the time being themes are APKs with all theme elements in the assets folder. Since these resources are compiled at runtime there is no reason we can't change it to a zip but creating an APK is well understood by themers. The directory structure looks like this: AndroidManifest.xml src/ res/ assets/ boot-animation/ fonts/ icons/ res/ (note: same dir structure as res/ in trebuchet icon packs) wallpapers/ ringtones/ notifications/ alarms/ overlays/ [target-pkg-name1] res/ drawable/ drawable-hdpi/ ... layouts/ xml/ [target-pkg-name2] res/ Where [target-pkg-name] is the package of the app you are trying to overlay. For example, to overlay facebook's app you would make a directory under overlay called "com.facebook.katana". For frameworks resources use the target name "android". Under each target pkg is a res/ folder which follows the same format as a typical APK's res/. During install time AAPT will actually compiling these res/ folders individually. There are also non-overlay folders like boot-animation, wallpaper, fonts etc. A theme APK is identified by meta-value data in AndroidManifest.xml. Here is an example: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.me.andytheme2" android:versionCode="1" android:versionName="1.0" > <uses-feature android:name="org.cyanogenmod.theme" /> <meta-data android:name="org.cyanogenmod.theme.name" android:value="My Blue Theme"/> <meta-data android:name="org.cyanogenmod.theme.author" android:value="John Doe" /> </manifest> By using meta-data we do not require special new tools. [Changes to PackageManagerService] During install time PackageManagerService will scan meta-data values in the manifest. If it finds a meta-data name of "org.cyanogenmod.theme.name" then it will assume the APK is a theme and mark it as such. Then PM will find all overlays from the theme. For each overlay target it will generate a resource table and an idmap via Installd. Aapt will also run to compile 9patch and xml files. The new restable, idmap, and compiled resources are stored under /data/resource-cache [Changes to aapt] Aapt has been extended to read zip entries and accept file descriptors to work with installd. [Changes to frameworks/core] Most of what TMO has done already here for runtime theme changes is kept so most changes are simply plumbing to make Sony's overlays work at runtime. Additionally changes were made to TMO classes to support mix n match better. [Changes to libandroidfw] Sony's idmap concept is one overlay apk -> one target apk, but themes support multiple target apks. So most of the changes here are for support this. Also we support runtime overlay changes so functionality had to be added to add/remove to the resource table during a configuration change. [Security] We run aapt in reduced priveledges via Installd. At the moment however a theme can overlay any resource. This includes strings and layouts so any malicous theme could cause serious crashes to the device. [See Also] frameworks/native external/skia build vendor/tmobile/providers/ThemeManager vendor/tmobile/libs/com.tmobile.themes [Contributors] Andrew Mast <andy@cyngn.com> Clark Scheff <clark@cyngn.com> Special thanks to the T-Mobile theme team. This would not be possible without their efforts. Special thanks to Mårten Kongstad and the rest of the Sony team for their work in idmap. Conflicts: cmds/bootanimation/BootAnimation.cpp core/java/android/app/ContextImpl.java core/java/android/app/ResourcesManager.java core/java/android/content/Context.java core/java/android/content/pm/ApplicationInfo.java core/java/android/content/pm/PackageInfo.java core/java/android/content/pm/PackageParser.java core/java/android/content/pm/ThemeInfo.java core/java/android/content/res/AssetManager.java core/java/android/content/res/Configuration.java core/java/android/content/res/CustomTheme.java core/java/com/android/internal/os/ZygoteConnection.java core/res/AndroidManifest.xml libs/androidfw/AssetManager.cpp libs/androidfw/ResourceTypes.cpp packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java policy/src/com/android/internal/policy/impl/GlobalActions.java services/java/com/android/server/AppsLaunchFailureReceiver.java services/java/com/android/server/DeviceStorageMonitorService.java services/java/com/android/server/InputMethodManagerService.java services/java/com/android/server/SystemServer.java services/java/com/android/server/am/ActivityManagerService.java services/java/com/android/server/pm/PackageManagerService.java Change-Id: I812a3757bdb56c429b5870ff922485439ae00f8d
Configuration menu - View commit details
-
Copy full SHA for 478ce85 - Browse repository at this point
Copy the full SHA 478ce85View commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff kitkat...kitkat