Commit Graph

404 Commits

Author SHA1 Message Date
Alex Light
09107db491 Remove obsolete pruneDexCache
Bug: 16875245

Change-Id: I06e14c405aa4af295795982c1d236be3cb00e893
2014-08-28 23:30:45 +00:00
Calin Juravle
e8d2ffd733 Pass vmSafeMode (manifest attribute) to installd.
The flag is used to enforce --interpret-only flag when running dex2oat.

Bug: 12457423

(cherry picked from commit 11e08c010a42390803b65eaa698ca0e768aed896)

Change-Id: I215339527e998b24e274c8df42a5024839e6a9fa
2014-08-27 14:49:11 +01:00
Calin Juravle
219b535673 Fix the instruction set for dex file during (re)moving ops.
This complements https://android-review.googlesource.com/#/c/103231/
where the instruction set was mapped just for comptilation. The same
should have been done for move,remove and getSize.

The list of dex code ISAs is alo de-duped.

Bug: 16185267
Change-Id: I8fe453a800812e382e8f41b5f7922997aa9c18a9
2014-08-08 18:45:28 +01:00
Calin Juravle
576c384ed8 Use native ISA for dex code (in case there's a NativeBridge)
In the presence of a native bridge it is more efficient to compile the
dex directly to the native ISA than to use the shared library ISA as a
reference.

This can be achieve by configuring the readonly system properties to map
between the .so ISA and the desired dex code .ISA (e.g.
ro.dalvik.vm.isa.ISA1=ISA2).

Bug: 16185267

Change-Id: I50baa7b37e1465b9adf72d6f6b96f526a08d59c7
2014-08-06 19:28:28 +01:00
Alex Light
1995d12d26 Make system use patchoat to relocate during runtime.
Make PackageManagerService aware of patchoat and make it use it when
appropriate.

Bug: 15358152

Change-Id: Ibe92d8b55a24bbf718b0416a21b76e5df7a2de26
2014-08-05 10:22:10 -07:00
Robin Lee
74803e559c Merge "Make misc config directory during user creation" 2014-07-02 20:49:53 +00:00
Narayan Kamath
ec4516470d Fix native crashes when APKs can't be opened.
There was lax / incomplete error checking around the
construction of Apk handles. This change changes the ApkHandle
API and makes it throw IOException if the zipfile couldn't
be opened.

Additionally :
- Fix a resource leak in DefaultContainerService
- Report errors correctly during package moves.

bug: 15563874
Change-Id: Ic71a10709eb82b8f53405bbfb2320e80aa96b771
2014-06-30 17:14:29 +01:00
Narayan Kamath
2a0f9e6a52 Merge "Explicitly list out the list of cache subdirs to prune." 2014-06-24 06:33:30 +00:00
Brian Carlstrom
0547ce55eb Treat missing package usage data as a separate case
Bug: 15520936
Change-Id: I8e1c6921973f84af7ee94de91721cc4a3436ebaf
2014-06-20 12:53:19 -07:00
Narayan Kamath
8df5bd08c2 Explicitly list out the list of cache subdirs to prune.
We don't want directories like profiles and the former
profile-cache from being included in the prune. SELinux would
have prevented the move, but that's very brittle.

bug: 15677279

Change-Id: I2ff5db056757ffacaf108bb07b02dc0cac7172dd
2014-06-17 13:07:45 +01:00
Narayan Kamath
5b95e02684 Move dex file pruning to installd.
Companion change for commit 7dbf95cd7606e22267
in frameworks/native.

bug: 14407732
Change-Id: I520aa3950fb6b87c7ca5a805e597d734496407d3
2014-06-16 13:59:21 +01:00
Robin Lee
94ca179eca Make misc config directory during user creation
Directories will appear in /data/misc/user/XX, readable only by
applications within that user.

Change-Id: I0adb14deb1a035abdbe51714356bd0c94ccf04c5
2014-06-10 18:48:05 +01:00
Narayan Kamath
d47e38b634 Scan for renderscript files before deciding ABIs.
The presence of ".bc" files in an APK implies
incompatibility with any of the 64 bit ABIs.

bug: 14900093

Change-Id: I66ca339a9a149cb3b7e7b349033d80acdeb4140a
2014-06-03 12:58:35 +01: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
ab3d85ab1a am 838b1e22: Merge "Fix NPE in PackageManagerService."
* commit '838b1e2215cbc27e77530f4c79124c088353e0e7':
  Fix NPE in PackageManagerService.
2014-05-21 20:17:52 +00:00
narayan
0cfe875ac5 Fix NPE in PackageManagerService.
Check that each package from the setting has
a parsed pkg before we attempt to perform dex-opt
on it. If it doesn't have a parsed package, adjust
the ABI in the settings, but don't perform dexopt.
It will be dexopted later if it's still active
based on the setting.

bug: 15081286

Change-Id: Ifb6d1d5efdc9c59b251731972afa951ad930d05c
2014-05-21 21:00:48 +01:00
Brian Carlstrom
e77a77d081 am ec71fed0: Merge "Improve ABI handling for shared user ids."
* commit 'ec71fed089965c4d731eaa90344849a1775f937a':
  Improve ABI handling for shared user ids.
2014-05-21 06:46:26 +00:00
Narayan Kamath
b851c89d22 Improve ABI handling for shared user ids.
The key improvement is that we need to keep track of
the package that's currently being scanned (this includes
new installs and upgrades of existing packages) and treat
it specially. If we didn't do that, In the case of upgrades
we would perform the shared UID calculation based on the ABI
of the old package, and not the current package.

