History log of /frameworks/base/core/java/android/app/LoadedApk.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f8579581c1d6bf993f26d21aefca410ac9b6706b 17-Jun-2017 Svet Ganov <svetoslavganov@google.com> [DO NOT MERGE] Support native shared libs

Add the shared libs that are APKs to the native library
path when creating application class loaders. Also don't
allow shared libraries hosting native libs to request
extraction of the native libs out of the APK. Lastly,
shared libraries hosting native libs must be declared
as multi-architecture.

Test: CTS tests in this topic

bug:62720360

Change-Id: I0a398593ebe41b2976cb706ca8a388005f5aec83
/frameworks/base/core/java/android/app/LoadedApk.java
08408b9338f67acc4e9793ec531af2966c7f27da 09-May-2017 Makoto Onuki <omakoto@google.com> Tweak for b/37809561.

From the WTF log we know Args.run() sometimes gets called multiple
times.

Remove the Runnable interface from the Args class to make it
impossible to cast it to Runnable.

If the WTF still happens with this change, that'd be *very* interesting.

Test: Build and boot
Bug: 37809561
Change-Id: Id4bd9bd8d4098086649235fddfc2136527805838
/frameworks/base/core/java/android/app/LoadedApk.java
f3bb6f31f4db715b0f42d1dedd13ab84624b9fe8 02-May-2017 Makoto Onuki <omakoto@google.com> Add more information to WTF to investigate bug 37809561

Bug 37809561
Test: Build & boot -- didn't actually exercise the WTF case but it should work
since getStackTraceString accepts null too.

Change-Id: Iabfbe1fcde293fec919c65df7ea9650e1b247b9a
/frameworks/base/core/java/android/app/LoadedApk.java
ac2653499692880571922ff63a9dd0ecc2d742a1 19-Apr-2017 Dianne Hackborn <hackbod@google.com> Fix issue #37470038: API Review: ServiceConnection.onBindingDead()

Renamed.

Test: booted and ran.

Change-Id: Ic21f7ef66d43fb6db9f7ebbc833f28c09474ea59
/frameworks/base/core/java/android/app/LoadedApk.java
9484603c0fa738b67980c18b4abfd3505778ae74 01-Apr-2017 Dianne Hackborn <hackbod@google.com> Framework support to improve bg check CTS tests.

(Finally) introduce a new ServiceConnection callback to
tell you when the binding has died. This allows you to robustly
have a weak service monitoring, and also is an easy way to find
out about breakages due to app updates etc.

Also clean up some debug output.

Test: moved to own suite and ran them.

Change-Id: I526cc00816c384fa9eb1312b92406f38085cbff9
/frameworks/base/core/java/android/app/LoadedApk.java
1665d0f028e3a225cb117d3e227bef5c5dace2d4 10-Mar-2017 Adam Lesinski <adamlesinski@google.com> Add support for configForSplit

Applications with the android:isolatedSplits="true" attribute in
their AndroidManifest.xml would have their Split APKs loaded in
isolation of each other, based on a set of dependencies.

Configuration Splits generated for a Feature split would not be properly
loaded before, so this change, along with a tools change, fixes this
issue and completes support for isolatedSplits.

Bug: 30999713
Test: CTS test coming (depends on some tool changes)
Change-Id: Ia4e7b0e69168a9d6637867558e306f7031720fb3
/frameworks/base/core/java/android/app/LoadedApk.java
f5a7bfc8d5f9e74d6fa1e5be3246e7b4cde65bf6 14-Mar-2017 Calin Juravle <calin@google.com> Register secondary dex files for JIT profiling

Test: boot, and check that profiles get recorded for secondary dex files

Bug: 32871170
Bug: 26719109
Change-Id: I2de23ef44eee3f1783ae698821f1c6d88c66c9a6
/frameworks/base/core/java/android/app/LoadedApk.java
37dfc8ee3ec676a0f059a9f9f1ec5d273e78a502 14-Mar-2017 Calin Juravle <calin@google.com> Move DexLoadReporter out of LoadedApk

The DexLoadReporter was part of LoadedApk in order to lazily initialize
it when the first class loader of the app was created. However there's
no real association between the two and doing the initialization in
LoadedApk buys us nothing.

Extract the reporter in its own class and set it to BaseDexClassLoader
during bindApplication stage.

Test: boot, and check that loaded dex files are reported

Bug: 32871170
Bug: 26719109
Change-Id: I9a0e734ae4c16d5d0979aa6d0061fbc9b6e144f6
/frameworks/base/core/java/android/app/LoadedApk.java
bf07e2a1da19cb020092ab00386febc2b180f130 15-Mar-2017 Narayan Kamath <narayan@google.com> LoadedApk: Notify cross-package use only when code is requested.

Cross-package use is quite common when only resources are being
considered. A common example is that any application that declares
itself <searchable /> will see cross package resource only use from
the system_server.

Test: manual instrumentation.
Change-Id: Ic7ad166c71a23c6026f4e12bb52309a50210aaaf
/frameworks/base/core/java/android/app/LoadedApk.java
9108ae1a16d1c9b0ad75292903b9cab26ab47633 07-Mar-2017 Calin Juravle <calin@google.com> Merge "PackageManager: Clean up code related to foreign dex use"
74f0a3450cd598f52b2c68c43531b1a27fb4e1ce 04-Mar-2017 Calin Juravle <calin@google.com> PackageManager: Clean up code related to foreign dex use

We simplified the way we track whether or not a dex file is used by
other apps. DexManager in the framework keeps track of the data and we
no longer need file markers on disk.

Test: device boots, foreign dex markers are not created anymore

Bug: 32871170
Change-Id: I3660e2f3913a73904181449c2d910af0a0477950
/frameworks/base/core/java/android/app/LoadedApk.java
a5ca62408381058c12bd5a1fe3b30f2512a73e03 02-Mar-2017 Adam Lesinski <adamlesinski@google.com> OMS: Introduce default overlays

Default overlays are applied at first boot. They are specified by
package name in system property ro.boot.vendor.overlay.theme as a
semicolon separated list.

Eg:

ro.boot.vendor.overlay=com.android.vendor.overlay;com.android.vendor.overlay_two

Test: manual (remove /data/system/overlays.xml and reboot)
Change-Id: I8a7443a9059ccabfe1a63b075b95f1b2b6db7dbd
/frameworks/base/core/java/android/app/LoadedApk.java
638d81009918eae44eec3261e235b78eae44331d 23-Feb-2017 Dimitry Ivanov <dimitry@google.com> Add isBundled argument to LoadedApk.makePaths call

There is a disconnect between the way webview created
classloader and the way makePaths decides if paths are
intended for bundled app.

This change moves decision making out of makePaths method
which allows WebViewZygote to pass correct argument and
have makePath omit java.library.path for libPaths

Bug: http://b/35426785
Test: manual
Change-Id: Iab5a18c0091d0193dafa750498eb00f378411ba0
/frameworks/base/core/java/android/app/LoadedApk.java
0e61883f5d460d733090e1955ca2d2e9922880b8 07-Feb-2017 Adam Lesinski <adamlesinski@google.com> Fix WebView crashes

Use the sharedLibraryFiles from ApplicationInfo, which is
what WebView patches.

Bug:34761805
Test: None
Change-Id: I5a496e8e017842a3fa30b956edf1b16c9459c5f0
/frameworks/base/core/java/android/app/LoadedApk.java
4e8628157ad0c8c52e74b720eb0328086272ffda 22-Nov-2016 Adam Lesinski <adamlesinski@google.com> Add support for Split APK dependcies

