Commit Graph

3907 Commits

Author SHA1 Message Date
TreeHugger Robot
97fe63bb53 Merge "Revert "Push mapping from file extension to GID."" 2017-02-01 08:56:55 +00:00
Christopher Tate
2d6c945b03 Make sure MASTER_CLEAR_NOTIFICATION goes to manifest receivers
It sometimes needs to launch OEM-supplied apps for processing, so make sure
it continues to do so.

Bug 34587823
Test: verified dispatch via logcat/dumpsys

Change-Id: Ic80e06582116cdd629492ed01a9b05b0e1b3822e
2017-01-31 20:52:39 +00:00
Jeff Sharkey
1009c08f8e Revert "Push mapping from file extension to GID."
This reverts commit f17e4cf1f9.
2017-01-31 01:09:14 -07:00
TreeHugger Robot
02f3a5f0e7 Merge "Minor updates to reflect libbinder changes." 2017-01-31 01:53:15 +00:00
Robert Quattlebaum
9cd7af310c Minor updates to reflect libbinder changes.
* Parcel: Update comment to reflect new file path
* IpPrefix: Update AIDL file to indicate appropriate C++ header

Change-Id: Ia9edccca5e8ef1f36a709b593a768003e1234dfa
2017-01-30 15:05:53 -08:00
Nicolas Geoffray
628c0f1879 Merge "Introduce DEBUG_JAVA_DEBUGGABLE." am: 4df43ad959 am: 27ffe754a4 am: 1852c380e0
am: 96ea5ccef6

Change-Id: I4f8ba4240106ea84c29b6ae11dfc007af7048eb1
2017-01-30 15:32:25 +00:00
Nicolas Geoffray
96ea5ccef6 Merge "Introduce DEBUG_JAVA_DEBUGGABLE." am: 4df43ad959 am: 27ffe754a4
am: 1852c380e0

Change-Id: I8fcc8b0329269a0b21057f973b3a7dc5d8d80284
2017-01-30 15:26:29 +00:00
Nicolas Geoffray
4df43ad959 Merge "Introduce DEBUG_JAVA_DEBUGGABLE." 2017-01-30 15:09:45 +00:00
John Reck
6e4f930457 Merge "Fix a bunch of repeated reads of a ro.* property" am: 4265991701 am: e4c2e8f303
am: 3c2837e77e

Change-Id: Idbcb9dfeac57036d3621474ee65ba967cc7bc499
2017-01-27 23:05:52 +00:00
Treehugger Robot
4265991701 Merge "Fix a bunch of repeated reads of a ro.* property" 2017-01-27 22:49:04 +00:00
Nicolas Geoffray
347b1df988 Introduce DEBUG_JAVA_DEBUGGABLE.
For notifying ART it will run a debuggable app.

Also rename ENABLE_DEBUGGER to ENABLE_JDWP.

Test: builds and runs
bug: 28769520
Change-Id: Ic096a176edfd5bf0bbe92b8367fbaa687a07d284
2017-01-27 11:26:53 -08:00
John Reck
ed065024a5 Fix a bunch of repeated reads of a ro.* property
SystemProperties.get() is not particularly fast,
especially if a string is returned. Since ro.* values
are unable to be changed, there's no need to
continously re-query them. Cache the value at
static init time to trivially fix this.

Test: refactoring CL.
Change-Id: Iccb021d3cb2ba3a4a1d0048ddec6811bb7409eec
(cherry picked from commit aa67f684ff)
2017-01-27 11:04:39 -08:00
TreeHugger Robot
18c9dc53d2 Merge "StrictMode detectAll() based on target API level." 2017-01-27 01:41:35 +00:00
TreeHugger Robot
8dc7ccc6e1 Merge "Push mapping from file extension to GID." 2017-01-27 01:03:11 +00:00
Makoto Onuki
2c631ab46d Merge "Cache isManagedProfile()." 2017-01-27 00:49:09 +00:00
TreeHugger Robot
56ff000782 Merge "Disable RescueParty in debug/lab environments." 2017-01-27 00:14:27 +00:00
Jeff Sharkey
0b558701d8 StrictMode detectAll() based on target API level.
Some apps are asking StrictMode to detectAll(), but we should only
trigger the violation types that they would expect based on their
target SDK level.  (This prevents us from starting to yell about
violations in new API levels that a developer never would have known
about.)

Test: builds, boots, older apps aren't triggered
Bug: 34735225
Change-Id: Idff1bfdf57c635b828236e34a24d55350b9fa556
2017-01-26 16:52:04 -07:00
Jeff Sharkey
f17e4cf1f9 Push mapping from file extension to GID.
An upcoming sdcardfs change will offer to automatically change the
GID of files on external storage based on the extension, but we need
to tell the kernel the mapping that we'd like to see.

This change pushes the current mappings used by installd when kernel
support is detected.

Test: builds, boots, works with old/new kernels
Bug: 34733702
Change-Id: I4a13b17f5a8e080a9bea51b01aa9f1cbf575e0ab
2017-01-26 16:23:55 -07:00
Jeff Sharkey
cdee83a614 Disable RescueParty in debug/lab environments.
We need to strike a balance between rescuing devices of real users
in the field, while also not interfering with debugging or testing
use-cases.

This change uses "charging via USB" as a signal that the device is
under active development, or is in a lab environment.  We could try
checking for an adb connection, but UsbDebuggingManager isn't
started until much later in the boot, so BatteryManager is our best
chance of detecting this case.

Note that we continue to always recover "user" builds, and we never
recover "eng" builds.

Test: builds, boots, skips when plugged in over USB
Bug: 34722552
Change-Id: Ib095482a2ed84e8c5dfb3c71d5f9b88457c2b5e6
2017-01-26 15:29:42 -07:00
Amith Yamasani
a28071306e Clear up /data/misc_ce/user folder on delete and reboot
Clean up the folder to avoid leaving residue behind when
a user is removed. This was causing issues with reusing
the userid. Also check on reboot for incomplete cleanup
and remove the folders.

Change-Id: Icd21d2669249d5f87032ef0fe95bad49537fa477
Fixes: 34736064
Test: Manual
2017-01-26 12:36:55 -08:00
TreeHugger Robot
9e77aefe9c Merge "[Frameworks] Add an 'am' cmd option to enable streaming in profiling." 2017-01-26 18:08:40 +00:00
Shukang Zhou
6ffd4f9bab [Frameworks] Add an 'am' cmd option to enable streaming in profiling.
Add option '--streaming' to 'am start' and 'am profile' commands.
If the option is given, the output of method trace profiling
will be streamed into the specified file, so the output is no
longer limited by the buffer size.

Test: m -j48 test-art-host;
m -j48 ART_TEST_TRACE=true ART_TEST_TRACE_STREAM=true test-art-host;
I also tested manually. Tried all 8 combinations of
    sampling/instrumention
    streaming/non-streaming
    'am start --start-profiler' / 'am profile start'
The output files are all in expected shape.

Bug: 33300765

Change-Id: I8a5136a1c7330c8260b7c6c8da63f42a73aee275
2017-01-25 16:54:27 -08:00
Shukang Zhou
6ec0b7e21d [Frameworks] Add an 'am' cmd option to enable streaming in profiling.
Add option '--streaming' to 'am start' and 'am profile' commands.
If the option is given, the output of method trace profiling
will be streamed into the specified file, so the output is no
longer limited by the buffer size.

Test: m -j48 test-art-host;
m -j48 ART_TEST_TRACE=true ART_TEST_TRACE_STREAM=true test-art-host;
I also tested manually. Tried all 8 combinations of
    sampling/instrumention
    streaming/non-streaming
    'am start --start-profiler' / 'am profile start'
The output files are all in expected shape.

Bug: 33300765

Merged-In: I8a5136a1c7330c8260b7c6c8da63f42a73aee275

Change-Id: I8a5136a1c7330c8260b7c6c8da63f42a73aee275
2017-01-25 16:53:41 -08:00
Makoto Onuki
d49f3fa806 Cache isManagedProfile().
LauncherApps wants to use it in the client side.  Let's cache the
result.

Bug: 34340531
Test: manual tests with work profile
Change-Id: I594a9ca688867e7cb0b35ab389ccef66135ef9cd
2017-01-25 14:12:04 -08:00
Fyodor Kupolov
6e68706f67 Do not remove file_cache when exiting demo mode
When clearing /data/preloads directory, keep files in file_cache directory.
The content there will only be removed if systems runs low on storage.

Test: manual + RetailDemoModeServiceTest
Bug: 31008665
Change-Id: Id335d84940ee829617986f5345f169271a333de1
2017-01-25 12:33:47 -08:00
Adam Lesinski
9aa513bf95 Merge "Add support for Split APK dependcies" 2017-01-25 16:56:51 +00:00
Nicolas Prévot
38c2395078 Merge "Allow DO to provision even if it has set disallow remove mp." 2017-01-25 11:42:05 +00:00
Adam Lesinski
4e8628157a 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
2017-01-24 18:34:08 -08:00
Jesse Hall
cb3cde5b5d Don't lower priority of EGL Init thread am: 37e63c705e
am: e8a5df8530