This change also allows us to perform the CPU ABI calculation
before dexopt, which saves us from having to do it twice and
fixes a bug where we were using the wrong package path to
dexopt a package.

This also has the side effect of fixing 15081286.

bug: 15081286

Change-Id: I20f8ad36941fc3df29007f0e83ce82f38f3585c8
2014-05-20 14:09:12 +01:00
Narayan Kamath
deda5467f4 am a4fd1baa: Merge "Fail if we\'re unable to agree on an ISA for shared UIDs."
* commit 'a4fd1baac68dcd73957e0fca0c02089ecf9a268a':
  Fail if we're unable to agree on an ISA for shared UIDs.
2014-05-19 13:29:57 +00:00
Narayan Kamath
20ee78ab95 Fail if we're unable to agree on an ISA for shared UIDs.
It's not worth the complexity of rescanning the APK and
extracting a shared library with a different ABI.

Also gets rid of an unnecessary command line argument and
checks for dex-opt failures while adjusting shared ABIs.

bug: 14453227

Change-Id: I6a0695e24cba37e93540c540507088e95b89089b
2014-05-19 14:24:46 +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
2ce02bba1e am b7d7cbc9: Merge "Fix background PackageUsage writing."
* commit 'b7d7cbc9c3a9315a5c5ecd85e16f5916c4bc3f3a':
  Fix background PackageUsage writing.
2014-05-13 00:34:42 +00:00
Brian Carlstrom
112a720638 Fix background PackageUsage writing.
Change-Id: Ia358b61e648b427c86cf75ae096cd2a68ace209f
2014-05-12 16:56:34 -07:00
Brian Carlstrom
edc31509c2 am b98ca5b0: Merge "If PackageUsage information is missing, treat as first boot and compile everything"
* commit 'b98ca5b0dd73f374178022b4a4b37412f01a3c03':
  If PackageUsage information is missing, treat as first boot and compile everything
2014-05-09 17:33:04 +00:00
Brian Carlstrom
7c5c864c8a If PackageUsage information is missing, treat as first boot and compile everything
Bug: 14663243
Change-Id: I0ae33882044211f777590f482e17e87596be4463
2014-05-09 09:52:09 -07:00
Brian Carlstrom
691079ddc0 am a21ba5be: Merge "Add BackgroundDexOptService"
* commit 'a21ba5bec748e2f10d7e6d38181ec1124991cb60':
  Add BackgroundDexOptService
2014-05-07 03:33:41 +00: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
7395a8ab8a Add BackgroundDexOptService
Change-Id: I0439a04f693ba92df906cbda34f8e53b32f63329
2014-05-06 15:14:29 -07: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
Narayan Kamath
5dca099df7 am 1cec7f85: Merge "Don\'t adjust ABI if PackageSetting#pkg is null."
* commit '1cec7f8539e6465ff80577169d7d07df3c2574b7':
  Don't adjust ABI if PackageSetting#pkg is null.
2014-05-01 14:00:52 +00:00
Narayan Kamath
c1f81f9086 am 27f2bfc4: Merge "Fix dex file pruning logic."
* commit '27f2bfc406157039c5241f6a4f38f597b2076e2a':
  Fix dex file pruning logic.
2014-05-01 14:00:49 +00:00
Narayan Kamath
51f4367cac am bcc3b312: Merge "Adjust instruction sets for shared UID apps."
* commit 'bcc3b312b0662ae2f8b8444eaedd5f35fc75c411':
  Adjust instruction sets for shared UID apps.
2014-05-01 14:00:46 +00:00
Narayan Kamath
69da8a124e am 2a9a0471: Merge "Package manager changes for dual zygote stack."
* commit '2a9a047140b8da8f9cd7147c8bed60eeb61d1b6a':
  Package manager changes for dual zygote stack.
2014-05-01 14:00:43 +00:00
Narayan Kamath
d85ded890d am 645a920f: Merge "Fix OEM native library path bug."
* commit '645a920fd2c478c545c6bb659f2eab36545fe116':
  Fix OEM native library path bug.
2014-05-01 13:56:59 +00:00
Narayan Kamath
eb5734989b am 986b901a: Merge "Fix native-lib dir assignment & updating"
* commit '986b901ae280928e91193527f7c883b296fc62fc':
  Fix native-lib dir assignment & updating
2014-05-01 13:56:56 +00:00
Narayan Kamath
f465db9f1d Don't adjust ABI if PackageSetting#pkg is null.
If means the package hasn't been scanned yet, and we
will adjust the ABI during the scan of the last package
in the shared user group.

NOTE: This needs some more cleaning up, which will be
done along with the remaining TODO in this function.

(cherry picked from commit 6609990e35b11c38f55f6e632160d4f2ff201ea3)

