Commit Graph

2185 Commits

Author SHA1 Message Date
Amaury Medeiros
dde24269c1 Minor javadoc improvements for PackageManager.
- Removed duplicated use of the word "the".
- Changed @return and @param explanation of getApplicationEnabledSetting,
which should get the enabled state of an application and not just one component.

Change-Id: Ide07ec84ceb5b9b5caa28efa9ba838a40ee7b514
Signed-off-by: Amaury Medeiros <amaurymedeiros@gmail.com>
2014-06-03 20:06:41 -03:00
Narayan Kamath
6431d11cd4 Add an --abi argument to "pm install"
This allows callers to force an install to a particular
ABI. This is intended only for testing (and CTS) and is
not meant for usage by the installer package.

Change-Id: Icb1528c0cd35b1aa9323386cb35ff4aaba374fcb
2014-06-03 11:11:47 +01:00
Narayan Kamath
6e2e686889 am 706b1d7e: Merge "Remove "required" prefix from ABI fields."
* commit '706b1d7ea0214b6858730e68c95c6a6d6d9a4c30':
  Remove "required" prefix from ABI fields.
2014-05-15 12:41:47 +00:00
Narayan Kamath
6e35a2ad05 Remove "required" prefix from ABI fields.
As per a comment on an earlier code review.

(cherry-picked from commit a9d64733421d6765eab5c2730fa912f068e26047)

Change-Id: I064cffc13c323b721f3a16c83e0e95ee348ef9f6
2014-05-15 10:57:05 +01:00
Brian Carlstrom
f2db00fdcd am edb88bcd: Merge "Use package usage information to decide what dex files to optimize in PackageManagerService"
* commit 'edb88bcd232176e575f2dbee2cfdb1bfbe33faef':
  Use package usage information to decide what dex files to optimize in PackageManagerService
2014-05-07 03:33:37 +00:00
Brian Carlstrom
ff1ec4d9e7 Use package usage information to decide what dex files to optimize in PackageManagerService
Change-Id: Iac137311e2e9d5139b5aa8651c6f3d296802612a
2014-05-06 15:06:25 -07:00
Bill Yi
293513a59d Merge commit '0b62467b142b61ee1e449ba958ba37dfd961ef56' into HEAD 2014-04-29 16:07:29 -07:00
Ramin Zaghi
ff0c470833 System services detect and register app CPU ABIs
This patch uses the NativeLibraryHelper class to
match native libraries in an .apk package with
those listed in 'ro.cpu.abilist' property.
The result is stored in packages.xml and the
ApplicationInfo class.

This information will be used by the ActivityManager
to decide which zygote to use to launch the given
app.

Change-Id: I3ec3d050996d8f4621f286ca331b9ad47ea26fa0
2014-04-09 17:20:13 +01:00
Ramin Zaghi
1378aba7ae Re-implement native library search and copies.
We now use a two step approach :

- First we look through the list of shared libraries in an
  APK, and choose an ABI based on the (priority)  list of ABIs
  a given device supports.
- Then we look through the list of shared libraries and copy
  all shared libraries that match the ABI we've selected.

This fixes a long-standing bug where we would sometimes copy
a mixture of different ABIs to the device, and also allows us
to clearly pick an ABI to run an app with.

The code in NativeLibraryHelper has been refactored so that all
file name validation & matching logic is done in a single place
(NativeLibrariesIterator). This allows us to avoid a lot of
redundant logic and straightens out a few corner cases (for eg.
where the abi determination & copying logic do not agree on
what files to skip).

bug: https://code.google.com/p/android/issues/detail?id=65053
bug: 13647418

Change-Id: I34d08353f24115b0f6b800a7eda3ac427fa25fef
Co-Authored-By: Zhenghua Wang <zhenghua.wang0923@gmail.com>
Co-Authored-By: Ramin Zaghi <ramin.zaghi@arm.com>
Co-Authored-By: Narayan Kamath <narayan@google.com>
2014-04-09 17:16:40 +01:00
Jeff Brown
932d98a013 am 33282d66: am a41ddccd: Merge "Fixed typo errors in documentation"
* commit '33282d66155e8d68acea512989ec61cb15fae1ce':
  Fixed typo errors in documentation
2014-03-13 01:54:56 +00:00
Narayan Kamath
59ed568fa5 am cd4874cf: am d265bcc4: Merge "Inform libcore of time format pref. changes."
* commit 'cd4874cfdc00d17454529b5dca85a487c7c2de77':
  Inform libcore of time format pref. changes.