Apps can now declare in their base APK AndroidManifest.xml
that they want to have their split APKs loaded in isolated
Contexts. This means code and resources from the split
get loaded into their own ClassLoader and AssetManager.

<manifest xmlns:android="..."
...
android:isolatedSplits="true"
...

In order to make this more useful, splits can declare dependencies
on other splits, which will all get pulled in to the Context
and run as expected at runtime.

A split declares its dependency on another split by using the
tag <uses-split> in its AndroidManifest.xml:

<manifest xmlns:android="...">
...
<uses-split android:name="feature_split_1" />
...

A split can have a single parent on which it depends on. This is
due to the limitation of having a single ClassLoader parent.
All splits depend on the base APK implicitly.

PackageManager verifies that no cycles exist and that each dependency
is present before allowing an installation to succeed.

The runtime will then load splits based on the dependencies.

Given the following APKs:

base <-- split A <-- split C
^----- split B

If an Activity defined in split C is launched, then the base,
split A, and split C will be loaded into the ClassLoader defined
for the Activity's Context. The AssetManager will similarly be loaded
with the resources of the splits.

A split can be manually loaded by creating a Context for that split, defined
by its name:

Context.createContextForSplit("my_feature_split_1");

All installed Activities, Services, Receivers, and Providers are accessible
to other apps via Intent resolution. When they are instantiated, they are
given the appropriate Context that satisfies any dependencies the split they
were defined in stipulated.

Test: WIP (CTS tests to come)
Change-Id: I8989712b241b7bc84381f2919d88455fcad62161
/frameworks/base/core/java/android/app/LoadedApk.java
d33ef5665159212e190d2cccda55e77b19779e75 19-Jan-2017 Adam Lesinski <adamlesinski@google.com> ActivityThread: Only update code paths that have been added

When an ApplicationInfo object is updated and we want to update
code paths without restarting the app's process, we need to make
sure that we only update the paths that have changed. This means
diffing between the old paths and the new paths.

Test: watch /proc/<pid>/maps for dex entries before and after
running adb exec-out am update-appinfos all <package>
Change-Id: I6855d860478ade3184bbb578a5483d8548396daa
/frameworks/base/core/java/android/app/LoadedApk.java
8d2a51f1b8fc35a1d4fda6b6cdfdf2754f1e1211 23-Nov-2016 Calin Juravle <calin@google.com> Report non-primary dex files loads to PM

Scaffold for the reporting of non-primary dex files loads to the package
manager.

This will enable:
1) monitoring and compilation of secondary dex file
2) better way to track foreign dex file usage (used to determined the
compilation filter of apks).

Test: device boots
Bug: 32871170
Change-Id: Ib0fe076af2c734dd054f092247a1ec7e2a74a70d
/frameworks/base/core/java/android/app/LoadedApk.java
2c0dc3e09429973f018f771cdecb7d4ecba48833 21-Nov-2016 Torne (Richard Coles) <torne@google.com> Merge "Precreate the classloader for the WebView." am: 566b1c80e4 am: 1feb782f01 am: 9565860b08
am: 7e17c6b0f1

Change-Id: Ie512327827e48319b3244a8d3041cb78538109d3
1feb782f01ab246d8050863d542be9b9a85bd81e 21-Nov-2016 Torne (Richard Coles) <torne@google.com> Merge "Precreate the classloader for the WebView."
am: 566b1c80e4

Change-Id: Ic79079748dae515cb8d89ef99148755ac65f1d47
3b6ca99b1069e8f303727a00c1da7acabe017fd8 10-Oct-2016 Torne (Richard Coles) <torne@google.com> Precreate the classloader for the WebView.

We want to create the classloader for the WebView in advance in the
zygote so that it can preload Java and native code for its children, but
the zygote can't talk to the package manager (so doesn't have a
PackageInfo for the APK) and also doesn't have an ActivityThread, so
constructing a LoadedApk is difficult.

Instead, we use the fact that ApplicationLoaders contains a
process-global cache of classloaders for APKs, and prepopulate a cache
entry without constructing a LoadedApk. This requires making
ApplicationLoaders public. To calculate the correct library paths from
the information the zygote has, we reuse the logic in LoadedApk (which
is already public, and just needs a small change to allow a null
ActivityThread when checking for instrumentation).

The other parameters for classloader creation (target SDK, bundled app,
etc) are hardcoded to usable values for the WebView's case. WebView
never needs to use any system libraries that aren't public so claiming
it's not bundled is fine even when that isn't actually true, and WebView
will always target the current platform API level.

Once the classloader is created, look up the factory class and call
preloadInZygote on it to give it a chance to preload the native library
and do other shared initialisation.

Bug: 21643067
Test: enable multiprocess WebView, examine librank output to see sharing
Change-Id: I696ead637e3f7382bcc58cfaf61eac5921862015
/frameworks/base/core/java/android/app/LoadedApk.java
dc589ac82b5fe2063f4cfd94c8ae26d43d5420a0 11-Nov-2016 Sudheer Shanka <sudheersai@google.com> Update usage of ActivityManagerNative.

- Remove references to ActivityManagerProxy.
- Add isSystemReady to ActivityManager.

Bug: 30977067
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test android.server.cts
adb shell am instrument -e class com.android.server.am.ActivityManagerTest,com.android.server.am.TaskStackChangedListenerTest \
-w com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
Change-Id: I07390b6124fb1515821f5c0b37baf6ae74adc8fa
/frameworks/base/core/java/android/app/LoadedApk.java
a9b43182c6b43204a79e22e7efeadbd190520dd2 21-Jul-2016 Adrian Roos <roosa@google.com> ServiceConnection: Properly serialize events

Fixes a bug where onServiceDisconnected could be delayed
such that it would be dispatched after the connection has
already reconnected.

Bug: 30182617
Change-Id: I6e3fc2f125a477bb342de601530c254c34ffb4f7
/frameworks/base/core/java/android/app/LoadedApk.java
17c77536ec743e79b35e8e2fb17c4da41dd36ab7 23-Jun-2016 Dianne Hackborn <hackbod@google.com> Fix issue #29532165: System Server Java Crashes in WiFi (RT Restart)

I really have no idea how this can be happening (we check
for a null intent before posting the args), but add another
check before dispatching to try to avoid it.

Change-Id: Ic704850c9750b6a078c49ea628189be568031086
/frameworks/base/core/java/android/app/LoadedApk.java
41bfaf870eacf1485c76085e543f354b30b88345 09-Jun-2016 Dianne Hackborn <hackbod@google.com> Fix more of issue #28689719: Runtime restart

Change-Id: I0cce1cef884cf1508f1e726ea3439a5ffee84993
/frameworks/base/core/java/android/app/LoadedApk.java
126f78011de06c6946c814b760e18a0cb78951c3 24-May-2016 Calin Juravle <calin@google.com> Don't create or check permissions on profiles during app startup

The impact is small but the IO work can be perform at different
moments. Profile creation is done during app install and
permission check postpone until the first profile write.

Bug: 28785119
Bug: 28625993
Change-Id: Ib364f21f07a78c78e03851fa12142319ea1f931b
/frameworks/base/core/java/android/app/LoadedApk.java
8cb3b2bb5c49322cef07931a0ee14c99da5e4b0b 19-May-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Frameworks/base: Optimize LoadedApk" into nyc-dev
a8a58ffdeeb6a4a05de227a34972d99c005d2bf0 18-May-2016 Andreas Gampe <agampe@google.com> Frameworks/base: Optimize LoadedApk