Change-Id: I5fe07a9c459e8be4e5ef19aca8d750eecfd44bb3
2017-01-24 18:59:00 +00:00
Jesse Hall
e8a5df8530 Don't lower priority of EGL Init thread
am: 37e63c705e

Change-Id: Icd21c9243558f4427d48f967f4ea4ae7aa1e2b02
2017-01-24 18:13:07 +00:00
Nicolas Prevot
d37c4a99b2 Allow DO to provision even if it has set disallow remove mp.
If the device owner has set DISALLOW_REMOVE_MANAGED_PROFILE,
and there is already a managed profile:
it should be allowed to provision a new managed profile by
deleting the old one.
Test: adb shell am instrument -e class
com.android.server.devicepolicy.DevicePolicyManagerTest
-w
com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
BUG:34116228

Change-Id: I9e6f39924107aee40b57d22e638487a1ea3132de
2017-01-24 16:36:14 +00:00
Jesse Hall
37e63c705e Don't lower priority of EGL Init thread
The EGL Init thread spends a lot of time loading shared libraries,
which involves reading pages and adjusting VM pages. Previously it was
a low priority thread, which meant that when it blocked while holding
a VM lock, it might take a while to be scheduled again once ready, so
it would hold the VM lock longer than necessary, blocking other
threads waiting on soft faults, etc. Classic priority inversion.
Leaving the thread at normal priority causes it to interfere *less*
with critical-path Activity launch work.

Bug: 34611670
Test: go/platform-startup, specifically:
    ./tradefed.sh run google/template/local --template:map test
    google/test/performance/app-launch-perf
    --post-boot-command "service call persistent_data_block 6 i32 1"
    --post-boot-command "service call persistent_data_block 7 i32 1"
    --apps Clock alarmclock --trial-launch --launch-iteration 10
    --launch-order cyclic --drop-cache --trace-directory sdcard
    --trace-iteration 2 --simple-perf-cmd "simpleperf stat -a"
    --report-metrics all --force-skip-system-props --alt-dir `pwd`

Change-Id: I17647c657da64d15f40f8f2b97ee3400e1f0be7f
2017-01-24 00:09:27 -08:00
Jeff Sharkey
9bed070b09 More APIs for cache status and behavior.
Add APIs for apps to query their cache usage compared to their
currently allocated quota.  Since an app's private storage may live
on a different storage volume than the primary shared/external
storage, offer APIs to retrieve those values separately.

Add APIs to control two new cache purging behaviors:

-- setCacheBehaviorAtomic() which causes a marked directory and its
contents to be treated as an atomic unit.
-- setCacheBehaviorTombstone() which causes the OS to truncate
files instead of deleting them.

Test: builds, boots
Bug: 33811826, 33965858, 27948817
Change-Id: I45de165623775c359f78b4ee544c2b5831b8d483
2017-01-23 21:02:12 -07:00
Daichi Hirono
baa0116854 Remove StorageManager#mountAppFuse hidden API.
The API should be replaced with StorageManager#openProxyFileDescriptor.

Bug: 32891253
Test: build
Change-Id: Ibbf8b64f3a39900a1f05a52132aa931491d6fd48
2017-01-23 09:36:59 +09:00
TreeHugger Robot
af6668bc9d Merge "resolve merge conflicts of 5fa7fb1d9f to master" 2017-01-21 02:41:19 +00:00
TreeHugger Robot
5feefa54c4 Merge "Introduce RescueParty." 2017-01-21 02:22:43 +00:00
Jesse Hall
3bb7e5c909 resolve merge conflicts of 5fa7fb1d9f to master
Test: make
Change-Id: I7f119535a120303796fcd08f0274269f7d0dbaba
2017-01-20 17:04:48 -08:00
Jeff Sharkey
fe6f85cac9 Introduce RescueParty.
When a device gets stuck in a crash loop, it's pretty much unusable
and impossible for users to recover from.

To help rescue devices from this state, this change introduces a new
feature that watches for runtime restart loops and persistent app
crash loops, and escalates through a series of increasingly
aggressive rescue operations.  Currently these rescue levels walk
through clearing any experiments in SettingsProvider before finally
rebooting and prompting the user to wipe data.

Crash loops are detected based on a number of events in a specific
window of time.  App stats can be stored in memory, but boot stats
need to be stored in system properties to be more robust.

Start up RecoveryService much earlier during the boot so we can
reboot into recovery when needed.

Add properties tha push system_server or SystemUI into a crash loops
for testing purposes.