2014-03-11 18:42:30 +00:00
Narayan Kamath
9a25b94430 am f61add84: am 2000fe58: Merge "Make getAssetInt throw unconditionally."
* commit 'f61add84c28be06c190d5594a41a7ef84b7666fe':
  Make getAssetInt throw unconditionally.
2014-03-11 18:16:17 +00:00
Jeff Brown
a41ddccdc6 Merge "Fixed typo errors in documentation" 2014-03-11 00:06:25 +00:00
Elliott Hughes
be59a21164 am 29d60b95: am 8d41e653: Merge "Miscellaneous small documentation fixes."
* commit '29d60b95fa8019c0542f46551057c4d376bb8a7a':
  Miscellaneous small documentation fixes.
2014-03-08 01:51:52 +00:00
Narayan Kamath
d5b9bcb60d am 28879bbf: am be57fca4: Merge "Extended locales in AAPT / AssetManager."
* commit '28879bbfe89dc4bf2067a7183975ecffb82f68e6':
  Extended locales in AAPT / AssetManager.
2014-03-07 19:39:13 +00:00
Narayan Kamath
27ad525c7e Inform libcore of time format pref. changes.
- Introduce a boolean extra for intent TIME_CHANGED that
  specifies if the user wants a 24 hour format or not.
- Have the ActivityManagerService inform running processes
  of changes to this preference.
- Add plumbing in ActivityThread to inform j.t.DateFormat

Change-Id: I05fafb903ae54e39c03a048b7a219dc5a93fd472
2014-03-07 13:48:04 +00:00
Dianne Hackborn
c1349a9601 am 4ad93639: am 67754d93: Merge "Runtime resource overlay, iteration 2"
* commit '4ad93639d210297764db3ffcd870ff38464943de':
  Runtime resource overlay, iteration 2
2014-03-07 02:27:10 +00:00
Narayan Kamath
ad7c2c2d8d am 77a1986c: am 49b7ba4d: Merge "AArch64: Make AssetManager and related classes 64-bit compatible"
* commit '77a1986c69760583f05eabbf7dac7c25dd8b7e7b':
  AArch64: Make AssetManager and related classes 64-bit compatible
2014-03-07 00:38:00 +00:00
John Spurlock
841aa8db20 am 5237a792: am 8c44c394: Doc fixups to ContentResolver, MediaRouter.
* commit '5237a792aabaa49063b15cefa26f0341ea9cd311':
  Doc fixups to ContentResolver, MediaRouter.
2014-03-03 17:00:49 +00:00
John Spurlock
5237a792aa am 8c44c394: Doc fixups to ContentResolver, MediaRouter.
* commit '8c44c394bf82a9a8b30bef32ddf46aeed31d8ae4':
  Doc fixups to ContentResolver, MediaRouter.
2014-03-03 16:57:22 +00:00
John Spurlock
8c44c394bf Doc fixups to ContentResolver, MediaRouter.
Change-Id: Ie821f971adf8fbbbbb6347713ae658e421d81cb8
2014-03-03 10:14:41 -05:00
Narayan Kamath
2d19d202bd Make getAssetInt throw unconditionally.
All callers have been moved over to getNativeAsset, and
this method has been hidden from the public API internally.

Change-Id: I5f29b5ddb4449adadf426e49a4085c7320289a15
2014-02-25 15:48:07 +00:00
Elliott Hughes
8d41e653ba Merge "Miscellaneous small documentation fixes." 2014-02-21 17:19:21 +00:00
Narayan Kamath
788fa41482 Extended locales in AAPT / AssetManager.
Support 3 letter language codes, script codes &
variants. The bulk of the changes are related to
the implementation of command line filtering of
locales etc. The previous code assumed that the
value of each "axis" (locale, density, size etc.)
could be represented by a 4 byte type. This is
no longer the case.

This change introduces a new class, AaptLocaleValue
which holds a (normalized) locale parsed from a
directory name or a filter string. This class takes
responsibility for parsing locales as well as
writing them to ResTable_config structures, which is
their representation in the resource table.

This includes minor changes at the java / JNI level
for AssetManager. We now call locale.toLanguageTag()
to give the native layer a well formed BCP-47 tag.
I've removed some duplicated parsing code in
AssetManager.cpp and replaced them with functions on
ResTable_config. The native getLocales function has
been changed to return well formed BCP-47 locales as
well, so that the corresponding java function can use
Locale.forLanguageTag to construct a Locale object
out of it.

Finally, this change introduces default and copy
constructors for ResTable_config to prevent having
to memset() the associated memory to 0 on every
stack allocation.

(cherry-picked from commit 91447d88f2)

