Compare commits

..

No commits in common. "lineage-21-light" and "lineage-18.1" have entirely different histories.

7 changed files with 73 additions and 232 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
/local_manifests_device

View File

@ -1,27 +1,35 @@
## Building "generic" LineageOS GSIs ## ## Building PHH-based LineageOS GSIs ##
Set up your environment by referring to [LineageOS Wiki](https://wiki.lineageos.org/devices/TP1803/build) (mainly "Install the build packages" and "Install the repo command"). To get started with building LineageOS GSI, you'll need to get familiar with [Git and Repo](https://source.android.com/source/using-repo.html), and set up your environment by referring to [LineageOS Wiki](https://wiki.lineageos.org/devices/redfin/build) (mainly "Install the build packages") and [How to build a GSI](https://github.com/phhusson/treble_experimentations/wiki/How-to-build-a-GSI%3F).
First, open a new Terminal window, which defaults to your home directory. Clone the modified treble_experimentations repo there:
git clone https://github.com/AndyCGYan/treble_experimentations
Create a new working directory for your LineageOS build and navigate to it: Create a new working directory for your LineageOS build and navigate to it:
mkdir lineage-21-build-gsi; cd lineage-21-build-gsi mkdir lineage-18.x-build-gsi; cd lineage-18.x-build-gsi
Initialize your LineageOS workspace: Initialize your LineageOS workspace:
repo init -u https://github.com/LineageOS/android.git -b lineage-21.0 --git-lfs repo init -u https://github.com/LineageOS/android.git -b lineage-18.1
Clone both this and the patches repos: Clone both this and the patches repos:
git clone https://github.com/AndyCGYan/lineage_build_unified lineage_build_unified -b lineage-21-light git clone https://github.com/AndyCGYan/lineage_build_unified lineage_build_unified -b lineage-18.1
git clone https://github.com/AndyCGYan/lineage_patches_unified lineage_patches_unified -b lineage-21-light git clone https://github.com/AndyCGYan/lineage_patches_unified lineage_patches_unified -b lineage-18.1
Finally, start the build script - for example, to build for all supported archs: Finally, start the build script - for example, to build for all supported archs:
bash lineage_build_unified/buildbot_unified.sh treble 64VN 64VS 64GN bash lineage_build_unified/buildbot_unified.sh treble 32B 32BO A64B A64BG A64BO 64B 64BG
Be sure to update the cloned repos from time to time! Be sure to update the cloned repos from time to time!
--- ---
Note: A-only and VNDKLite targets are generated from AB images instead of source-built - refer to [sas-creator](https://github.com/AndyCGYan/sas-creator).
---
This script is also used to make device-specific and/or personal builds. To do so, understand the script, and try the `device` and `personal` keywords. This script is also used to make device-specific and/or personal builds. To do so, understand the script, and try the `device` and `personal` keywords.

View File

@ -8,8 +8,6 @@ shopt -s nullglob
for project in $(cd $patches; echo *);do for project in $(cd $patches; echo *);do
p="$(tr _ / <<<$project |sed -e 's;platform/;;g')" p="$(tr _ / <<<$project |sed -e 's;platform/;;g')"
[ "$p" == build ] && p=build/make [ "$p" == build ] && p=build/make
[ "$p" == frameworks/proto/logging ] && p=frameworks/proto_logging
[ "$p" == treble/app ] && p=treble_app
[ "$p" == vendor/hardware/overlay ] && p=vendor/hardware_overlay [ "$p" == vendor/hardware/overlay ] && p=vendor/hardware_overlay
[ "$p" == vendor/partner/gms ] && p=vendor/partner_gms [ "$p" == vendor/partner/gms ] && p=vendor/partner_gms
pushd $p pushd $p

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
echo "" echo ""
echo "LineageOS 21 Unified Buildbot" echo "LineageOS 18.x Unified Buildbot"
echo "ATTENTION: this script syncs repo on each run"
echo "Executing in 5 seconds - CTRL-C to exit" echo "Executing in 5 seconds - CTRL-C to exit"
echo "" echo ""
sleep 5 sleep 5
@ -20,25 +21,10 @@ then
exit 1 exit 1
fi fi
NOSYNC=false
PERSONAL=false PERSONAL=false
SIGNABLE=true if [ ${!#} == "personal" ]
for var in "${@:2}" then
do PERSONAL=true
if [ ${var} == "nosync" ]
then
NOSYNC=true
fi
if [ ${var} == "personal" ]
then
PERSONAL=true
SIGNABLE=false
fi
done
if [ ! -d "$HOME/.android-certs" ]; then
read -n1 -r -p $"\$HOME/.android-certs not found - CTRL-C to exit, or any other key to continue"
echo ""
SIGNABLE=false
fi fi
# Abort early on error # Abort early on error
@ -52,29 +38,23 @@ echo\
)' ERR )' ERR
START=`date +%s` START=`date +%s`
BUILD_DATE="$(date -u +%Y%m%d)" BUILD_DATE="$(date +%Y%m%d)"
WITHOUT_CHECK_API=true
WITH_SU=true
prep_build() { echo "Preparing local manifests"
echo "Preparing local manifests" mkdir -p .repo/local_manifests
mkdir -p .repo/local_manifests cp ./lineage_build_unified/local_manifests_${MODE}/*.xml .repo/local_manifests
cp ./lineage_build_unified/local_manifests_${MODE}/*.xml .repo/local_manifests echo ""
echo ""
echo "Syncing repos" echo "Syncing repos"
repo sync -c --force-sync --no-clone-bundle --no-tags -j$(nproc --all) repo sync -c --force-sync --no-clone-bundle --no-tags -j$(nproc --all)
echo "" echo ""
echo "Setting up build environment" echo "Setting up build environment"
source build/envsetup.sh &> /dev/null source build/envsetup.sh &> /dev/null
source vendor/lineage/vars/aosp_target_release mkdir -p ~/build-output
mkdir -p ~/build-output echo ""
echo ""
repopick 321337 -r -f # Deprioritize important developer notifications
repopick 321338 -r -f # Allow disabling important developer notifications
repopick 321339 -r -f # Allow disabling USB notifications
repopick 368923 -r -f # Launcher3: Show clear all button in recents overview
}
apply_patches() { apply_patches() {
echo "Applying patch group ${1}" echo "Applying patch group ${1}"
@ -86,7 +66,8 @@ prep_device() {
} }
prep_treble() { prep_treble() {
: apply_patches patches_treble_prerequisite
apply_patches patches_treble_phh
} }
finalize_device() { finalize_device() {
@ -94,63 +75,52 @@ finalize_device() {
} }
finalize_treble() { finalize_treble() {
: rm -f device/*/sepolicy/common/private/genfs_contexts
cd device/phh/treble
git clean -fdx
bash generate.sh lineage
cd ../../..
} }
build_device() { build_device() {
brunch ${1} brunch ${1}
mv $OUT/lineage-*.zip ~/build-output/lineage-21.0-$BUILD_DATE-UNOFFICIAL-${1}$($PERSONAL && echo "-personal" || echo "").zip mv $OUT/lineage-*.zip ~/build-output/lineage-18.1-$BUILD_DATE-UNOFFICIAL-${1}$($PERSONAL && echo "-personal" || echo "").zip
} }
build_treble() { build_treble() {
case "${1}" in case "${1}" in
("64VN") TARGET=gsi_arm64_vN;; ("32B") TARGET=arm_bvS;;
("64VS") TARGET=gsi_arm64_vS;; ("32BO") TARGET=arm_boS;;
("64GN") TARGET=gsi_arm64_gN;; ("A64B") TARGET=a64_bvS;;
("A64BG") TARGET=a64_bgS;;
("A64BO") TARGET=a64_boS;;
("64B") TARGET=arm64_bvS;;
("64BG") TARGET=arm64_bgS;;
("TTP") TARGET=ttp;;
(*) echo "Invalid target - exiting"; exit 1;; (*) echo "Invalid target - exiting"; exit 1;;
esac esac
lunch lineage_${TARGET}-${aosp_target_release}-userdebug lunch lineage_${TARGET}-userdebug
make installclean make installclean
make -j$(lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l) systemimage make -j$(nproc --all) systemimage
SIGNED=false make vndk-test-sepolicy
if [ ${SIGNABLE} = true ] && [[ ${TARGET} == *_g? ]] mv $OUT/system.img ~/build-output/lineage-18.1-$BUILD_DATE-UNOFFICIAL-${TARGET}$(${PERSONAL} && echo "-personal" || echo "").img
then
make -j$(lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l) target-files-package otatools
bash ./lineage_build_unified/sign_target_files.sh $OUT/signed-target_files.zip
unzip -joq $OUT/signed-target_files.zip IMAGES/system.img -d $OUT
SIGNED=true
echo ""
fi
mv $OUT/system.img ~/build-output/lineage-21.0-$BUILD_DATE-UNOFFICIAL-${TARGET}$(${PERSONAL} && echo "-personal" || echo "")$(${SIGNED} && echo "-signed" || echo "").img
} }
if ${NOSYNC} echo "Applying patches"
prep_${MODE}
apply_patches patches_platform
apply_patches patches_${MODE}
if ${PERSONAL}
then then
echo "ATTENTION: syncing/patching skipped!" apply_patches patches_platform_personal
echo "" apply_patches patches_${MODE}_personal
echo "Setting up build environment"
source build/envsetup.sh &> /dev/null
source vendor/lineage/vars/aosp_target_release
echo ""
else
prep_build
echo "Applying patches"
prep_${MODE}
apply_patches patches_platform
apply_patches patches_${MODE}
if ${PERSONAL}
then
apply_patches patches_platform_personal
apply_patches patches_${MODE}_personal
fi
finalize_${MODE}
echo ""
fi fi
finalize_${MODE}
echo ""
for var in "${@:2}" for var in "${@:2}"
do do
if [ ${var} == "nosync" ] || [ ${var} == "personal" ] if [ ${var} == "personal" ]
then then
continue continue
fi fi

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<manifest> <manifest>
<project name="AndyCGYan/android_device_lineage_gsi" path="device/lineage/gsi" remote="github" revision="lineage-21" />
<project name="AndyCGYan/android_packages_apps_QcRilAm" path="packages/apps/QcRilAm" remote="github" revision="master" />
<project name="TrebleDroid/vendor_hardware_overlay" path="vendor/hardware_overlay" remote="github" revision="pie" />
<remove-project name="LineageOS/android_packages_apps_Camera2" />
<remote name="gitlab" fetch="https://gitlab.com/" /> <remote name="gitlab" fetch="https://gitlab.com/" />
<project name="MindTheGapps/vendor_gapps" path="vendor/gapps" remote="gitlab" revision="upsilon" />
<remove-project name="platform/packages/apps/Jelly" />
<project name="phhusson/vendor_hardware_overlay" path="vendor/hardware_overlay" remote="github" revision="pie" />
<project name="phhusson/device_phh_treble" path="device/phh/treble" remote="github" revision="android-11.0" />
<project name="phhusson/vendor_vndk-tests" path="vendor/vndk-tests" remote="github" revision="master" />
<project name="phhusson/vendor_interfaces" path="vendor/interfaces" remote="github" revision="android-11.0" />
<project name="phhusson/vendor_magisk" path="vendor/magisk" remote="github" revision="android-10.0" />
<project name="00p513-dev/partner_gms" path="vendor/partner_gms" remote="gitlab" revision="11" />
</manifest> </manifest>

View File

@ -1,6 +0,0 @@
#!/bin/bash
source build/envsetup.sh
source vendor/lineage/vars/aosp_target_release
lunch lineage_gsi_arm64-$aosp_target_release-userdebug
make clobber

View File

@ -1,132 +0,0 @@
#!/bin/bash
OUTFILE="$1"
if [ -z "$OUTFILE" ]; then
OUTFILE="signed-target_files.zip"
fi
sign_target_files_apks -o -d ~/.android-certs --allow_gsi_debug_sepolicy \
--extra_apks AdServicesApk.apk=$HOME/.android-certs/releasekey \
--extra_apks FederatedCompute.apk=$HOME/.android-certs/releasekey \
--extra_apks HalfSheetUX.apk=$HOME/.android-certs/releasekey \
--extra_apks HealthConnectBackupRestore.apk=$HOME/.android-certs/releasekey \
--extra_apks HealthConnectController.apk=$HOME/.android-certs/releasekey \
--extra_apks OsuLogin.apk=$HOME/.android-certs/releasekey \
--extra_apks SafetyCenterResources.apk=$HOME/.android-certs/releasekey \
--extra_apks ServiceConnectivityResources.apk=$HOME/.android-certs/releasekey \
--extra_apks ServiceUwbResources.apk=$HOME/.android-certs/releasekey \
--extra_apks ServiceWifiResources.apk=$HOME/.android-certs/releasekey \
--extra_apks WifiDialog.apk=$HOME/.android-certs/releasekey \
--extra_apks com.android.adbd.apex=$HOME/.android-certs/com.android.adbd \
--extra_apks com.android.adservices.apex=$HOME/.android-certs/com.android.adservices \
--extra_apks com.android.adservices.api.apex=$HOME/.android-certs/com.android.adservices.api \
--extra_apks com.android.appsearch.apex=$HOME/.android-certs/com.android.appsearch \
--extra_apks com.android.art.apex=$HOME/.android-certs/com.android.art \
--extra_apks com.android.bluetooth.apex=$HOME/.android-certs/com.android.bluetooth \
--extra_apks com.android.btservices.apex=$HOME/.android-certs/com.android.btservices \
--extra_apks com.android.cellbroadcast.apex=$HOME/.android-certs/com.android.cellbroadcast \
--extra_apks com.android.compos.apex=$HOME/.android-certs/com.android.compos \
--extra_apks com.android.configinfrastructure.apex=$HOME/.android-certs/com.android.configinfrastructure \
--extra_apks com.android.connectivity.resources.apex=$HOME/.android-certs/com.android.connectivity.resources \
--extra_apks com.android.conscrypt.apex=$HOME/.android-certs/com.android.conscrypt \
--extra_apks com.android.devicelock.apex=$HOME/.android-certs/com.android.devicelock \
--extra_apks com.android.extservices.apex=$HOME/.android-certs/com.android.extservices \
--extra_apks com.android.graphics.pdf.apex=$HOME/.android-certs/com.android.graphics.pdf \
--extra_apks com.android.hardware.biometrics.face.virtual.apex=$HOME/.android-certs/com.android.hardware.biometrics.face.virtual \
--extra_apks com.android.hardware.biometrics.fingerprint.virtual.apex=$HOME/.android-certs/com.android.hardware.biometrics.fingerprint.virtual \
--extra_apks com.android.hardware.boot.apex=$HOME/.android-certs/com.android.hardware.boot \
--extra_apks com.android.hardware.cas.apex=$HOME/.android-certs/com.android.hardware.cas \
--extra_apks com.android.hardware.wifi.apex=$HOME/.android-certs/com.android.hardware.wifi \
--extra_apks com.android.healthfitness.apex=$HOME/.android-certs/com.android.healthfitness \
--extra_apks com.android.hotspot2.osulogin.apex=$HOME/.android-certs/com.android.hotspot2.osulogin \
--extra_apks com.android.i18n.apex=$HOME/.android-certs/com.android.i18n \
--extra_apks com.android.ipsec.apex=$HOME/.android-certs/com.android.ipsec \
--extra_apks com.android.media.apex=$HOME/.android-certs/com.android.media \
--extra_apks com.android.media.swcodec.apex=$HOME/.android-certs/com.android.media.swcodec \
--extra_apks com.android.mediaprovider.apex=$HOME/.android-certs/com.android.mediaprovider \
--extra_apks com.android.nearby.halfsheet.apex=$HOME/.android-certs/com.android.nearby.halfsheet \
--extra_apks com.android.networkstack.tethering.apex=$HOME/.android-certs/com.android.networkstack.tethering \
--extra_apks com.android.neuralnetworks.apex=$HOME/.android-certs/com.android.neuralnetworks \
--extra_apks com.android.ondevicepersonalization.apex=$HOME/.android-certs/com.android.ondevicepersonalization \
--extra_apks com.android.os.statsd.apex=$HOME/.android-certs/com.android.os.statsd \
--extra_apks com.android.permission.apex=$HOME/.android-certs/com.android.permission \
--extra_apks com.android.resolv.apex=$HOME/.android-certs/com.android.resolv \
--extra_apks com.android.rkpd.apex=$HOME/.android-certs/com.android.rkpd \
--extra_apks com.android.runtime.apex=$HOME/.android-certs/com.android.runtime \
--extra_apks com.android.safetycenter.resources.apex=$HOME/.android-certs/com.android.safetycenter.resources \
--extra_apks com.android.scheduling.apex=$HOME/.android-certs/com.android.scheduling \
--extra_apks com.android.sdkext.apex=$HOME/.android-certs/com.android.sdkext \
--extra_apks com.android.support.apexer.apex=$HOME/.android-certs/com.android.support.apexer \
--extra_apks com.android.telephony.apex=$HOME/.android-certs/com.android.telephony \
--extra_apks com.android.telephonymodules.apex=$HOME/.android-certs/com.android.telephonymodules \
--extra_apks com.android.tethering.apex=$HOME/.android-certs/com.android.tethering \
--extra_apks com.android.tzdata.apex=$HOME/.android-certs/com.android.tzdata \
--extra_apks com.android.uwb.apex=$HOME/.android-certs/com.android.uwb \
--extra_apks com.android.uwb.resources.apex=$HOME/.android-certs/com.android.uwb.resources \
--extra_apks com.android.virt.apex=$HOME/.android-certs/com.android.virt \
--extra_apks com.android.vndk.current.apex=$HOME/.android-certs/com.android.vndk.current \
--extra_apks com.android.vndk.current.on_vendor.apex=$HOME/.android-certs/com.android.vndk.current.on_vendor \
--extra_apks com.android.wifi.apex=$HOME/.android-certs/com.android.wifi \
--extra_apks com.android.wifi.dialog.apex=$HOME/.android-certs/com.android.wifi.dialog \
--extra_apks com.android.wifi.resources.apex=$HOME/.android-certs/com.android.wifi.resources \
--extra_apks com.google.pixel.camera.hal.apex=$HOME/.android-certs/com.google.pixel.camera.hal \
--extra_apks com.google.pixel.vibrator.hal.apex=$HOME/.android-certs/com.google.pixel.vibrator.hal \
--extra_apks com.qorvo.uwb.apex=$HOME/.android-certs/com.qorvo.uwb \
--extra_apex_payload_key com.android.adbd.apex=$HOME/.android-certs/com.android.adbd.pem \
--extra_apex_payload_key com.android.adservices.apex=$HOME/.android-certs/com.android.adservices.pem \
--extra_apex_payload_key com.android.adservices.api.apex=$HOME/.android-certs/com.android.adservices.api.pem \
--extra_apex_payload_key com.android.appsearch.apex=$HOME/.android-certs/com.android.appsearch.pem \
--extra_apex_payload_key com.android.art.apex=$HOME/.android-certs/com.android.art.pem \
--extra_apex_payload_key com.android.bluetooth.apex=$HOME/.android-certs/com.android.bluetooth.pem \
--extra_apex_payload_key com.android.btservices.apex=$HOME/.android-certs/com.android.btservices.pem \
--extra_apex_payload_key com.android.cellbroadcast.apex=$HOME/.android-certs/com.android.cellbroadcast.pem \
--extra_apex_payload_key com.android.compos.apex=$HOME/.android-certs/com.android.compos.pem \
--extra_apex_payload_key com.android.configinfrastructure.apex=$HOME/.android-certs/com.android.configinfrastructure.pem \
--extra_apex_payload_key com.android.connectivity.resources.apex=$HOME/.android-certs/com.android.connectivity.resources.pem \
--extra_apex_payload_key com.android.conscrypt.apex=$HOME/.android-certs/com.android.conscrypt.pem \
--extra_apex_payload_key com.android.devicelock.apex=$HOME/.android-certs/com.android.devicelock.pem \
--extra_apex_payload_key com.android.extservices.apex=$HOME/.android-certs/com.android.extservices.pem \
--extra_apex_payload_key com.android.graphics.pdf.apex=$HOME/.android-certs/com.android.graphics.pdf.pem \
--extra_apex_payload_key com.android.hardware.biometrics.face.virtual.apex=$HOME/.android-certs/com.android.hardware.biometrics.face.virtual.pem \
--extra_apex_payload_key com.android.hardware.biometrics.fingerprint.virtual.apex=$HOME/.android-certs/com.android.hardware.biometrics.fingerprint.virtual.pem \
--extra_apex_payload_key com.android.hardware.boot.apex=$HOME/.android-certs/com.android.hardware.boot.pem \
--extra_apex_payload_key com.android.hardware.cas.apex=$HOME/.android-certs/com.android.hardware.cas.pem \
--extra_apex_payload_key com.android.hardware.wifi.apex=$HOME/.android-certs/com.android.hardware.wifi.pem \
--extra_apex_payload_key com.android.healthfitness.apex=$HOME/.android-certs/com.android.healthfitness.pem \
--extra_apex_payload_key com.android.hotspot2.osulogin.apex=$HOME/.android-certs/com.android.hotspot2.osulogin.pem \
--extra_apex_payload_key com.android.i18n.apex=$HOME/.android-certs/com.android.i18n.pem \
--extra_apex_payload_key com.android.ipsec.apex=$HOME/.android-certs/com.android.ipsec.pem \
--extra_apex_payload_key com.android.media.apex=$HOME/.android-certs/com.android.media.pem \
--extra_apex_payload_key com.android.media.swcodec.apex=$HOME/.android-certs/com.android.media.swcodec.pem \
--extra_apex_payload_key com.android.mediaprovider.apex=$HOME/.android-certs/com.android.mediaprovider.pem \
--extra_apex_payload_key com.android.nearby.halfsheet.apex=$HOME/.android-certs/com.android.nearby.halfsheet.pem \
--extra_apex_payload_key com.android.networkstack.tethering.apex=$HOME/.android-certs/com.android.networkstack.tethering.pem \
--extra_apex_payload_key com.android.neuralnetworks.apex=$HOME/.android-certs/com.android.neuralnetworks.pem \
--extra_apex_payload_key com.android.ondevicepersonalization.apex=$HOME/.android-certs/com.android.ondevicepersonalization.pem \
--extra_apex_payload_key com.android.os.statsd.apex=$HOME/.android-certs/com.android.os.statsd.pem \
--extra_apex_payload_key com.android.permission.apex=$HOME/.android-certs/com.android.permission.pem \
--extra_apex_payload_key com.android.resolv.apex=$HOME/.android-certs/com.android.resolv.pem \
--extra_apex_payload_key com.android.rkpd.apex=$HOME/.android-certs/com.android.rkpd.pem \
--extra_apex_payload_key com.android.runtime.apex=$HOME/.android-certs/com.android.runtime.pem \
--extra_apex_payload_key com.android.safetycenter.resources.apex=$HOME/.android-certs/com.android.safetycenter.resources.pem \
--extra_apex_payload_key com.android.scheduling.apex=$HOME/.android-certs/com.android.scheduling.pem \
--extra_apex_payload_key com.android.sdkext.apex=$HOME/.android-certs/com.android.sdkext.pem \
--extra_apex_payload_key com.android.support.apexer.apex=$HOME/.android-certs/com.android.support.apexer.pem \
--extra_apex_payload_key com.android.telephony.apex=$HOME/.android-certs/com.android.telephony.pem \
--extra_apex_payload_key com.android.telephonymodules.apex=$HOME/.android-certs/com.android.telephonymodules.pem \
--extra_apex_payload_key com.android.tethering.apex=$HOME/.android-certs/com.android.tethering.pem \
--extra_apex_payload_key com.android.tzdata.apex=$HOME/.android-certs/com.android.tzdata.pem \
--extra_apex_payload_key com.android.uwb.apex=$HOME/.android-certs/com.android.uwb.pem \
--extra_apex_payload_key com.android.uwb.resources.apex=$HOME/.android-certs/com.android.uwb.resources.pem \
--extra_apex_payload_key com.android.virt.apex=$HOME/.android-certs/com.android.virt.pem \
--extra_apex_payload_key com.android.vndk.current.apex=$HOME/.android-certs/com.android.vndk.current.pem \
--extra_apex_payload_key com.android.vndk.current.on_vendor.apex=$HOME/.android-certs/com.android.vndk.current.on_vendor.pem \
--extra_apex_payload_key com.android.wifi.apex=$HOME/.android-certs/com.android.wifi.pem \
--extra_apex_payload_key com.android.wifi.dialog.apex=$HOME/.android-certs/com.android.wifi.dialog.pem \
--extra_apex_payload_key com.android.wifi.resources.apex=$HOME/.android-certs/com.android.wifi.resources.pem \
--extra_apex_payload_key com.google.pixel.camera.hal.apex=$HOME/.android-certs/com.google.pixel.camera.hal.pem \
--extra_apex_payload_key com.google.pixel.vibrator.hal.apex=$HOME/.android-certs/com.google.pixel.vibrator.hal.pem \
--extra_apex_payload_key com.qorvo.uwb.apex=$HOME/.android-certs/com.qorvo.uwb.pem \
$OUT/obj/PACKAGING/target_files_intermediates/*-target_files*.zip \
$OUTFILE