Test: builds, boots, forced crashing walks through modes
Bug: 24872457, 30951331
Change-Id: I6cdd37682973fe18de0f08521e88f70ee7d7728b
2017-01-20 17:36:38 -07:00
Jesse Hall
fd104e7fde Load EGL early in Activity launch, instead of in Zygote
Preloading EGL in Zygote was originally a memory footprint
optimization, but it turns out to be an important app startup time
optimization as well. Preloading EGL in Zygote is incompatible with
updatable graphics drivers, but we don't want to do it on-demand as
part of drawing the first frame either, since that increases
first-frame latency unacceptably.

This change removes Zygote preload, and instead loads EGL on a
low-priority background thread immediately after choosing which
graphics driver to use. This means it is usually done well before
drawing the first frame, without significantly disrupting other
activity launch work.

Test: observe systrace of Calculator launch on bullhead
Bug: 34404021
Change-Id: I6a0f6b90ade21848a10d51ddae62c936f70151b5
Merged-In: I887aa09bd35b088b16f53a89838a0c7c98f15761
2017-01-20 15:58:20 -08:00
Jesse Hall
0d3537c67b Merge "Load EGL early in Activity launch, instead of in Zygote" into nyc-mr2-dev-plus-aosp 2017-01-20 23:57:34 +00:00
Jeff Sharkey
f5d2c7278e Merge "Add Binder support for Parcelable exceptions." am: a2ef6b5741 am: c3fbf32011 am: 4a0a4664b9
am: 7bb9ccc1e5

Change-Id: I9346a576d57c9f7093b875c4a43134f2ef095018
2017-01-20 23:12:19 +00:00
Jeff Sharkey
7bb9ccc1e5 Merge "Add Binder support for Parcelable exceptions." am: a2ef6b5741 am: c3fbf32011
am: 4a0a4664b9

Change-Id: I9b5667ca6e5497a4eedaaf88979a1a3d0e22c174
2017-01-20 23:03:40 +00:00
Jeff Sharkey
a2ef6b5741 Merge "Add Binder support for Parcelable exceptions." 2017-01-20 22:45:04 +00:00
Jesse Hall
5fa7fb1d9f Load EGL early in Activity launch, instead of in Zygote
Preloading EGL in Zygote was originally a memory footprint
optimization, but it turns out to be an important app startup time
optimization as well. Preloading EGL in Zygote is incompatible with
updatable graphics drivers, but we don't want to do it on-demand as
part of drawing the first frame either, since that increases
first-frame latency unacceptably.

This change removes Zygote preload, and instead loads EGL on a
low-priority background thread immediately after choosing which
graphics driver to use. This means it is usually done well before
drawing the first frame, without significantly disrupting other
activity launch work.

Test: observe systrace of Calculator launch on bullhead
Bug: 34404021
Change-Id: I887aa09bd35b088b16f53a89838a0c7c98f15761
2017-01-20 13:50:41 -08:00
Jeff Sharkey
8e8269fc11 Merge "StrictMode to detect untagged network traffic." 2017-01-20 17:31:59 +00:00
Jeff Sharkey
619a511d4f StrictMode to detect untagged network traffic.
Network usage is tracked by the kernel at the UID level, which is
granular enough for normal apps, but large components (such as the
system server) are impossible to debug without adding additional
socket tagging to help identify subsystems within a UID.

To help ensure that system components tag all their network traffic,
this change offers a new StrictMode option to detect and report
untagged sockets.

Test: builds, boots, all common traffic tagged
Bug: 30943431, 30414041
Change-Id: I825c7941076054732264690247de2863342638e2
2017-01-19 20:52:05 -07:00
Jeff Sharkey
032c08ad6b Simplify FileUtils.stringToFile().
Convert to byte[] directly instead of using heavier FileWriter.

Test: builds, boots
Bug: 34364961
Change-Id: If0c09a924cd73f2c4965ac9d206f9c060788d27c
2017-01-19 17:11:55 -07:00
TreeHugger Robot
b55db281da Merge changes I1606b184,Id78dd4ab
* changes:
  Publish StorageManager#openProxyFileDescriptor API.
  Add StorageManager#openProxyFileDescriptor.
2017-01-19 02:15:34 +00:00
Tao Bao
8fe4df9fba Merge "Revert "RecoverySystem: Fix the issue in installPackage()."" am: 9311dbf9e4 am: 731445ebf7 am: b20ce70cca
am: 0770c86e5c

Change-Id: If50d623f41ccf8b5fa8756957b3479fdedaffc41
2017-01-19 02:08:27 +00:00
Tao Bao
0770c86e5c Merge "Revert "RecoverySystem: Fix the issue in installPackage()."" am: 9311dbf9e4 am: 731445ebf7
am: b20ce70cca

Change-Id: I931ce2f47714032b27cb092699ae3fbc69563fc0
2017-01-19 02:04:18 +00:00