diff --git a/build/Android.bp b/build/Android.bp index fc4ab552d..a97bafb5d 100644 --- a/build/Android.bp +++ b/build/Android.bp @@ -60,7 +60,6 @@ android_sdk_repo_host { "bcc_compat", "d8", "dexdump", - "libaapt2_jni", "llvm-rs-cc", "split-select", "zipalign", @@ -100,7 +99,6 @@ android_sdk_repo_host { "bcc_compat", "d8", "dexdump", - "libaapt2_jni", "libwinpthread-1", "lld", "llvm-rs-cc", @@ -110,7 +108,6 @@ android_sdk_repo_host { }, lib64: { deps: [ - "libaapt2_jni", "libwinpthread-1", ], }, diff --git a/build/tools/mk_sources_zip.py b/build/tools/mk_sources_zip.py index 632bbfbb5..9cee140d8 100755 --- a/build/tools/mk_sources_zip.py +++ b/build/tools/mk_sources_zip.py @@ -39,7 +39,7 @@ class Params(object): self.CNT_NOPKG = 0 # DIR is the list of directories to scan in TOPDIR. self.DIR = "frameworks libcore" - self.IGNORE_DIR = [ "hosttests", "tools", "tests", "samples" ] + self.IGNORE_DIR = [ "hosttests", "tools", "tests", "samples", "layoutlib" ] # IGNORE is a list of namespaces to ignore. Must be java # package definitions (e.g. "com.blah.foo.") self.IGNORE = [ "sun.", "libcore.", "dalvik.", diff --git a/cmds/monkey/src/com/android/commands/monkey/Monkey.java b/cmds/monkey/src/com/android/commands/monkey/Monkey.java index e76a89dde..c35d9a799 100644 --- a/cmds/monkey/src/com/android/commands/monkey/Monkey.java +++ b/cmds/monkey/src/com/android/commands/monkey/Monkey.java @@ -48,6 +48,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -187,8 +188,8 @@ public class Monkey { /** Categories we are allowed to launch **/ private ArrayList mMainCategories = new ArrayList(); - /** Applications we can switch to. */ - private ArrayList mMainApps = new ArrayList(); + /** Applications we can switch to, as well as their corresponding categories. */ + private HashMap mMainApps = new HashMap<>(); /** The delay between event inputs **/ long mThrottle = 0; @@ -1073,7 +1074,8 @@ public class Monkey { Logger.out.println("// + Using main activity " + r.activityInfo.name + " (from package " + packageName + ")"); } - mMainApps.add(new ComponentName(packageName, r.activityInfo.name)); + mMainApps.put( + new ComponentName(packageName, r.activityInfo.name), category); } else { if (mVerbose >= 3) { // very very verbose Logger.out.println("// - NOT USING main activity " diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java index 0e793a68b..5aed40cad 100644 --- a/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java +++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java @@ -27,12 +27,15 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.view.IWindowManager; +import java.util.HashMap; + /** * monkey activity event */ public class MonkeyActivityEvent extends MonkeyEvent { private ComponentName mApp; long mAlarmTime = 0; + private HashMap mMainApps = new HashMap<>(); public MonkeyActivityEvent(ComponentName app) { super(EVENT_TYPE_ACTIVITY); @@ -45,12 +48,23 @@ public class MonkeyActivityEvent extends MonkeyEvent { mAlarmTime = arg; } + public MonkeyActivityEvent(ComponentName app, + HashMap MainApps) { + super(EVENT_TYPE_ACTIVITY); + mApp = app; + mMainApps = MainApps; + } + /** * @return Intent for the new activity */ private Intent getEvent() { Intent intent = new Intent(Intent.ACTION_MAIN); - intent.addCategory(Intent.CATEGORY_LAUNCHER); + if (mMainApps.containsKey(mApp)) { + intent.addCategory(mMainApps.get(mApp)); + } else { + intent.addCategory(Intent.CATEGORY_LAUNCHER); + } intent.setComponent(mApp); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); return intent; diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java index 7d308bf25..d75c823c2 100644 --- a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java +++ b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java @@ -26,7 +26,8 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.Surface; -import java.util.List; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Random; /** @@ -94,7 +95,7 @@ public class MonkeySourceRandom implements MonkeyEventSource { * values after we read any optional values. **/ private float[] mFactors = new float[FACTORZ_COUNT]; - private List mMainApps; + private HashMap mMainApps; private int mEventCount = 0; //total number of events generated so far private MonkeyEventQueue mQ; private Random mRandom; @@ -119,7 +120,7 @@ public class MonkeySourceRandom implements MonkeyEventSource { return KeyEvent.keyCodeFromString(keyName); } - public MonkeySourceRandom(Random random, List MainApps, + public MonkeySourceRandom(Random random, HashMap MainApps, long throttle, boolean randomizeThrottle, boolean permissionTargetSystem) { // default values for random distributions // note, these are straight percentages, to match user input (cmd line args) @@ -430,8 +431,8 @@ public class MonkeySourceRandom implements MonkeyEventSource { } else if (cls < mFactors[FACTOR_SYSOPS]) { lastKey = SYS_KEYS[mRandom.nextInt(SYS_KEYS.length)]; } else if (cls < mFactors[FACTOR_APPSWITCH]) { - MonkeyActivityEvent e = new MonkeyActivityEvent(mMainApps.get( - mRandom.nextInt(mMainApps.size()))); + MonkeyActivityEvent e = new MonkeyActivityEvent(new ArrayList(mMainApps.keySet()).get( + mRandom.nextInt(mMainApps.size())), mMainApps); mQ.addLast(e); return; } else if (cls < mFactors[FACTOR_FLIP]) { @@ -479,8 +480,8 @@ public class MonkeySourceRandom implements MonkeyEventSource { * generate an activity event */ public void generateActivity() { - MonkeyActivityEvent e = new MonkeyActivityEvent(mMainApps.get( - mRandom.nextInt(mMainApps.size()))); + MonkeyActivityEvent e = new MonkeyActivityEvent(new ArrayList(mMainApps.keySet()).get( + mRandom.nextInt(mMainApps.size())), mMainApps); mQ.addLast(e); } diff --git a/ide/clion/frameworks/base/tools/aapt2/CMakeLists.txt b/ide/clion/frameworks/base/tools/aapt2/CMakeLists.txt new file mode 100644 index 000000000..ed25bb84f --- /dev/null +++ b/ide/clion/frameworks/base/tools/aapt2/CMakeLists.txt @@ -0,0 +1,75 @@ +cmake_minimum_required(VERSION 3.6) +project("Android Resources") + +set(ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../../) +set(ROOT_OUT ${CMAKE_CURRENT_LIST_DIR}/cmake_out) +set(AAPT2_BASE ${ROOT}/frameworks/base/tools/aapt2) +set(IDMAP2_BASE ${ROOT}/frameworks/base/cmds/idmap2) +set(ANDROIDFW_BASE ${ROOT}/frameworks/base/libs/androidfw) +set(JNI_BASE ${ROOT}/frameworks/base/core/jni) +set(AAPT_BASE ${ROOT}/frameworks/base/tools/aapt) + +# Set host arch +if(EXISTS ${AAPT2_BASE}/aapt2-x86_64-linux_glibc) + message(NOTICE, "Applying HOST_ARCH x86_64-linux_glibc") + set(HOST_ARCH x86_64-linux_glibc) +elseif(EXISTS ${AAPT2_BASE}/aapt2-x86-linux_glibc) + message(NOTICE, "Applying HOST_ARCH x86-linux_glibc") + set(HOST_ARCH x86-linux_glibc) +elseif(EXISTS ${AAPT2_BASE}/aapt2-x86_64-windows) + message(NOTICE, "Applying HOST_ARCH x86_64-windows") + set(HOST_ARCH x86_64-windows) +elseif(EXISTS ${AAPT2_BASE}/aapt2-x86-windows) + message(NOTICE, "Applying HOST_ARCH x86-windows") + set(HOST_ARCH x86-windows) +else() + message(NOTICE, "Applying default HOST_ARCH x86_64-linux_glibc") + set(HOST_ARCH x86_64-linux_glibc) +endif() + +# Set target arch +if(EXISTS ${IDMAP2_BASE}/idmap2-arm64-android) + message(NOTICE, "Applying TARGET_ARCH arm64-android") + set(TARGET_ARCH arm64-android) +elseif(EXISTS ${IDMAP2_BASE}/idmap2-arm-android) + message(NOTICE, "Applying TARGET_ARCH arm-android") + set(TARGET_ARCH arm-android) +elseif(EXISTS ${IDMAP2_BASE}/idmap2-x86_64-linux_glibc) + message(NOTICE, "Applying TARGET_ARCH x86_64-linux_glibc") + set(TARGET_ARCH x86_64-linux_glibc) +elseif(EXISTS ${IDMAP2_BASE}/idmap2-x86-linux_glibc) + message(NOTICE, "Applying TARGET_ARCH x86-linux_glibc") + set(TARGET_ARCH x86-linux_glibc) +else() + message(NOTICE, "Applying default TARGET_ARCH arm64-android") + set(TARGET_ARCH arm64-android) +endif() + +# aapt2 +add_subdirectory(${AAPT2_BASE}/aapt2-${HOST_ARCH} ${ROOT_OUT}/aapt2) +add_subdirectory(${AAPT2_BASE}/aapt2_tests-${HOST_ARCH} ${ROOT_OUT}/aapt2_tests) +add_subdirectory(${AAPT2_BASE}/libaapt2-${HOST_ARCH} ${ROOT_OUT}/libaapt2) + +# idmap2 +add_subdirectory(${IDMAP2_BASE}/idmap2-${TARGET_ARCH} ${ROOT_OUT}/idmap2) +add_subdirectory(${IDMAP2_BASE}/idmap2d-${TARGET_ARCH} ${ROOT_OUT}/idmap2d) +add_subdirectory(${IDMAP2_BASE}/libidmap2-${TARGET_ARCH} ${ROOT_OUT}/libidmap2) +add_subdirectory(${IDMAP2_BASE}/libidmap2_protos-${TARGET_ARCH} ${ROOT_OUT}/libidmap2_protos) +add_subdirectory(${IDMAP2_BASE}/libidmap2daidl-${TARGET_ARCH} ${ROOT_OUT}/libidmap2daidl) +add_subdirectory(${IDMAP2_BASE}/idmap2_tests-${TARGET_ARCH} ${ROOT_OUT}/idmap2_tests) + +# Android Runtime +add_subdirectory(${ANDROIDFW_BASE}/libandroidfw-${TARGET_ARCH} ${ROOT_OUT}/libandroidfw) +add_subdirectory(${ANDROIDFW_BASE}/libandroidfw_tests-${TARGET_ARCH} ${ROOT_OUT}/libandroidfw_tests) +add_subdirectory(${ANDROIDFW_BASE}/libandroidfw_benchmarks-${TARGET_ARCH} ${ROOT_OUT}/libandroidfw_benchmarks) +add_subdirectory(${ANDROIDFW_BASE}/libandroidfw_fuzzer_lib-${TARGET_ARCH} ${ROOT_OUT}/libandroidfw_fuzzer_lib) +add_subdirectory(${ANDROIDFW_BASE}/fuzz/resourcefile_fuzzer/resourcefile_fuzzer-${TARGET_ARCH} + ${ROOT_OUT}/fuzz/resourcefile_fuzzer/resourcefile_fuzzer) + +# JNI +add_subdirectory(${JNI_BASE}/libandroid_runtime-${TARGET_ARCH} ${ROOT_OUT}/jni) + +# aapt +add_subdirectory(${AAPT_BASE}/aapt-${HOST_ARCH} ${ROOT_OUT}/aapt) +add_subdirectory(${AAPT_BASE}/libaapt-${HOST_ARCH} ${ROOT_OUT}/libaapt) +add_subdirectory(${AAPT_BASE}/libaapt_tests-${HOST_ARCH} ${ROOT_OUT}/libaapt_tests) diff --git a/ide/clion/frameworks/native/CMakeLists.txt b/ide/clion/frameworks/native/CMakeLists.txt index 2b65c154b..ac0ed9fb6 100644 --- a/ide/clion/frameworks/native/CMakeLists.txt +++ b/ide/clion/frameworks/native/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.6) project(native) add_subdirectory(libs/gui/libgui-arm64-android) +add_subdirectory(libs/gui/tests/libgui_test-arm64-android) add_subdirectory(libs/ui/libui-arm64-android) add_subdirectory(libs/renderengine/librenderengine-arm64-android) add_subdirectory(services/surfaceflinger/surfaceflinger-arm64-android) @@ -19,3 +20,6 @@ add_subdirectory(services/surfaceflinger/tests/waitforvsync/test-waitforvsync-ar add_subdirectory(services/surfaceflinger/tests/unittests/libsurfaceflinger_unittest-arm64-android) add_subdirectory(services/surfaceflinger/libSurfaceFlingerProp-arm64-android) add_subdirectory(services/surfaceflinger/sysprop/libSurfaceFlingerProperties-arm64-android) +add_subdirectory(services/surfaceflinger/fuzzer/surfaceflinger_fuzzer-arm64-android) +add_subdirectory(services/surfaceflinger/fuzzer/surfaceflinger_displayhardware_fuzzer-arm64-android) +add_subdirectory(services/surfaceflinger/fuzzer/surfaceflinger_scheduler_fuzzer-arm64-android) diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index 8b6e5efc4..aad0074b3 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -286,10 +286,19 @@ + + + + + + + @@ -298,41 +307,13 @@ - - - - - - - - - - - - - - - - - - - + "screenSize|smallestScreenSize|screenLayout|orientation"> + + + + + diff --git a/samples/ApiDemos/res/layout/keep_clear_rects_activity.xml b/samples/ApiDemos/res/layout/keep_clear_rects_activity.xml new file mode 100644 index 000000000..dcf01ebd7 --- /dev/null +++ b/samples/ApiDemos/res/layout/keep_clear_rects_activity.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + diff --git a/samples/ApiDemos/res/layout/picture_in_picture.xml b/samples/ApiDemos/res/layout/picture_in_picture.xml index 2f333ac8a..f29bd0839 100644 --- a/samples/ApiDemos/res/layout/picture_in_picture.xml +++ b/samples/ApiDemos/res/layout/picture_in_picture.xml @@ -15,18 +15,100 @@ ~ limitations under the License. --> - - + + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml b/samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml deleted file mode 100644 index 57f891e8e..000000000 --- a/samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -