Update boot image profile generation scripts
The old script is not longer suitable. It is replace by two scripts:
- one that can configure the device to capture boot image profiles
- and the second, which can process the raw boot image profiles
obtained after running CUJs and transform it to the expected build
system format.
Note that boot-image-profile-generate.sh should be invoked with
arguments based on the ammount of executed CUJs and the shape of
profile data. Some defaults are provided but these might not be
the best in all cases.
Test: run the scripts and check the data
Bug: 152574358
Change-Id: Ic814f22591d8861e7224f8deadbcc21427f94333
diff --git a/tools/boot-image-profile-configure-device.sh b/tools/boot-image-profile-configure-device.sh
new file mode 100755
index 0000000..081f442
--- /dev/null
+++ b/tools/boot-image-profile-configure-device.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This script configures a device for boot image profile
+#
+
+if [[ -z "$ANDROID_BUILD_TOP" ]]; then
+ echo "You must run on this after running envsetup.sh and launch target"
+ exit 1
+fi
+
+if [[ "$#" -lt 1 ]]; then
+ echo "Usage $0 <output-for-boot-zip>"
+ echo "Example: $0 boot.zip"
+ exit 1
+fi
+
+OUT_BOOT_ZIP="$1"
+
+echo "Changing dirs to the build top"
+cd "$ANDROID_BUILD_TOP"
+
+# Make dist in order to easily get the boot and system server dex files
+# This will be stored in $ANDROID_PRODUCT_OUT/boot.zip
+echo "Make dist"
+m dist
+echo "Copy boot.zip to $OUT_BOOT_ZIP"
+cp "$ANDROID_PRODUCT_OUT"/boot.zip $OUT_BOOT_ZIP
+
+echo "Setting properties and clearing existing profiles"
+# If the device needs to be rebooted, it is better to set the properties
+# via a local.prop file:
+# 1) create a local.prop file with the content
+# dalvik.vm.profilebootclasspath=true
+# dalvik.vm.profilesystemserver=true
+# 2) adb push local.prop /data/
+# adb shell chmod 0750 /data/local.prop
+# adb reboot
+
+adb root
+adb shell stop
+adb shell setprop dalvik.vm.profilebootclasspath true
+adb shell setprop dalvik.vm.profilesystemserver true
+adb shell find "/data/misc/profiles -name *.prof -exec truncate -s 0 {} \;"
+adb shell start
\ No newline at end of file