Change-Id: I1b43086860661012f949fb8e5deb7df44519b854
2014-02-14 14:08:57 +00:00
Mårten Kongstad
48d22323ce 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
2014-02-03 11:20:30 +01:00
Ashok Bhat
896043d67d AArch64: Make AssetManager and related classes 64-bit compatible
Following changes have been done:

[x] Long is used to store native pointers as pointers can be
    64-bit.

[x] AssetManager openAsset native function returned -1 if
    file name was empty and java function considered any
    non-zero value as success. This has been fixed by native
    function throwing Illegal Argument Exception as well.

[x] AssetManager incRefsLocked and decRefsLocked now accept
    long as input to support 64-bit native references.

[x] AssetManager incRefsLocked method incorrecly used
    'this.hashCode()' instead of the passed parameter id.
    This has been fixed.

[x] Some minor changes have been done to conform with
    standard JNI practice (e.g. use of jint instead of int
    in JNI function prototypes)

Change-Id: I095b9f900d49e51f43ad6afc47cbc23116a6a64a
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-31 14:14:29 +00:00
Narayan Kamath
7866f2fcfa am 8005b9af: am 3c30eff6: Merge "Remove unused field from AssetManager."
* commit '8005b9af11ea366672d739769510240f931f3050':
  Remove unused field from AssetManager.
2014-01-24 01:42:08 -08:00
Narayan Kamath
2f756cbb5a Remove unused field from AssetManager.
This field was introduced in commit 4bdd33b81a17 but wasn't
used there (or since).

Change-Id: I0615e98b8990d42da6b85f8094ab19eb0465fd9e
2014-01-22 11:09:09 +00:00
Narayan Kamath
03e8be757d am 8796ab7f: am bb35356d: Merge changes Id54087dd,I946325e4,I2a2b2e68
* commit '8796ab7f22d3e9f5b85571e8851851c023416f96':
  AArch64: Use long for pointers in BitmapRegionDecoder
  AArch64: Use long for pointers in Movie class
  AArch64: Add AssetInputStream.getNativeAsset
2014-01-16 07:35:06 -08:00
Ashok Bhat
a0545dd54f AArch64: Add AssetInputStream.getNativeAsset
This patch adds AssetInputStream.getNativeAsset. This function
returns asset pointer, which can then be passed to JNI functions.
Note that this function is hidden and not part of Android API.

This function will eventually replace getAssetInt,
once all the classes that use getAssetInt are changed
to use getNativeAsset instead.

Change-Id: I2a2b2e6864f1f57ae2b3a10c45559b3635266ed5
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2014-01-15 14:21:59 +00:00
John Spurlock
b343635909 am e05190ea: am 85f98508: Merge "Docfixes: three typos and escape */*." into klp-docs
* commit 'e05190eae74be57dd517bb5afbccf901543329bf':
  Docfixes: three typos and escape */*.
2014-01-14 11:54:25 -08:00
John Spurlock
e05190eae7 am 85f98508: Merge "Docfixes: three typos and escape */*." into klp-docs
* commit '85f98508366e8422f71553d2a5e682eb804c7419':
  Docfixes: three typos and escape */*.
2014-01-14 19:50:38 +00:00
Narayan Kamath
80b0496abe am 2db26788: am e71afc2e: Merge "Revert "Hide AssetInputStream.getAssetInt.""
* commit '2db26788ab367f08cb5378d77e22e8939e7a28c2':
  Revert "Hide AssetInputStream.getAssetInt."
2014-01-14 02:16:39 -08:00
Narayan Kamath
b1bd1fe7fd Revert "Hide AssetInputStream.getAssetInt."
This reverts commit 842d44ec17.

Change-Id: I188e49d3651fd4941491c239b6a7c9f475995187
2014-01-14 10:08:45 +00:00
Narayan Kamath
271b28ac31 am 80213160: am ac8ccc3c: Merge "Hide AssetInputStream.getAssetInt."
* commit '8021316010fb4bd18a29751949eb2cda66199b6e':
  Hide AssetInputStream.getAssetInt.
2014-01-14 01:51:14 -08:00
Narayan Kamath
842d44ec17 Hide AssetInputStream.getAssetInt.
It returns a pointer to a private data structure, so there's
no sensible use for it. Also, the emergence of 64 bit processors
means that the return value isn't wide enough to represent
values in the native heap.

(cherry picked from commit f8f09a15a4)

Change-Id: I9c9b5bae6db8638e65dda60f924aa3dddd06813a
2014-01-14 09:34:00 +00:00
Christopher Tate
4ba1bbadb7 am 5fbcb134: am 35b7de4c: Merge "Cursor leakage due to cancellation signal"
* commit '5fbcb1347494e17dc9e9cd66d8e47a3972a8b90d':
  Cursor leakage due to cancellation signal
2014-01-09 12:47:50 -08:00
John Spurlock
3390018c6b Docfixes: three typos and escape */*.
Change-Id: I418d855b5d08a1a20eaca3d8e4d2e5d0fca23dd5
2014-01-06 11:44:42 -05:00
Mark Doliner
9525f2a72e Miscellaneous small documentation fixes.
Most of these I noticed on my own. The change to docs/html/tools/testing/testing_ui.jd is mentioned in a bug report:
https://code.google.com/p/android/issues/detail?id=56324