Preallocate storage lists and avoid TextUtils and its string
builder for a common code path.

Optimize list join helper to not have a check in the loop.

Bug: 28801010
Change-Id: Iafc582031f973d718252b34bcda6405a77425628
/frameworks/base/core/java/android/app/LoadedApk.java
4c8e542f68c990b76ce13748c719d05e65086329 18-May-2016 Andreas Gampe <agampe@google.com> Frameworks/base: Add more systrace points

Add more systrace points for application startup.

Bug: 28625993
Change-Id: I76dca9e842fb43f1b85981ef94582074d31528c8
/frameworks/base/core/java/android/app/LoadedApk.java
2675616719734ce069db47bd8b563f775351dd38 17-May-2016 Dianne Hackborn <hackbod@google.com> Work on issue #28689719: Runtime restart

There are few paths I can see to get a null intent down into
the framework at this point. Add in some checks and reports
at those places to mitigate and report such problems.

Change-Id: If235bf342558321d3fabe9363fcebb2bcea18df1
/frameworks/base/core/java/android/app/LoadedApk.java
8995b00ce8f68f2a285a97c2ce711bea8c61179e 11-May-2016 Narayan Kamath <narayan@google.com> LoadedApk: Avoid unnecessary work when mIncludeCode == false.

We don't need to set up JIT profiles and register usage etc when
the package context we're trying to construct doesn't request code.

This will correct accounting for packages which are only used for
resources.

bug: 28519185
Change-Id: I849675efa76c8100ae937de478b52254babe384c
/frameworks/base/core/java/android/app/LoadedApk.java
eb96b00382f7d339479c27baafd7cfb973ada3e9 10-May-2016 Dimitry Ivanov <dimitry@google.com> Simplify permitted-path construction

The white list of permitted directories is applied for every
classloader namespace by libnativeloader. LoadedApk no longer
needs to do that.

Add mDataDir to permitted paths in the case if for any reason
it is outside of the whitelisted dirs.

Bug: http://b/28639227
Change-Id: I5b61ac64e281ecee3e3e9b1fe56cf04dc6ee7b25
/frameworks/base/core/java/android/app/LoadedApk.java
bf3b5f7a18b128c0d8b19a3bcbf12e7759bb12f8 03-May-2016 Dimitry Ivanov <dimitry@google.com> Allow apps to load libraries from under /data

Allow all application classloaders to load native
libraries from anywhere under /data

Bug: http://b/26954419
Change-Id: I8a808bcdf4a00f7d40b513d4e2ca3d1e76c0909f
/frameworks/base/core/java/android/app/LoadedApk.java
c7b9482b0c4bb2d378e63541b96be45c50094e05 16-Mar-2016 Jeff Hao <jeffhao@google.com> Support to pass <uses-library> option through to dex2oat.

This change takes an app's shared libraries specified by <uses-library>
and passes it through to dex2oat to be used during compilation.

Part of a multi-project change.

Bug: 26880306

(cherry-picked from 7b331b6a8ae8d9f10482b292439457de98abd32a)

Change-Id: I523b1b74775e7ed27072498509e743f1f10b1164
/frameworks/base/core/java/android/app/LoadedApk.java
2d4a222de157c693b16ca2b35a264dd92ae6abee 25-Apr-2016 Narayan Kamath <narayan@google.com> LoadedApk: Don't set up JIT profile support inside the system_server.

We shouldn't profile *any* packages loaded by the system_server, not
just the system_servers own ("android") package.

bug: 28241500
Change-Id: I5f3f477b40c758030a5bdc8e97d17cab6e68e204
/frameworks/base/core/java/android/app/LoadedApk.java
57413a74777060d9368f89966e9abcf96e33af8e 25-Apr-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Make fake libart for misbehaving apps be loaded." into nyc-dev
096e2dcf855714577bb86eaa4869ff46b5980a07 25-Apr-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Disable StrictMode policy when setting up profile support" into nyc-dev
430ef455d626eb0f9d845ef6a283056da4883503 22-Apr-2016 Calin Juravle <calin@google.com> Disable StrictMode policy when setting up profile support

Bug: 28304158
Change-Id: Iedf8714bd4f3526823b3060b30e0f11c6c0abcea
/frameworks/base/core/java/android/app/LoadedApk.java
ca82e616d3131570bf2ee29778f4796f343720d5 20-Apr-2016 Brian Carlstrom <bdc@google.com> Add reasons to notifyPackageUse calls

This is so we can record more specific times in PackageUsage.
If file with only one timestamp per package is found, the value is
copied to all usage slots.

Bug: 27902702
Change-Id: I8affe43c735e54620a9204433aad367cfddfded7
/frameworks/base/core/java/android/app/LoadedApk.java
20ed24fc0cbbada36e84dc1f1e86946db6e6c5a4 20-Apr-2016 Alex Light <allight@google.com> Make fake libart for misbehaving apps be loaded.

Bug: 27775991
Change-Id: Ie4eba211e876ec0643ce6ecf6a110f3cb5e0f57e
/frameworks/base/core/java/android/app/LoadedApk.java
2a727d7bd52555ff2493ffdbc1f421b3228d04cc 15-Apr-2016 Calin Juravle <calin@google.com> Move profile registration from bindApplication to LoadedApk

In order to capture profiles for apps which share the same VM and for
splits loaded without restart we need to move the profile registration
closer to where we create the class loaders (since bindApplication is
not called multiple times).

Moving the registration after class loader creation also allows us to
not profile apks which are already fully compiled.

Bug: 27539488
Bug: 27893309
Bug: 28012567
Change-Id: I6333f026f4f0680ca28e989f1686e3eac1145339
/frameworks/base/core/java/android/app/LoadedApk.java
8a372a0a280127743ce9a7ce4b6198c7a02d2a4f 16-Mar-2016 Jeff Sharkey <jsharkey@android.com> Refactoring FBE APIs based on council feedback.

Mostly consists of removing the word "encryption" from most APIs,
since we can't actually make promises about the data being encrypted.

Bug: 27531029
Change-Id: Iace9d7c4e64716abf86ed11847c40f3947e1d625
/frameworks/base/core/java/android/app/LoadedApk.java
d136e51a99df5275eaafdde407e89e78c02b829b 10-Mar-2016 Jeff Sharkey <jsharkey@android.com> Defuse Bundles parsed by the system process.

It's easy for apps to throw custom Parcelables into Bundles, but
if the system tries peeking inside one of these Bundles, it triggers
a BadParcelableException. If that Bundle was passed away from the
Binder thread that delivered it into the system, we end up with a
nasty runtime restart.

This change mitigates this trouble by "defusing" any Bundles parsed by
the system server. That is, if it encounters BadParcelableException
while unpacking a Bundle, it logs and delivers an empty Bundle as
the result.

Simultaneously, to help catch the system process sticking its
fingers into Bundles that are destined for other processes, a Bundle
now tracks if it's "defusable." For example, any Intents delivered
through ActivityThread are marked as being defusable, since they've
arrived at their final destination. Any other Bundles are considered
to be "in transit" and we log if the system tries unparceling them.

Merges several Parcel boolean fields into a flags int. Add better
docs to several classes.

Bug: 27581063
Change-Id: I28cf3e7439503b5dc9a429bafae5eb48f21f0d93
/frameworks/base/core/java/android/app/LoadedApk.java
43b28b17d2af269f58a7b0b8d8714444ac9bbd76 15-Mar-2016 Dimitry Ivanov <dimitry@google.com> Restore fix for native activity without a java-code

