PackageManagerService shouldn't check features that a package declares
that it uses because this will cause problems in the future when we add
more features that older phones didn't explicitly declare. We must rely
on markets to know about phones and filter them for us to avoid this
situation.
Bug: 3409434
Change-Id: I0d51b2de33d8110edc6824af4b5b8c901f96077f
This reverts commit 6c4d904851772313930f800ac7c323cf90c709bb.
Going with a different tactic that doesn't dump stuff on
PackageManagerService.
Bug: 3214719
Change-Id: I0bbeccf3c21d264deda4256eb53713d2c98284f4
The copyFrom() method was not written to create a clone of the
PackageSetting, so just create a new constructor that actually does a
clone.
Bug: 3349588
Change-Id: I24bdce6c3559e097ecb64b61585ef3b12bca491f
Previously any updated system apps would not be able to have a greater
than 0 priority on an activity intent filter. Moving the priority check
later in the package scanning allows it to apply to updated system
packages as well.
Bug: 2572398
Change-Id: I9fdf7906809518b28b49ffec31afec1442d85d3c
In order not to clobber the internal system's settings, we duplicate it
before putting it back into mPackages, but the PackageSetting has a
couple extra pieces of information that weren't being copied.
Bug: 3339279
Change-Id: I047087ac3477c7b2d5ce23e5e0a5e8c094bd0d3f
...current process has android.permission.WAKE_LOCK
When updating a system app, we would actually uninstall the package
of the system app, which also meant removing its uid...! It was just
luck that we would get the same uid when installing the update after
that. During that time, if anyone tried to do anything related to
that uid, it would be unknown.
This change tweaks how we go about replacing system apps by making
it more like normal apps -- to make this work, if we need to disable
the system app, we generate a new PackageSetting from the current
system app and replace it into our data structures, so we can update
that without trashing the current correct information about the (still
actually there) system app.
Also fixed a problem where we were not killing the currently running
app before installing, like we do when updating a normal application.
And fixed a problem where we were not deleting the /data .apk when
uninstalling a system app update.
And added a new option to the "pm" command to clear the data associated
with an app.
Change-Id: I0e879677849aa42950a3c360bf78ad820e87674b
Includes some other small fixes to battery collection and a few
other things.
Output of package info looks like this:
5,0,i,uid,1000,com.android.settings
5,0,i,uid,1000,com.android.providers.subscribedfeeds
5,0,i,uid,1000,com.android.providers.settings
5,0,i,uid,1000,com.android.server.vpn
5,0,i,uid,1000,android
5,0,i,uid,1000,com.android.systemui
5,0,i,uid,1000,com.google.android.backup
5,0,i,uid,1001,com.android.phone
5,0,i,uid,1001,com.android.providers.telephony
5,0,i,uid,1022,com.android.nfc
5,0,i,uid,10021,com.google.android.location
5,0,i,uid,10021,com.google.android.syncadapters.calendar
5,0,i,uid,10021,com.google.android.gsf
5,0,i,uid,10021,com.google.android.syncadapters.contacts
5,0,i,uid,10026,com.android.providers.downloads.ui
5,0,i,uid,10026,com.android.providers.media
5,0,i,uid,10026,com.android.providers.drm
5,0,i,uid,10026,com.android.providers.downloads
5,0,i,uid,10032,com.android.launcher
5,0,i,uid,10039,com.google.android.gm
5,0,i,uid,10041,com.google.android.gallery3d
5,0,i,uid,10049,com.android.providers.calendar
Change-Id: I9e38f254eef146339113ad270f5c6e8b60fb7a1d
versionCode and mVersionName were added recently but ps.pkg can be null
in some situations. Move them to where it will check before
dereferencing it.
Bug: 3152896
Change-Id: If992a1f29ac7b8f595f847b7743fd2374662bb6e
Remember, the system and main logs are
- Shared resources
- Primarily for recording problems
- To be used only for large grained events during normal operation
Bug: 3104855
Change-Id: I136fbd101917dcbc8ebc3f96f276426b48bde7b7
Apps that existed in an ASEC container before we put native libraries
in the ASEC container will have their native libraries in the
/data/data/<app>/lib directory. Don't try to symlink to the ASEC
container's library directory in this case.
Bug: 3108230
Change-Id: I32167341cc8ff8c005e50f456ee7c783bfb0bf22
- Activity manager now prints the pid doing a startActivity request.
- Package manager now remembers messages about problems it has parsing
packages.xml.
Change-Id: I11a75aa3953dbfa5dd41cfbdf69116c764ec228f
NFC service is now an application service in packages/apps/Nfc.
NFC service is registered through ServiceManager.addService(), and the proxy
object NfcAdapter obtains a handle to it through ServiceManager.getService().
**Important** Had to add new symbols AID_NFC / NFC_UID / android.uid.nfc and
modify service_manager.c, Process.java and PackageManagerService.java in order
to force the com.android.nfc process to take a fixed uid, so that it can use
ServiceManager.addService().
Most of the JNI has moved to packages/apps/Nfc/jni. However NdefRecord and
NdefMessage require some in-process native code, so android_com_NdefMessage.cpp
and android_com_NdefRecord.cpp stay in frameworks/base/core/jni. They link to
a very small library libnfc_ndef.so that implements NDEF message parsing. This
has been added to core.mk so all devices (even without NFC hardware) can work
with NDEF data.
Bug: 3041259
Bug: 3097445
Change-Id: If8f00ce8f2053acfc9319ca366d4a9c02bd396e6
Signed-off-by: Nick Pelly <npelly@google.com>
The deletion of native libraries was initially added to
FileInstallArgs.cleanUpResourcesLI() as a way to get rid of old native
libraries during an upgrade, but it runs well after scanPackage unpacks
the new native libraries. scanPackage now removes old libraries before
unpacking the new ones, so we don't need this code anymore.
Bug: 3087739
Change-Id: I54aca830ec34d6440ba22f117d55aa3107bf5b75
When the PackageManagerService is asked to install from a URI, it might
be explicitly granted the permission to read from the URI content
provider. We need to pass along these permissions to the
MediaContainerService (DefaultContainerService) to ensure the MCS can
read from the content provider.
Change-Id: Ie7ddaeb638af82b60792a4c3f8c99e1e8eef1916
Provides information about the time at which the package was
first installed and the time it was last updated.
Change-Id: Icb43f77b5b669a1ce685e8913046b8be386b6175
This will help legacy games that use dlopen() to directly access the
/data/data/<app>/lib directory before the
ApplicationInfo.nativeLibraryDir was part of the API.
Change-Id: Ie9f3e7239b6334708b5d086ffafe66a507f6d9da
If a system app had a lingering native library in /data/data/<app>/lib,
it would prefer that over the one in /system/lib due to recent changed
in the Dalvik JNI class loading code.
To "fix" that we need to check if there are any native libraries in a
/data/data/<app>/lib directory for any non-updated system apps and
delete them during scanning.
Change-Id: If3a22e41a8531e9e5a44ba001dcea46253d47d45
If an application moved between internal and external storage during a
reinstall, we were getting the wrong path. This change fixes going from
internal to external and external to internal which need different
fixes.
Bug: 3019708
Change-Id: If5859aeab7505cbbb35ae5724de1224a8733f2e8
The package manager would write its settings multiple times,
once for each app on the SD card, when unmounting external storage.
This was kind-of slow.
Change-Id: Ic5ce12022a9ce26857d1db3071e316750b03f05a
FileOutputStream writes data one byte at a time, so use the
BufferedOutputStream to wrap it and write once all the XML serialization
is done.
Change-Id: I419a6fcac2ac9a72a6cf41d4ca6e7ab6c7505618
Moves the remoteNativeLibrariesLI call to NativeLibraryHelper to prepare
for being able to symlink the /data/data/<package>/lib dir to the ASEC
container.
Change-Id: Ie3648509c6b6293a8d9bdd815610ab408df5047f
During boot-up we weren't paying attention to the nativeLibraryPath that
was read from the package settings XML file which reset the path to the
default /data/data/<package>/lib directory.
This adds nativeLibraryPath as an argument to the PackageSettings
constructor and related functions that will pull that value in from the
settings file.
It also removes the call to nativeLibraryDir.mkdir() which installd does
by itself.
Change-Id: I53db73c3b1bc90997a4a73f7f2fbaee125e6f67e
Up the blocking queue maximum to twice the number of containers we
allow which should let "asec list" complete without blocking the thread
several times.
Change the threads for the NativeDaemonConnector to vold and netd to be
more descriptive instead of the same name.
Bug: 2501075
Change-Id: I7e7949845a6c70a3d619aec0fa79ceef3c17a4be
A logic error would allow not deleting data when uninstalling a system
app upgrade that's of a newer release than the on on the system
partition. If the system app had a database upgrade and this happened,
you might be in trouble.
Luckily it appears no one ever does this in code. You'd have to manually
get there doing:
adb uninstall -k updated.system.package
Change-Id: I3110fedf2d147975a0635c71898d985dd642a2c1
A few lines down "ps" is run through a null check, so apparently there
could be some screwy system conditions where this is encountered. And,
in fact, this was encountered through an updated system pacakge that
managed to delete the package from /system/app during testing. It left
the PackageSetting in mDisabledSysPackages which would cause a deference
of a null variable.
Change-Id: Ic7faca569abd16a87a8a69c20df08c11a274a001
* Add native library tests during package move
* Fix omission that let PackageSettings and ApplicationInfo get out of
sync.
Change-Id: Ic4958f971cb2c9cfd270522fdc120b4031c1124a
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
When moving between program locations or application names, the .dex
file is moved by installd. However, in engineering builds, the
applications are run through dexopt on-demand. If the .dex file fails to
move, we can ignore it because it's most likely because the .dex file
does not exist yet.
Change-Id: Id5c4dbfa33f19c976acd9f184ccd637752326629
When a movePackage operation is requested, don't allow multiple requests
to pile up for one package. Once a move is completed, an observer will
receive the message and be allowed to call movePackage again.
Change-Id: Ie3842b6d96446febc0037bf9b8f1ca250735edc2
If MCS dies in the middle of a call during install, only proceed if the
call was successful. Otherwise wait for the max retries to be reached
and run the failure handling code there.
Change-Id: I00a27ea91046ea6521a3cff5e5ffe2c71b2b5bb4
When a temporary container is created, its existence should be
ephemeral. However, if there is an error that causes system_server to be
killed during the process of creating a finalized ASEC, delete the stale
containers on the next start-up of system_server.
Change-Id: I7be8f94638a824295474c9a95960594848cb726b
getTempContainerId() would always return "smdl2tmp1" unless you had
MAX_CONTAINERS number of SD card SDKs, because of an array sort that put
all the zeros at the beginning.
Switch from trying to find a hole in the series of numbers to just
getting a number that's one larger than the previous. This reduces the
algorithmic complexity and the memory requirements.
Bug: 2832580
Change-Id: I32dc75ef5a6645f594ea47b032d7402e8860ebcd
Simple API for tracking .obb files associated with packages. Stores the
path in the PackageSettings. No verification of file content is done
now since the PackageManagerService can't read the SD card where these
files will likely live.
Change-Id: Ibeaf26ba0526b6d60f401137e58f46ee9faff39e