Signed-off-by: Mark Doliner <markdoliner@google.com>
2014-01-03 19:15:36 +00:00
Peter Eliasson
55eda43af9 Cursor leakage due to cancellation signal
If a query call was cancelled, the cursor adaptor might leak. The
adaptor is now closed if any exception is thrown during query.

Change-Id: Ic4c2edeaf2fcef56b4ef59484a36d3233aa12dbc
2013-12-19 09:08:05 +01:00
Narayan Kamath
28635ca3e3 am 44291d9c: Merge "Use StrictJarFile instead of JarFile for cert collection."
* commit '44291d9c2722e0d22dc6f909585f4302abdce205':
  Use StrictJarFile instead of JarFile for cert collection.
2013-12-16 07:20:26 -08:00
Narayan Kamath
1f0299a9cb Use StrictJarFile instead of JarFile for cert collection.
This ensures that we use the same underlying zip
processing code as the runtimes.

bug: 10193060

(cherry picked from commit eb565dc527)

Change-Id: Iaaa26b02678278394619d0a41613d9ceeae3203c
2013-12-13 16:21:58 +00:00
John Spurlock
56979b2234 am 125d133b: Fix bad @see links in Intent.java.
* commit '125d133bcce56403a9b4d1cdbbc61a7cb1d7f8e1':
  Fix bad @see links in Intent.java.
2013-11-25 18:39:33 +00:00
John Spurlock
125d133bcc Fix bad @see links in Intent.java.
Change-Id: Ifa283214798f8d2de4f8bdb17ed78609a7d43293
2013-11-25 11:58:37 -05:00
Christopher Tate
99437f252b Merge "Ensure recipient can be launched before attempting broadcast delivery" into klp-dev 2013-11-14 22:59:20 +00:00
Christopher Tate
ba629da331 Ensure recipient can be launched before attempting broadcast delivery
User removal or eviction inherently races with broadcast delivery.  This
patch introduces a latest-possible recheck of the availbility of the
target application before attempting to send it a broadcast.

Once the process has actually been spun up the system is essentially
committed to presenting it as a running application, and there is no
later check of the availability of the app: the failure mode for
continuing to attempt delivery is a crash *in the app process*,
and is user-visible.

We now check the app+userid existence of the intended recipient
just prior to committing to launch its process for receipt, and
if it is no longer available we simply skip that receiver and
continue normally.

Bug 11652784
Bug 11272019
Bug 8263020

Change-Id: Ib19ba2af493250890db7371c1a9f853772db1af0
2013-11-14 12:37:31 -08:00
Matthew Williams
a7456e46f4 SyncManager now returns copy on getCurrentSyncs()
Bug:11559103
Added a new getCurrentSyncsCopy() that is public. The other version
is needed for internal SSE calls.

Change-Id: I0287f039a6f75abf04b65b85cb30f78353aeef4f
2013-11-13 18:17:54 -08:00
Jeff Sharkey
8a2998eade Better enforcement in DocumentsProvider.call().
Use ContentProvider.enforceWritePermissionInner() to handle all edge
cases around checking if caller has write permissions.  This fixes
bug where call() would throw if caller and provider were the same app.

Bug: 11464234
Change-Id: Iace8e0e4243d56ed1cdcc9680383103975107036
2013-10-31 14:55:44 -07:00
Taeho Kim
bd88de46a1 Fixed typo errors in documentation
Fixed some type errors in developer documentation.

Change-Id: I92629a4350508fb96fda1842741c5ced64171464
Signed-off-by: Taeho Kim <jyte82@gmail.com>
2013-10-29 09:09:24 +09:00
Jeff Sharkey
e8c00d8ed4 Improve DocumentsProvider and contract docs.
Bug: 10567557
Change-Id: I71e7f7ad172e9986e58b9c9533b1c948c5530397
2013-10-15 16:44:22 -07:00