diff --git a/.gitignore b/.gitignore index a19a565..be7fb59 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ # out directory out/ +# rro build artifacts +overlay/**/build/ + # gapps log gapps_log diff --git a/build/apktool/apktool_2.8.1.jar b/build/apktool/apktool_2.8.1.jar new file mode 100644 index 0000000..af01503 Binary files /dev/null and b/build/apktool/apktool_2.8.1.jar differ diff --git a/build/gapps.sh b/build/gapps.sh index 3287a4c..00b481e 100755 --- a/build/gapps.sh +++ b/build/gapps.sh @@ -7,18 +7,23 @@ # var # DATE=$(date -u +%Y%m%d_%H%M%S) -export TOP=$(realpath .) +export GAPPS_TOP=$(realpath .) ANDROIDV=13.0.0 SDKV=33 GARCH=$1 CPUARCH=$GARCH [ ! -z "$2" ] && CPUARCH=$2 -OUT=$TOP/out -BUILD=$TOP/build +OUT=$GAPPS_TOP/out +BUILD=$GAPPS_TOP/build METAINF=$BUILD/meta -COMMON=$TOP/common/proprietary -GLOG=$TOP/gapps_log -ADDOND=$TOP/addond.sh +COMMON=$GAPPS_TOP/common/proprietary +export GLOG=$GAPPS_TOP/gapps_log +ADDOND=$GAPPS_TOP/addond.sh + +SIGNAPK=$GAPPS_TOP/build/sign/signapk.jar + +ZIP_KEY_PK8=$GAPPS_TOP/build/sign/testkey.pk8 +ZIP_KEY_PEM=$GAPPS_TOP/build/sign/testkey.x509.pem ## # functions @@ -41,16 +46,16 @@ function create() { echo "ARCH= $GARCH" >> $GLOG echo "OS= $(uname -s -r)" >> $GLOG echo "NAME= $(whoami) at $(uname -n)" >> $GLOG - PREBUILT=$TOP/$GARCH/proprietary + PREBUILT=$GAPPS_TOP/$GARCH/proprietary test -d $OUT || mkdir $OUT; test -d $OUT/$GARCH || mkdir -p $OUT/$GARCH test -d $OUT/$GARCH/system || mkdir -p $OUT/$GARCH/system echo "Build directories are now ready" >> $GLOG echo "Compiling RROs" - $TOP/overlay/build_overlays.sh $GARCH $OUT/$GARCH + $GAPPS_TOP/overlay/build_overlays.sh $GARCH $OUT/$GARCH echo "Getting prebuilts..." echo "Copying stuff" >> $GLOG - cp $TOP/toybox-$GARCH $OUT/$GARCH/toybox >> $GLOG + cp $GAPPS_TOP/toybox-$GARCH $OUT/$GARCH/toybox >> $GLOG cp -r $PREBUILT/* $OUT/$GARCH/system >> $GLOG cp -r $COMMON/* $OUT/$GARCH/system >> $GLOG echo "Generating addon.d script" >> $GLOG @@ -72,10 +77,10 @@ function zipit() { cd $OUT/$GARCH zip -r /tmp/$BUILDZIP . >> $GLOG rm -rf $OUT/tmp >> $GLOG - cd $TOP + cd $GAPPS_TOP if [ -f /tmp/$BUILDZIP ]; then echo "Signing zip..." - java -Xmx2048m -jar $TOP/build/sign/signapk.jar -w $TOP/build/sign/testkey.x509.pem $TOP/build/sign/testkey.pk8 /tmp/$BUILDZIP $OUT/$BUILDZIP >> $GLOG + java -Xmx2048m -jar $SIGNAPK -w $ZIP_KEY_PEM $ZIP_KEY_PK8 /tmp/$BUILDZIP $OUT/$BUILDZIP >> $GLOG else echo "Couldn't zip files!" echo "Couldn't find unsigned zip file, aborting" >> $GLOG @@ -103,7 +108,7 @@ function getmd5() { if [ -x $(which realpath) ]; then echo "Realpath found!" >> $GLOG else - TOP=$(cd . && pwd) # some darwin love + GAPPS_TOP=$(cd . && pwd) # some darwin love echo "No realpath found!" >> $GLOG fi diff --git a/build/target/product/AndroidProducts.mk b/build/target/product/AndroidProducts.mk deleted file mode 100644 index 27ee0de..0000000 --- a/build/target/product/AndroidProducts.mk +++ /dev/null @@ -1,5 +0,0 @@ -PRODUCT_MAKEFILES := \ - $(LOCAL_DIR)/lineage_gapps_arm.mk \ - $(LOCAL_DIR)/lineage_gapps_arm64.mk \ - $(LOCAL_DIR)/lineage_gapps_x86.mk \ - $(LOCAL_DIR)/lineage_gapps_x86_64.mk diff --git a/build/target/product/lineage_gapps_arm.mk b/build/target/product/lineage_gapps_arm.mk deleted file mode 100644 index 85e5d0d..0000000 --- a/build/target/product/lineage_gapps_arm.mk +++ /dev/null @@ -1,9 +0,0 @@ -$(call inherit-product, build/target/product/aosp_arm.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -TARGET_NO_KERNEL_OVERRIDE := true - -PRODUCT_NAME := lineage_gapps_arm - -PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay diff --git a/build/target/product/lineage_gapps_arm64.mk b/build/target/product/lineage_gapps_arm64.mk deleted file mode 100644 index b097611..0000000 --- a/build/target/product/lineage_gapps_arm64.mk +++ /dev/null @@ -1,9 +0,0 @@ -$(call inherit-product, build/target/product/aosp_arm64.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -TARGET_NO_KERNEL_OVERRIDE := true - -PRODUCT_NAME := lineage_gapps_arm64 - -PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay diff --git a/build/target/product/lineage_gapps_x86.mk b/build/target/product/lineage_gapps_x86.mk deleted file mode 100644 index 1003d08..0000000 --- a/build/target/product/lineage_gapps_x86.mk +++ /dev/null @@ -1,12 +0,0 @@ -$(call inherit-product, build/target/product/aosp_x86.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -PRODUCT_SDK_ADDON_NAME := -PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP := - -TARGET_NO_KERNEL_OVERRIDE := true - -PRODUCT_NAME := lineage_gapps_x86 - -PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay diff --git a/build/target/product/lineage_gapps_x86_64.mk b/build/target/product/lineage_gapps_x86_64.mk deleted file mode 100644 index fc256d9..0000000 --- a/build/target/product/lineage_gapps_x86_64.mk +++ /dev/null @@ -1,12 +0,0 @@ -$(call inherit-product, build/target/product/aosp_x86_64.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -TARGET_NO_KERNEL_OVERRIDE := true - -PRODUCT_SDK_ADDON_NAME := -PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP := - -PRODUCT_NAME := lineage_gapps_x86_64 - -PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay diff --git a/overlay/Android.bp b/overlay/Android.bp deleted file mode 100644 index 9515b25..0000000 --- a/overlay/Android.bp +++ /dev/null @@ -1,2 +0,0 @@ -soong_namespace { -} diff --git a/overlay/GmsOverlay/apktool.yml b/overlay/GmsOverlay/apktool.yml new file mode 100644 index 0000000..92e0118 --- /dev/null +++ b/overlay/GmsOverlay/apktool.yml @@ -0,0 +1,23 @@ +!!brut.androlib.apk.ApkInfo +apkFileName: GmsOverlay.apk +doNotCompress: +- resources.arsc +isFrameworkApk: false +packageInfo: + forcedPackageId: '127' + renameManifestPackage: null +resourcesAreCompressed: false +sdkInfo: + minSdkVersion: '33' + targetSdkVersion: '33' +sharedLibrary: false +sparseResources: true +unknownFiles: {} +usesFramework: + ids: + - 1 + tag: null +version: 2.8.1 +versionInfo: + versionCode: '1' + versionName: '1.0' diff --git a/overlay/GmsSettingsProviderOverlay/apktool.yml b/overlay/GmsSettingsProviderOverlay/apktool.yml new file mode 100644 index 0000000..000c570 --- /dev/null +++ b/overlay/GmsSettingsProviderOverlay/apktool.yml @@ -0,0 +1,23 @@ +!!brut.androlib.apk.ApkInfo +apkFileName: GmsSettingsProviderOverlay.apk +doNotCompress: +- resources.arsc +isFrameworkApk: false +packageInfo: + forcedPackageId: '127' + renameManifestPackage: null +resourcesAreCompressed: false +sdkInfo: + minSdkVersion: '33' + targetSdkVersion: '33' +sharedLibrary: false +sparseResources: true +unknownFiles: {} +usesFramework: + ids: + - 1 + tag: null +version: 2.8.1 +versionInfo: + versionCode: '1' + versionName: '1.0' diff --git a/overlay/build_overlays.sh b/overlay/build_overlays.sh index 8a34423..6134a86 100755 --- a/overlay/build_overlays.sh +++ b/overlay/build_overlays.sh @@ -5,42 +5,23 @@ set -e GARCH=$1 GOUT=$2 +APKTOOL=$GAPPS_TOP/build/apktool/apktool_2.8.1.jar +APKSIGNER=$GAPPS_TOP/build/sign/apksigner.jar + +APK_KEY_PK8=$GAPPS_TOP/build/sign/testkey.pk8 +APK_KEY_PEM=$GAPPS_TOP/build/sign/testkey.x509.pem + SCRIPT_DIR=$(dirname "$0") cd "$SCRIPT_DIR" OVERLAYS=$(for dir in $(ls -d */); do echo ${dir%%/}; done) -croot 2>/dev/null || cd ../../../ - -source build/envsetup.sh -breakfast gapps_$GARCH -m installclean -mkdir -p $OUT # $OUT may not exist yet, but we need to start creating the log file now -m $OVERLAYS | tee $OUT/.log - -RELOUT=$(echo $OUT | sed "s#^${ANDROID_BUILD_TOP}/##") -LOC="$(cat $OUT/.log | sed -r -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/^\[ {0,2}[0-9]{1,3}% [0-9]{1,6}\/[0-9]{1,6}\] +//' \ - | grep '^Install: ' | grep "$RELOUT" | cut -d ':' -f 2)" -FILES=$(echo $LOC | tr " " "\n" | sed "s#.*${RELOUT}##" | sort | uniq) - -for TARGET in $FILES; do - mkdir -p $(dirname $GOUT/$TARGET) && cp $OUT/$TARGET $GOUT/$TARGET +for OVERLAY in $OVERLAYS; do + PARTITION=$(grep -Eo "\w+_specific: true" $OVERLAY/Android.bp | sed "s/_specific.*$//") + OVERLAY_TARGET_DIR="$GOUT/system/$PARTITION/overlay/" + OVERLAY_TARGET="$OVERLAY_TARGET_DIR/$OVERLAY.apk" + test -d $OVERLAY_TARGET_DIR || mkdir -p $OVERLAY_TARGET_DIR + java -Xmx2048m -jar $APKTOOL b $OVERLAY -o $OVERLAY_TARGET --use-aapt2 >> $GLOG 2>&1 + java -Xmx2048m -jar $APKSIGNER sign --key $APK_KEY_PK8 --cert $APK_KEY_PEM $OVERLAY_TARGET + rm $OVERLAY_TARGET.idsig done - -# Generate temporary signing keys -PRIVATE_KEY=$(mktemp) -PRIVATE_KEY_PK8=$(mktemp) -PUBLIC_KEY_PEM=$(mktemp) - -openssl genrsa -f4 2048 > $PRIVATE_KEY -openssl pkcs8 -in $PRIVATE_KEY -topk8 -outform DER -out $PRIVATE_KEY_PK8 -nocrypt -openssl req -new -x509 -sha256 -key $PRIVATE_KEY -out $PUBLIC_KEY_PEM -days 10000 -subj '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' - -# Resign all overlay apks -for TARGET in $FILES; do - java -Xmx2048m -jar $TOP/build/sign/apksigner.jar sign --key $PRIVATE_KEY_PK8 --cert $PUBLIC_KEY_PEM $GOUT/$TARGET - rm $GOUT/$TARGET.idsig -done - -# RIP -rm $PRIVATE_KEY $PRIVATE_KEY_PK8 $PUBLIC_KEY_PEM