The regression was introduced by 39bfee5e3674faea992c32204abc1c03429b8cda
which undid the fix to classloader construction.

This commit reapplies the fix from b9c9026bdd0076014aeca62b088053d8fbce2326

Bug: http://b/27250344
Change-Id: I6c341d911ba0f311c63e380dd9dd064ba2faf391
/frameworks/base/core/java/android/app/LoadedApk.java
082614c6a57a115ee0c5975e3579bf34a178c0f8 04-Mar-2016 Adam Lesinski <adamlesinski@google.com> Cache per-Activity Resources objects

Each Activity has a Resources object whose underlying state changes
when a configuration change occurs, both global and for that activity only (multi-window).
Views and other clients of the Resources object can safely cache it knowing that
they always have a reference to the most up-to-date resources.

This applies to Resources.Theme objects as well.

Bug:26854894
Change-Id: Ifd3da5a1086e17f747dfc265a447fe92a3a5c692
/frameworks/base/core/java/android/app/LoadedApk.java
39bfee5e3674faea992c32204abc1c03429b8cda 24-Feb-2016 Todd Kennedy <toddke@google.com> Splits without restart

In specific cases [as determined by the installer], we can install
splits without restarting the application. The split must be purely
additive [i.e. it should not modify class(es)/resource(s) defined
in the base or other splits. Otherwise, the behaviour could be
inconsistent [e.g. if a modified class was already loaded, the
modified version won't be loaded until the process is restarted].
The platform does not perform any verification that the split is
purely additive.

Bug: 26463098
Change-Id: I3526c3b1b847a8e0afabc7a4787fa770422196b7
/frameworks/base/core/java/android/app/LoadedApk.java
b2b8c3c1d912f7f326ab6b3f9e6493c94f2c72e9 01-Mar-2016 Dimitry Ivanov <dimitry@google.com> Explicitly check for updated system apps

Unbundled apps should not be allowed to share
linker-namespaces with default namespace; it implies
that they will not have unlimited access to private
native libs once updated.

Bug: http://b/27189432
Change-Id: I60295b9b31d700016add93537418fdcce5a77719
/frameworks/base/core/java/android/app/LoadedApk.java
369f509d5688f84d1e5205c79ab919c1bac6c969 29-Feb-2016 Jeff Sharkey <jsharkey@android.com> Sigh, someone is pushing 2MB through StopInfo.

Bug: 27401092
Change-Id: Ib27a56ecc63662ce2d6210890ac65eca09fac9d6
/frameworks/base/core/java/android/app/LoadedApk.java
f8880561e67e1da246970b49b14285efd4164ab1 26-Feb-2016 Jeff Sharkey <jsharkey@android.com> When system server goes down, crash apps more.

Similar to first patch, but now using new "rethrowFromSystemServer()"
method which internally translates DeadObjectException into
DeadSystemException. New logic over in Log.printlns() now
suppresses the DeadSystemException stack traces, since they're
misleading and just added pressure to the precious log buffer space.

Add some extra RuntimeInit checks to suppress logging-about-logging
when the system server is dead.

Bug: 27364859
Change-Id: I05316b3e8e42416b30a56a76c09cd3113a018123
/frameworks/base/core/java/android/app/LoadedApk.java
a55c7f15a3c386ec643f21eeb2f4e9fd7b03ba70 23-Feb-2016 Dimitry Ivanov <dimitry@google.com> Create linker-namespace for the classloader

With this change ApplicationLoaders.getClassLoader()
creates linker-namespace for the classloader at the
construction time. Before this change the namespace
was created on first load of a jni library.

With this change we ensure that every classloader
has initialized namespace associated with it.

As an additional advantage we now can avoid storing
namespace-specific fields in the classloaders.

Bug: http://b/27189432
Bug: http://b/22548808
Change-Id: I3b160bd478a55171008682c40b2ebc13bdbd9882
/frameworks/base/core/java/android/app/LoadedApk.java
b9c9026bdd0076014aeca62b088053d8fbce2326 19-Feb-2016 Dimitry Ivanov <dimitry@google.com> Construct classloader for apps with no java code

The commit 6f06ad7df1362e9e5b252689f452bdeee2e5af46
fixed a way to load native library for NativeActivity
by using classloader logic to find the library; which
also fixed the problem of native activity not working
when library is supposed to be opened directly from
the apk.

As a side effect it introduced regression - apps without
java code did not have correctly initialized classloader.
This change fixes this by constructing classloader with
empty dexpath but valid nativeLibrarySearchPath.

Bug: http://b/26015561
Bug: http://b/27250344
Change-Id: I50f1119f0976a95edd75d88efb9fcdedc57efbc3
/frameworks/base/core/java/android/app/LoadedApk.java
c7bacab20fa8a0e603726f4f8ebafd3a96babeb1 09-Feb-2016 Jeff Sharkey <jsharkey@android.com> More encryption-aware triaging.

Most of these callers are okay having results omitted when a package
is uninstalled or encryption unaware. For example, jobs and
notifications can only be enqueued by already running apps.

When clearing zen rules, keep around rules inserted by apps on
ejected external storage devices.

Make ServiceWatcher stricter by requiring that the matching package
be in the system image.

Bug: 26471205, 27105254
Change-Id: Ie41ea8042ac1a54e9cbe0c35cec89e70521e9bed
/frameworks/base/core/java/android/app/LoadedApk.java
add74a46297ecc9640564958daf2929b7fd0b116 04-Feb-2016 Dimitry Ivanov <dimitry@google.com> Workaround for apps loading foreign native libs

Bug: http://b/26954419
Change-Id: I4272d015213b386abc1b04c0349cf1b081288058
/frameworks/base/core/java/android/app/LoadedApk.java
844ccc5ad9fc9e5dc22c3bdd1d2418cce90a7720 25-Jan-2016 Dimitry Ivanov <dimitry@google.com> Merge "Remove path to the apk from the permittedPath" am: 5194d217b8
am: e057ed6b6b

* commit 'e057ed6b6bd9d71d034f4cdf5a1edc05f8b63a40':
Remove path to the apk from the permittedPath
ee5a181371f24fba5e002c400836fb642780ee62 22-Jan-2016 Dimitry Ivanov <dimitry@google.com> Remove path to the apk from the permittedPath

Bug: http://b/26732624
Bug: http://b/22548808
Change-Id: Idc63550f9ab67d30aaa0a1fd1b2d19545c07d1b9
/frameworks/base/core/java/android/app/LoadedApk.java
44fadb21e0de195d7d950aeb8958875c9920006e 12-Dec-2015 Dimitry Ivanov <dimitry@google.com> Use shared namespace for bundled app classloader

Allow bundled apps to reference platform native libraries
located in subdirectories of the default library path
(/system/lib/hw/* for example).

In addition to this bundled apps need to share native
libraries with default namespace. Added parameter to
ApplicationLoaders.createClassLoader() to do just that.

Bug: 26165097
Bug: 26164393
(cherry picked from commit 75b10ecccdd1881390075dd22c1d4f9bdf1c5828)

Change-Id: I836e5fed4713f2a605a5de673c40970ef6d988dd
/frameworks/base/core/java/android/app/LoadedApk.java
75b10ecccdd1881390075dd22c1d4f9bdf1c5828 12-Dec-2015 Dimitry Ivanov <dimitry@google.com> Use shared namespace for bundled app classloader

Allow bundled apps to reference platform native libraries
located in subdirectories of the default library path
(/system/lib/hw/* for example).

In addition to this bundled apps need to share native
libraries with default namespace. Added parameter to
ApplicationLoaders.createClassLoader() to do just that.

Bug: 26165097
Bug: 26164393
Change-Id: I833b4f758c4df8f8958d72eafd5d47ef14079ce1
/frameworks/base/core/java/android/app/LoadedApk.java
048a0db7b512326d0fae0efa7fef7ea2d17a3dd8 15-Nov-2015 Dmitriy Ivanov <dimitry@google.com> Use nativeloader to load NativeActivity

System apps are the exception and they can
access internal platform libraries (this
is needed for bundled apps to work correctly).

Also fix the way NativeActivity loads the native
library to correspond to the way BaseDexClassloader
does it.

Bug: http://b/22548808
Bub: http://b/25777936
Change-Id: Idc94cdded182ea2cb1cbebc76c336cc3394c7ebe
(cherry picked from commit 6f06ad7df1362e9e5b252689f452bdeee2e5af46)
/frameworks/base/core/java/android/app/LoadedApk.java
6f06ad7df1362e9e5b252689f452bdeee2e5af46 15-Nov-2015 Dmitriy Ivanov <dimitry@google.com> Use nativeloader to load NativeActivity

System apps are the exception and they can
access internal platform libraries (this
is needed for bundled apps to work correctly).

Also fix the way NativeActivity loads the native
library to correspond to the way BaseDexClassloader
does it.

Bug: http://b/22548808
Bub: http://b/25777936
Change-Id: Idc94cdded182ea2cb1cbebc76c336cc3394c7ebe
/frameworks/base/core/java/android/app/LoadedApk.java
183501e1aaee9584f8f0c6ea2d983e3fc17429d1 11-Nov-2015 Nicolas Geoffray <ngeoffray@google.com> Merge "Remove performBootDexOpt and am's ensurePackageDexOpt."
27c073796978106746e4a51f2100b29068ab37f6 05-Nov-2015 Nicolas Geoffray <ngeoffray@google.com> Remove performBootDexOpt and am's ensurePackageDexOpt.

Except common shared libraries and boot image, all compilations
are now done through BackgroundDexOptService.

Change-Id: Ib736e253c38b0c8085bc94e45f4e61a048f66e26
/frameworks/base/core/java/android/app/LoadedApk.java
15447798a38d2b5acb1998731340255f4203f294 06-Nov-2015 Jeff Sharkey <jsharkey@android.com> Initial file-based encryption public APIs.

Define two explicit directories where device-encrypted and
credential-encrypted data will be stored. Third-party apps only
need access to the device-encrypted directory, so that's the only
API exposed for now.

General cleanup in how ApplicationInfo details are derived.

Bug: 22358539
Change-Id: If0a0108721a4aa1c3052b4912e08604bbf24e1ae
/frameworks/base/core/java/android/app/LoadedApk.java
2107d69d35191c8e16e61720da62ff33290f5a8a 03-Sep-2015 Alan Viverette <alanv@google.com> Postpone loading app context until instrumentation is set up

The application context needs instrumentation data to be in place
prior to construction so that the class loader is initialized using
the correct paths.

Removes unnecessary clearClassLoader() workaround that was previously
added to fix instrumentation tests.

Bug: 22627299
Change-Id: Ibf8e69e037189a9a563f0b68cfe333461726b71d
/frameworks/base/core/java/android/app/LoadedApk.java
346296bd7d28fa79509605f30a222eb85d6bbb5d 01-Sep-2015 Alan Viverette <alanv@google.com> Reset class loader after updating instrumentation paths

Bug: 23688983
Change-Id: I9a0f81b422b5e29f3f8707b987e40c65965e0223
/frameworks/base/core/java/android/app/LoadedApk.java
e56b3f63e8235ab45e081fc9d3476a3e5248ddde 06-Jun-2015 Dmitriy Ivanov <dimitry@google.com> Add path to native libraries inside apk

If an application has native code (and primary abi)
include path to corresponding folder inside apk-file
to ldLibraryPath when constructing PathClassLoader

Bug: 21647354
Bug: 21667767
Bug: 21726698
Bug: 8076853
Change-Id: Ib0a2f01ee69019d3206a00c542bd7d0f58d0c481
/frameworks/base/core/java/android/app/LoadedApk.java
b9f3674c11ed9c89b80a69f728cbc5f540b2ecde 09-Apr-2015 Jeff Sharkey <jsharkey@android.com> Support moving apps to expanded storage.

Start deriving the data path for apps based on the volume UUID where
the app lives. This path is used for all higher-level APIs, giving
us a clean place to switch app storage.

When parsing a package, keep track of the volume UUID where it lives
and update PackageSetting once installed. For now continue treating
moves as installs, but we'll eventually clean this up to avoid the
additional dexopt pass. Wire up move to use the new installd command
to move private data between devices.

Cache LoadedApk only for the current user, since otherwise the data
dir points at the wrong path.

Bug: 19993667
Change-Id: I53336e3b147d5fd3130e6800869af172b628da37
/frameworks/base/core/java/android/app/LoadedApk.java
16df82d7ace0dbe625211561ccec9b6faf81debb 10-Feb-2015 Calin Juravle <calin@google.com> am fd523efc: Merge "Get the instruction set that the libraries of secondary Abi is supported."
automerge: d1e074a

* commit 'd1e074a72452c909c7ed2a4baf220d9d2f306b20':
Get the instruction set that the libraries of secondary Abi is supported.
fd523efcde98e97cd8c088f95198e6e13f4f8b64 10-Feb-2015 Calin Juravle <calin@google.com> Merge "Get the instruction set that the libraries of secondary Abi is supported."
0f8ecc84c8b86054bfd3275f942c3a705df01fbb 12-Jan-2015 Olawale Ogunwale <ogunwale@google.com> am 9d293911: am ebdfb6e8: Merge "[ActivityManager] Distinguish FG or BG receiver finished"

* commit '9d293911221cac930eb8edfef01362ea083eeaab':
[ActivityManager] Distinguish FG or BG receiver finished
1f5ac4d322d76ca76fdf5dee40fe9549aad7437e 03-Jan-2015 riddle_hsu <riddle_hsu@htc.com> [ActivityManager] Distinguish FG or BG receiver finished

Symptom:
Assume a foreground broadcast FG and a background BG.
If a recevier registers both FG and BG. When sending
BG and FG to the receiver, and the receiver BG receiver
completes first, its finishReceiver will trigger next FG
receiver rather than BG, and also deliver wrong result
code/data to the next.

More detail and sample:
https://code.google.com/p/android/issues/detail?id=92917

Root cause:
Due to BroadcastQueue:getMatchingOrderedReceiver will match
by receiver(IBinder), so the caller ActivityManagerService:
broadcastRecordForReceiverLocked will always match the first
queue(fg) if a receiver is both receiving fg and bg.

Solution:
Add a parameter flags to finishReceiver, then server side
could know the finished receiver should belong to which queue.

Another general solution but with bigger scope:
I60dce4a48e20c1002a61a979e4d78b9b0a8b94a0

Change-Id: I913ca6f101ac8ec6c7a8e42754e6781f80247b7f
/frameworks/base/core/java/android/app/LoadedApk.java
4741cd92d1a34d5e7a86b645498df00865f6c651 17-Dec-2014 jgu21 <jinghui.gu@intel.com> Get the instruction set that the libraries of secondary Abi is supported.

The secondary Abi is for the apps which support the mulitArch feature.
In presence of a native bridge the instruction set supported by
secondary Abi might be different than the one secondary Abi used.

Change-Id: I318fb21e45c34de6cf1bf8ff63519aaa2b1e2520
Signed-off-by: jgu21 <jinghui.gu@intel.com>
/frameworks/base/core/java/android/app/LoadedApk.java
23d40c40aa70866e12ccba640a71bbbf8d492a87 20-Nov-2014 Adam Lesinski <adamlesinski@google.com> Fix race when cleaning up receivers/services in Context

Bug:18135575
Change-Id: I2c69c8189d9ebd297c8a83fe84658b26cbb0528f
/frameworks/base/core/java/android/app/LoadedApk.java
8091edbffbacbf80eebe0ed646e6ec9f6aafe5be 15-Oct-2014 Narayan Kamath <narayan@google.com> Set threads' contextClassLoader during LoadedApk.makeApplication.

We used to set this from LoadedApk.getClassLoader. This had
the unfortunate side effect of clobbering the threads default
classloader when Context.createPackageContext().getClassLoader()
was called. This happens, for example, to every app that uses
a updatable webview.

bug: 17986934
Change-Id: If2b5938a19f836ea5fe60c94ea53a7125c2098c0
/frameworks/base/core/java/android/app/LoadedApk.java
1e466385d4a4f1acee080fa0fdf16cc8fd8ce7ca 15-Aug-2014 Adam Lesinski <adamlesinski@google.com> Have R classes generate their own reference rewrite logic

Change-Id: I0e5b8311fc3479d966a49f9acf0d4c32a6a024d3
/frameworks/base/core/java/android/app/LoadedApk.java
2cb761e3ddb9d68ab430013e9cd15ecaab9fbc62 15-Aug-2014 Adam Lesinski <adamlesinski@google.com> Fix assumption about DynamicRefTable in aapt

Packages without any resources should not expect to have
a DynamicRefTable.

Bug:16895517
Bug:17056720
Change-Id: Id006f6bdbf08f30505f6ba5982bc9d1b09db0f0a
/frameworks/base/core/java/android/app/LoadedApk.java
29564cd24589867f653cd22cabbaac6493cfc530 07-Aug-2014 Narayan Kamath <narayan@google.com> Remove system_server classes from the boot image.

We set the system_server classpath in the environment
(like we do with BOOTCLASSPATH). After the zygote forks
the system_server, we dexopt the classpath (if needed)
and then launch the system server with the correct
PathClassLoader. This needed several small / medium
refactorings :

- The logic for connecting to installd is now in a separate
class and belongs in the system_server.
- SystemService / SystemServiceManager have now moved to
classes.jar. They are only used from there, and since they
use Class.forName, we want them to be loaded by the
system_server classloader, and not the bootclassloader.
- BootReceiver now moves to frameworks.jar, because it is
used by ActivityThread and friends.

bug: 16555230

Change-Id: Ic84f0b2baf611eeedff6d123cb7191bb0259e600
/frameworks/base/core/java/android/app/LoadedApk.java
6c4b9de8f1fd594038793c3924b52a44138c319e 08-Aug-2014 Narayan Kamath <narayan@google.com> Validate instruction sets passed to installd.

We don't want folks passing down arbitrary strings.

bug: 16837404
Change-Id: I73ac66b376f1401f9f95f3c6323da6242ac8ed3d
/frameworks/base/core/java/android/app/LoadedApk.java
fee756ff91ab4d8f0e09ddb050d22d88ebb66ae7 17-Jul-2014 Dianne Hackborn <hackbod@google.com> Implement issue #16330060: Inform ActivityManager about WebView...

...state changes.

Add a new API to tell the activity manager about a new dependency
one process has on another package. Start using it already for
when apps is Context.createPackageContext() to load code from another
app.

Also do some work on getting the monitoring of proc/uid states
in shape so it can be used by unundled code, along with an
AppImportanceMonitor class for doing so.

Some small fixes and additions to VoiceInteractionService.

Improve handling of unaccounted/overcounted battery use so that
they aren't shown to the user unless they are significant.

Change-Id: I22dd79a73f4e70103d3f8964494aebc8a31f971c
/frameworks/base/core/java/android/app/LoadedApk.java
2053168eb4506e2f8795afdbe9731c6451e1589c 14-Jul-2014 Narayan Kamath <narayan@google.com> Dexopt for Context.createPackageContext when code is included.

The package manager now keeps track of per ISA dex-opt state.

There are two important things to keep in mind here :

- dexopt can potentially be very slow. In cases where the target
package hasn't been dexopted yet, this can take multiple seconds
and may cause an ANR in the caller if the context is being
created from the main thread.
- We will need to remove the constraint that dexopt can only be
requested by the system (or root). Apps will implicitly be
requesting dexopt by asking for package contexts with code included.
It's important to note that unlike dalvik, the dexopt stage in ART
isn't optional. ART cannot load classes directly from dex files.

bug: 15313272
Change-Id: I0bd6c323a9c1f62f1c08f6292b7f0f7f08942726
/frameworks/base/core/java/android/app/LoadedApk.java
7dba6eb3ac4fd6c8195cb0d0425866de50a9e114 16-Jul-2014 Narayan Kamath <narayan@google.com> Adjust nativeLibraryDir for package contexts of multiArch installs.

When we're creating a package context for a multi-arch app,
adjust the native library directory to match the bitness of
the process creating the context.

This change also removes apkRoot (which wasn't really being used)
and replaces it with a fully constructed secondary library path.
The secondary library path is a transitional measure until we
can reorganize the system image so that we can use nativeLibraryRoot
for system paths as well (nativeLibraryRootRequiresIsa will then
be true for all packages except for legacy installs).

bug: 16013931

Change-Id: I5ae090334b377b9e087aecf40075fab81b20b132
/frameworks/base/core/java/android/app/LoadedApk.java
8a4c9721a9e09d20c63381c13fa29bd9f7cbc3e3 16-Jun-2014 Jeff Sharkey <jsharkey@android.com> Plumb split APKs into public API.

Introduces new ApplicationInfo fields to surface zero or more split
APKs for an application. Splice these APKs into both the class
loader and resource system. Cleaner building of these paths.

Run dexopt() on all split APKs found after a parse, and populate
into ApplicationInfo.

Change-Id: I4a376bf4492d84ea95aafa866e106ea43a43e492
/frameworks/base/core/java/android/app/LoadedApk.java
de898ff42912bd7ca1bfb099cd439562496765a4 30-Jan-2014 Adam Lesinski <adamlesinski@google.com> Shared library resource support

Shared libraries can now export resources for applications
to use.

Exporting resources works the same way the framework exports
resources, by defining the public symbols in res/values/public.xml.

Building a shared library requires aapt to be invoked with the
--shared-lib option. Shared libraries will be assigned a package
ID of 0x00 at build-time. At runtime, all loaded shared libraries
will be assigned a new package ID.

Currently, shared libraries should not import other shared libraries,
as those dependencies will not be loaded at runtime.

At runtime, reflection is used to update the package ID of resource
symbols in the shared library's R class file. The package name of
the R class file is assumed to be the same as the shared library's
package name declared in its manifest. This will be customizable in
a future commit.

See /tests/SharedLibrary/ for examples of a shared library and its
client.

Bug:12724178
Change-Id: I60c0cb8ab87849f8f8a1a13431562fe8603020a7
/frameworks/base/core/java/android/app/LoadedApk.java
defd4a6b0448bf13606695eb086c77aa099684a2 11-Mar-2014 Jeff Brown <jeffbrown@google.com> Retain display when creating specialized contexts.

Fixed a bug that cause Context.createPackageContext() to discard
display information. Likewise also fixes issues where the
activity token, override configuration, user handle, and
restriction state might be discarded.

As part of this change, reworked how Contexts are created to make
initialization easier to understand and less error-prone.
The init() methods have been removed and most of the state is
now stored in final variables.

Bug: 12015587
Change-Id: If795851f1cd078bef889b76a52e00d9b3c06ab11
/frameworks/base/core/java/android/app/LoadedApk.java
48d22323ce39f9aab003dce74456889b6414af55 31-Jan-2014 MÃ¥rten Kongstad <marten.kongstad@sonymobile.com> 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)

Change-Id: If49c963149369b1957f7d2303b3dd27f669ed24e
/frameworks/base/core/java/android/app/LoadedApk.java
add005cf94dcc815d29b54588c76fd87929075b3 18-Jul-2013 Dianne Hackborn <hackbod@google.com> Mmmmmmm... lovely, lovely ArrayMap.

And ArraySet, too.

Change-Id: I72ea28cbb2286b01b6e1be082f8e7ec17e99074e
/frameworks/base/core/java/android/app/LoadedApk.java
88c0589969b17e66559cd2f132094cdaa0ee351d 28-Jun-2013 Craig Mautner <cmautner@google.com> Refactor ActivityThread cache - Baby step 1.

Introduce ResourcesManager and ResourcesKey as standalone classes.
Move DisplayMetrics and Resources HashMaps from ActivityThread to
ResourcesManager.

Change-Id: I20cc6c0dd1b74667354839e5ac9a660f4ee2d00d
/frameworks/base/core/java/android/app/LoadedApk.java
48d0d1886731ff19ed3fb47a5997be5df0d1bba8 11-Jun-2013 Craig Mautner <cmautner@google.com> Add activity token to display system.

First step in adding activity specific information to displays.
Replace CompatibilityInfoHolder with DisplayAdjustmentsHolder that
holds an activity token in addition to the CompatibilityInfo.

Change-Id: Ie113cd8dd9c62e0b5311204e039a4829096bea68
/frameworks/base/core/java/android/app/LoadedApk.java
208d937b613a49ad136a0eb182de5bcd73b48def 25-Feb-2013 Dianne Hackborn <hackbod@google.com> Better exceptions when LoadedApk fails.

Change-Id: Iba578c3872c6aeba3bf468735f06bd486d661454
/frameworks/base/core/java/android/app/LoadedApk.java
20e809870d8ac1e5b848f2daf51b2272ef89bdfc 01-Sep-2012 Dianne Hackborn <hackbod@google.com> Add registering for explicit users.

New API to register as an explicit user, which allows you to
also select ALL to see broadcasts for all users.

New BroadcastReceiver API to find out which user the broadcast
was sent to.

Use this in app widget service to handle per-user package broadcasts
and boot completed broadcasts correctly.

Change-Id: Ibbe28993bd4aa93900c79e412026c27863019eb8
/frameworks/base/core/java/android/app/LoadedApk.java
a492c3a7b2c18426fd0cb4d017eacbc368195dc5 24-Aug-2012 Jeff Brown <jeffbrown@google.com> Initial draft of high-level multi-display APIs.

This patch introduces the ability to create a Context that
is bound to a Display. The context gets its configuration and
metrics from that display and is able to provide a WindowManager
that is bound to the display.

To make it easier to use, we also add a new kind of Dialog
called a Presentation. Presentation takes care of setting
up the context as needed and watches for significant changes
in the display configuration. If the display is removed,
then the presentation simply dismisses itself.

Change-Id: Idc54b4ec84b1ff91505cfb78910cf8cd09696d7d
/frameworks/base/core/java/android/app/LoadedApk.java
f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8 16-Aug-2012 Dianne Hackborn <hackbod@google.com> Rename UserId to UserHandle.

This is the start of turning this into a formal public API.

Change-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0
/frameworks/base/core/java/android/app/LoadedApk.java
756220bd1912535840388a6743830d2e59ad4964 15-Aug-2012 Dianne Hackborn <hackbod@google.com> Add API to create new contexts with custom configurations.

This allows you to, say, make a Context whose configuration
is set to a different density than the actual density of the device.

The main API is Context.createConfigurationContext(). There is
also a new API on ContextThemeWrapper that allows you to apply
an override context before its resources are retrieved, which
addresses some feature requests from developers to be able to
customize the context their app is running in.

Change-Id: I88364986660088521e24b567e2fda22fb7042819
/frameworks/base/core/java/android/app/LoadedApk.java
1ded0b1f6af65c2f95f8327f7f3df4cee1bf2346 26-Apr-2012 Dianne Hackborn <hackbod@google.com> Add traces for window manager and activity manager.

Change-Id: I525d762db328e4c597da27b6b56d9a808e199756
/frameworks/base/core/java/android/app/LoadedApk.java
d893a890c92e174c1a4bf0075b0acc4749a0eaa8 02-Apr-2012 Brian Carlstrom <bdc@google.com> Add support for native library paths with instrumentation

(cherry picked from commit 8e658fd0415b3d6f44223c39a7e59a00cb0954aa)

Change-Id: Idb1e031d5deeea9305af8aacc17ae2d0d064dfc6
/frameworks/base/core/java/android/app/LoadedApk.java
483f3b06ea84440a082e21b68ec2c2e54046f5a6 14-Mar-2012 Amith Yamasani <yamasani@google.com> Package restrictions per user

Packages can be enabled/disabled per user.
This requires maintaining stopped/launched states and
enabled / disabled components and packages per user.

Refactored pm.Settings and PackageSettingsBase to keep
track of states per user.

Migrated the stopped-packages.xml to users/<u>/package-restrictions.xml

Changed intent resolution to handle individual user restrictions.
Bunch of IPackageManager calls now have a userId argument.
Make AppWidgetService handle removals of packages.

Added some tests for pm.Settings and PackageManager.

Change-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861
/frameworks/base/core/java/android/app/LoadedApk.java
d7026f1612a7c1e8cc9b484038fa99b7fc29cfd7 02-Mar-2012 Jeff Sharkey <jsharkey@android.com> Report leaked Context registrations to StrictMode.

When tearing down any leaked BroadcastReceiver or ServiceConnection
Context registrations, report through StrictMode.

Bug: 6084353
Change-Id: I5e78039299e2c9c1440cd1fd09317da78ffee82a
/frameworks/base/core/java/android/app/LoadedApk.java
a0c283eac33dd2da72235751bbfa4f2d9898d5ea 09-Feb-2012 Dianne Hackborn <hackbod@google.com> Add new feature for running services in "isolated" sandbox processes.

This reserves a range of uids (for each user) in which these processes
run. These uids are not associated with an application, so they
effectively run with no permissions. When a Service requests to
run in such a process through android:isolatedProcess="true", each
time it is brought up a new isolated process is started with its
own unique uid.

What we have so far gives us the basic infrastructure; more work
remains to further lock down what these uids have access to.

Change-Id: Ibfd27c75619cba61f528f46ede9113f98dc5f45b
/frameworks/base/core/java/android/app/LoadedApk.java
742a67127366c376fdf188ff99ba30b27d3bf90c 04-May-2011 Amith Yamasani <yamasani@google.com> Multi-user - 1st major checkin

Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
/frameworks/base/core/java/android/app/LoadedApk.java
5a6ef737edbf57577443ac056613afe6cb121519 11-Nov-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5595933: GREF leak due to race condition in...

...LoadedApk.ServiceDispatcher.connected , LoadedApk.forgetServiceDispatcher

Don't be stupid if we receive a new binding to a ServiceConnection after it
has already been unbound.

Change-Id: I85a49de97372bf9af55542a89031f0b7a2ac8fbb
/frameworks/base/core/java/android/app/LoadedApk.java
9ecebbfbf768fd63e9a6c9a09c86d81c7737ee2d 29-Sep-2011 Dianne Hackborn <hackbod@google.com> Add mechanism for Parcel to not allow FDs to be written to it.

This is to help implement issue #5224703.

Change-Id: I026a5890495537d15b57fe61227a640aac806d46
/frameworks/base/core/java/android/app/LoadedApk.java
5fd2169eabd77e6bfafaf456e58051a3bafb2bca 07-Jun-2011 Dianne Hackborn <hackbod@google.com> Work on issue #4518815: Compatibility mode introduces compatibility regression...

...for Market App iRunner

There were a lot of serious issues with how we updated (or often didn't update)
the display and resource state when switching compatibility mode in conjunction
with restarting and updating application components. This addresses everything
I could find.

Unfortunately it does *not* fix this particular app. I am starting to think this
is just an issue in the app. This change does fix a number of other problems
I could repro, such as switching the compatibility mode of an IME.

Also a few changes here and there to get rid of $#*&^!! debug logs.

Change-Id: Ib15572eac9ec93b4b9966ddcbbc830ce9dec1317
/frameworks/base/core/java/android/app/LoadedApk.java
2f0b17573d4324832f7a20402a3d2b5920bc4866 01-Jun-2011 Dianne Hackborn <hackbod@google.com> Fix issue #4502672: Wrong xml resources used for homescreen widgets.

There was a race in the system process between applying the initial
configuration and executing code in higher-level system services
like the app widget service that relies on the config. For some
reason it starting showing up more after my code changes; it should
now be completely fixed.

Also fix the activity starting window to run in compatibility mode
if its application is going to be in compatibility mode.

And some various cleanup and small fixes.

Change-Id: I0566933bf1bbb4259c1d99a60c0a3c19af1542e5
/frameworks/base/core/java/android/app/LoadedApk.java
e2515eebf42c763c0a2d9f873a153711778cfc17 28-Apr-2011 Dianne Hackborn <hackbod@google.com> Better compat mode part one: start scaling windows.

First step of improving app screen size compatibility mode. When
running in compat mode, an application's windows are scaled up on
the screen rather than being small with 1:1 pixels.

Currently we scale the application to fill the entire screen, so
don't use an even pixel scaling. Though this may have some
negative impact on the appearance (it looks okay to me), it has a
big benefit of allowing us to now treat these apps as normal
full-screens apps and do the normal transition animations as you
move in and out and around in them.

This introduces fun stuff in the input system to take care of
modifying pointer coordinates to account for the app window
surface scaling. The input dispatcher is told about the scale
that is being applied to each window and, when there is one,
adjusts pointer events appropriately as they are being sent
to the transport.

Also modified is CompatibilityInfo, which has been greatly
simplified to not be so insane and incomprehendible. It is
now simple -- when constructed it determines if the given app
is compatible with the current screen size and density, and
that is that.

There are new APIs on ActivityManagerService to put applications
that we would traditionally consider compatible with larger screens
in compatibility mode. This is the start of a facility to have
a UI affordance for a user to switch apps in and out of
compatibility.

To test switching of modes, there is a new variation of the "am"
command to do this: am screen-compat [on|off] [package]

This mode switching has the fundamentals of restarting activities
when it is changed, though the state still needs to be persisted
and the overall mode switch cleaned up.

For the few small apps I have tested, things mostly seem to be
working well. I know of one problem with the text selection
handles being drawn at the wrong position because at some point
the window offset is being scaled incorrectly. There are
probably other similar issues around the interaction between
two windows because the different window coordinate spaces are
done in a hacky way instead of being formally integrated into
the window manager layout process.

Change-Id: Ie038e3746b448135117bd860859d74e360938557
/frameworks/base/core/java/android/app/LoadedApk.java
c2d9c8e20bea92bd8c1bd0954b0a393c1bb8fec0 25-Jan-2011 Dianne Hackborn <hackbod@google.com> Fix issue #3385054: HRI24 never enters suspend (LP0) - IKXEVEREST-3439

Um. My fix for calling onReceive() even after a receiver is
unregistered actually made it so onReceive() is never called for
the result receiver of a broadcast.

Change-Id: I30efe05d8fdec6fee4222b7d797f2b303073dbcc
/frameworks/base/core/java/android/app/LoadedApk.java
89ba6750e5310c4da51786bd7eb559a43cab3982 24-Jan-2011 Dianne Hackborn <hackbod@google.com> Fix issue #3215261: NPE in WiFi Settings

And also fix #3343369: EGL_BAD_DISPLAY and/or broadcast intent
TIME_SET before boot completion

And a few more tweaks to animations to keep the wallpaper displayed
when needed.

And make more use of the drag and drop "rotation disabled" thing to
also use it while animating the screen rotation, since if we try to
start a new rotation while doing the animation we end up with a mess.

Change-Id: I373af305a6e23a92835abed96229a83e173f67ce
/frameworks/base/core/java/android/app/LoadedApk.java
624d50f00dc3d672d676a2fbb405c61dfc875b28 09-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Don't warn on reading from disk during initial class loading.

I'm going through the stacks that I filter out from the StrictMode
reports and making sure the devices don't upload them to begin with
when they're obviously legit and unavoidable.

Change-Id: If87b3182b12140f5ddbe52fed059b592b2cc178c
/frameworks/base/core/java/android/app/LoadedApk.java
e829fef63957a23b61cdb01bb692a17a041ff2dc 27-Oct-2010 Dianne Hackborn <hackbod@google.com> Add facility for broadcasts receives to do work asynchronously.

You can now call goAsync() and move your work to a background thread.
If you are that kind of receiver. You weirdo.

Also allows SharedPreferences.apply() to be committed off the main
thread after returning from onReceive().

Change-Id: I27f975910e28f230ababcaeb551eb9a78ec4fc76
/frameworks/base/core/java/android/app/LoadedApk.java
85387d7ba36e56b291cbde87acb5a5b2200fe01c 26-Aug-2010 Kenny Root <kroot@google.com> Allow native shared libraries in ASEC containers

This change moves the native library handling earlier in the package
installation process so that it may be inserted into ASEC containers
before they are finalized in the DefaultContainerService.

Note that native libraries on SD card requires that vold mount ASEC
containers without the "noexec" flag on the mount point.

Change-Id: Ib34b1886bf6f94b99bb7b3781db6e9b5a58807ba
/frameworks/base/core/java/android/app/LoadedApk.java
01e4cfc47d0a2c7e7ab383d2fb23224ec52c0301 25-Jun-2010 Dianne Hackborn <hackbod@google.com> Some ActivityThread/ActivityManager cleanup.

- Move PackageInfo out of ActivityThread, renaming to LoadedApk.
- Rename some of the other PacakgeInfo inner classes to better
represent what they are.
- Rename HistoryRecord to ActivityRecord.
- Introduce AppGlobals, to eventually let ActivityThread become
package scoped.

Change-Id: Ib714c54ceb3cdbb525dce3db9505f31042e88cf0
/frameworks/base/core/java/android/app/LoadedApk.java