Change-Id: Ibace7849485865054e062d2b979f320bf89ff0f3
2014-05-01 13:56:43 +00:00
Narayan Kamath
57156572a7 Fix dex file pruning logic.
We should now prune all normal files from /data/dalvik-cache
in addition to looking for dex files in all subdirectories of
/data/dalvik-cache.

(cherry picked from commit 51a6f9253399588eedf77d75c578d9aa23d11529)

Change-Id: I536dfdc48e94155e7be64eb4efd9f7f2a1d2d00a
2014-05-01 13:56:22 +00:00
Narayan Kamath
1b46093d33 Adjust instruction sets for shared UID apps.
Since shared UID apps are run in the same process,
we'll need to make sure they're compiled for the same
instruction set.

This change implements the recompilation of apps that
don't have any ABI constraints.

Apps that *do* have ABI constraints are harder to deal
with, since we'll need to rescan them to figure out the
full list of ABIs they support and then re-extract the
native libraries from these apps once we find an ABI we
can use throughout.

(cherry picked from commit 85703d58af1dac692d7d83c03220e45ab2a5aded)

Change-Id: I8311a683468488cc7e30381965487a3d391609ae
2014-05-01 13:55:35 +00:00
Narayan Kamath
0349e8c478 Package manager changes for dual zygote stack.
- Pass down the app's instruction set to dexopt so that
  it can compile the dex file for the right architecture.

- Also pass down the app's instruction set to rmdex, movedex
  and getSize so that they can construct the cache file
  location properly.

- Temporarily compile "system" jars such as am,wm etc. for
  both architectures. A follow up change will ensure that
  they're compiled only for one architecture (the same
  arch. as the system server).

- Java "shared" libraries are now compiled for the right
  architecture when an app requires them.

- Improve the app native library ABI detection to account
  for system apps installed in /system/lib{64}/<packagename>
  and also handle sdcard and forward locked apps correctly.

(cherry-picked from commit b4d35dc8e9702f9d0d82d35a105f0eea35672b52)
2014-05-01 13:54:48 +00:00
Narayan Kamath
99253c2da9 am fde59428: Merge "Handle /oem and /vendor as well"
* commit 'fde594288bff0b8f95567e6b27f273f50f0c5f87':
  Handle /oem and /vendor as well
2014-05-01 13:53:08 +00:00
Narayan Kamath
a7b465efc4 am d91358b2: Merge "Support per-package lib dirs for bundled apps"
* commit 'd91358b2b977ef7c3551a486f51475c0441aba6e':
  Support per-package lib dirs for bundled apps
2014-05-01 13:52:59 +00:00
Jeff Sharkey
66309e2bf7 Fix OEM native library path bug.
Bug: 13340779

(cherry picked from commit 7d3328d14bbbee01a9de1ff5b13b0446c709d835)

Change-Id: I1b4c5d138cafe3651d475ca1e048f495ff6c5f10
2014-05-01 13:52:33 +00:00
Christopher Tate
c38a807b2f Fix native-lib dir assignment & updating
The per-package /system/lib/* feature introduced bugs in the
native library path handling during app upgrade installs.  The
crux of the fix is that when recalulating the desired native
library directory, the basis for the calculation needs to be
the scanned APK's location rather than the extant package
settings entry -- because that entry refers to the pre-upgrade
state of the application, not the new state.

Bug 14233983

(cherry picked from commit 353e39a973)

Change-Id: I26f17a596ca2cd7f963955c0642548c15138ae26
2014-05-01 13:52:06 +00:00
Christopher Tate
c84471c2e0 Handle /oem and /vendor as well
Bug 13170859

(cherry-picked from commit 740888f62e)

Change-Id: I7b5e206697fcbec146cac6cd83fca5c583a8cbd7
2014-05-01 13:51:33 +00:00
Narayan Kamath
fc0810e565 Support per-package lib dirs for bundled apps
Bundled apps can now use /system/lib/apkname or /system/lib64/apkname
in addition to the (globally shared) /system/lib and /system/lib64
directories.  Note that when an app is updated post hoc the update APK
will look to its normal library install directory in
/data/data/[packagename]/lib, so such updates must include *all*
needed libraries -- the private /system/lib/apkname dir will not be in
the path following such an update.

"apkname" here is the base name of the physical APK that holds the
package's code.  For example, if a 32-bit package is resident on disk
as /system/priv-app/SettingsProvider.apk then its app-specific lib
directory will be /system/lib/SettingsProvider

Bug 13170859

(cherry picked from commit addfbdc09c)

Change-Id: Id82da78024a6325458b8b134d7d91ad0e5f0785e
2014-05-01 13:50:47 +00:00
Bill Yi
293513a59d Merge commit '0b62467b142b61ee1e449ba958ba37dfd961ef56' into HEAD 2014-04-29 16:07:29 -07:00
Elliott Hughes
34385d352d Track libcore.os' move to android.system.
(This is partial, but should cover everything in AOSP master except
for the zygote.)

Change-Id: I1042c99245765746a744c44e714095cb2c6cb75d
2014-04-28 11:11:32 -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