From 79d65be64defb5b18d6eaa21bcc52cf53ce553f1 Mon Sep 17 00:00:00 2001 From: AndroPlus-org Date: Sat, 30 Oct 2021 16:06:14 +0900 Subject: [PATCH] first commit --- .gitattributes | 8 + META-INF/com/google/android/update-binary | 196 ++++++++++++++++++ META-INF/com/google/android/updater-script | 1 + README.md | 38 ++++ customize.sh | 2 + module.prop | 6 + post-fs-data.sh | 8 + service.sh | 8 + system.prop | 1 + .../product/media/audio/ui/camera_click.ogg | 0 .../treble-overlay-google-pixel6-systemui.apk | Bin 0 -> 12638 bytes .../treble-overlay-google-pixel6-tether.apk | Bin 0 -> 12570 bytes .../overlay/treble-overlay-google-pixel6.apk | Bin 0 -> 16734 bytes 13 files changed, 268 insertions(+) create mode 100644 .gitattributes create mode 100644 META-INF/com/google/android/update-binary create mode 100644 META-INF/com/google/android/updater-script create mode 100644 README.md create mode 100644 customize.sh create mode 100644 module.prop create mode 100644 post-fs-data.sh create mode 100644 service.sh create mode 100644 system.prop create mode 100644 system/product/media/audio/ui/camera_click.ogg create mode 100644 system/product/overlay/treble-overlay-google-pixel6-systemui.apk create mode 100644 system/product/overlay/treble-overlay-google-pixel6-tether.apk create mode 100644 system/product/overlay/treble-overlay-google-pixel6.apk diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8980df1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +# Declare files that will always have LF line endings on checkout. +META-INF/** text eol=lf +*.prop text eol=lf +*.sh text eol=lf +*.md text eol=lf + +# Denote all files that are truly binary and should not be modified. +system/** binary diff --git a/META-INF/com/google/android/update-binary b/META-INF/com/google/android/update-binary new file mode 100644 index 0000000..f28aa9d --- /dev/null +++ b/META-INF/com/google/android/update-binary @@ -0,0 +1,196 @@ +#!/sbin/sh + +################# +# Initialization +################# + +umask 022 + +# echo before loading util_functions +ui_print() { echo "$1"; } + +require_new_magisk() { + ui_print "*******************************" + ui_print " Please install Magisk v20.0+! " + ui_print "*******************************" + exit 1 +} + +######################### +# Load util_functions.sh +######################### + +OUTFD=$2 +ZIPFILE=$3 + +mount /data 2>/dev/null + +[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk +. /data/adb/magisk/util_functions.sh +[ $MAGISK_VER_CODE -lt 20000 ] && require_new_magisk + +if [ $MAGISK_VER_CODE -ge 20400 ]; then + # New Magisk have complete installation logic within util_functions.sh + install_module + exit 0 +fi + +################# +# Legacy Support +################# + +TMPDIR=/dev/tmp +PERSISTDIR=/sbin/.magisk/mirror/persist + +is_legacy_script() { + unzip -l "$ZIPFILE" install.sh | grep -q install.sh + return $? +} + +print_modname() { + local authlen len namelen pounds + namelen=`echo -n $MODNAME | wc -c` + authlen=$((`echo -n $MODAUTH | wc -c` + 3)) + [ $namelen -gt $authlen ] && len=$namelen || len=$authlen + len=$((len + 2)) + pounds=$(printf "%${len}s" | tr ' ' '*') + ui_print "$pounds" + ui_print " $MODNAME " + ui_print " by $MODAUTH " + ui_print "$pounds" + ui_print "*******************" + ui_print " Powered by Magisk " + ui_print "*******************" +} + +# Override abort as old scripts have some issues +abort() { + ui_print "$1" + $BOOTMODE || recovery_cleanup + [ -n $MODPATH ] && rm -rf $MODPATH + rm -rf $TMPDIR + exit 1 +} + +rm -rf $TMPDIR 2>/dev/null +mkdir -p $TMPDIR + +# Preperation for flashable zips +setup_flashable + +# Mount partitions +mount_partitions + +# Detect version and architecture +api_level_arch_detect + +# Setup busybox and binaries +$BOOTMODE && boot_actions || recovery_actions + +############## +# Preparation +############## + +# Extract prop file +unzip -o "$ZIPFILE" module.prop -d $TMPDIR >&2 +[ ! -f $TMPDIR/module.prop ] && abort "! Unable to extract zip file!" + +$BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules +MODULEROOT=$NVBASE/$MODDIRNAME +MODID=`grep_prop id $TMPDIR/module.prop` +MODNAME=`grep_prop name $TMPDIR/module.prop` +MODAUTH=`grep_prop author $TMPDIR/module.prop` +MODPATH=$MODULEROOT/$MODID + +# Create mod paths +rm -rf $MODPATH 2>/dev/null +mkdir -p $MODPATH + +########## +# Install +########## + +if is_legacy_script; then + unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 + + # Load install script + . $TMPDIR/install.sh + + # Callbacks + print_modname + on_install + + # Custom uninstaller + [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh + + # Skip mount + $SKIPMOUNT && touch $MODPATH/skip_mount + + # prop file + $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop + + # Module info + cp -af $TMPDIR/module.prop $MODPATH/module.prop + + # post-fs-data scripts + $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh + + # service scripts + $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh + + ui_print "- Setting permissions" + set_permissions +else + print_modname + + unzip -o "$ZIPFILE" customize.sh -d $MODPATH >&2 + + if ! grep -q '^SKIPUNZIP=1$' $MODPATH/customize.sh 2>/dev/null; then + ui_print "- Extracting module files" + unzip -o "$ZIPFILE" -x 'META-INF/*' -d $MODPATH >&2 + + # Default permissions + set_perm_recursive $MODPATH 0 0 0755 0644 + fi + + # Load customization script + [ -f $MODPATH/customize.sh ] && . $MODPATH/customize.sh +fi + +# Handle replace folders +for TARGET in $REPLACE; do + ui_print "- Replace target: $TARGET" + mktouch $MODPATH$TARGET/.replace +done + +if $BOOTMODE; then + # Update info for Magisk Manager + mktouch $NVBASE/modules/$MODID/update + cp -af $MODPATH/module.prop $NVBASE/modules/$MODID/module.prop +fi + +# Copy over custom sepolicy rules +if [ -f $MODPATH/sepolicy.rule -a -e $PERSISTDIR ]; then + ui_print "- Installing custom sepolicy patch" + # Remove old recovery logs (which may be filling partition) to make room + rm -f $PERSISTDIR/cache/recovery/* + PERSISTMOD=$PERSISTDIR/magisk/$MODID + mkdir -p $PERSISTMOD + cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule || abort "! Insufficient partition size" +fi + +# Remove stuffs that don't belong to modules +rm -rf \ +$MODPATH/system/placeholder $MODPATH/customize.sh \ +$MODPATH/README.md $MODPATH/.git* 2>/dev/null + +############# +# Finalizing +############# + +cd / +$BOOTMODE || recovery_cleanup +rm -rf $TMPDIR + +ui_print "- Done" +exit 0 diff --git a/META-INF/com/google/android/updater-script b/META-INF/com/google/android/updater-script new file mode 100644 index 0000000..11d5c96 --- /dev/null +++ b/META-INF/com/google/android/updater-script @@ -0,0 +1 @@ +#MAGISK diff --git a/README.md b/README.md new file mode 100644 index 0000000..86923bd --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +## Google Pixel 6 Pro 用パッチ + +Google Pixel 6 Pro にて + +* カメラシャッター音の強制を無効化 +* 電源メニューから緊急通報や機内モードを削除 +* SoftBank SIM でのテザリング制限解除 (動作未確認) +* ナビゲーションバーのスペースを0に変更 + +をする Magisk モジュールです。 +必要ないものがあれば overlay フォルダにある apk を削除するかデコンパイルして編集してください。 + +Google Pixel 6 Pro で動作確認済みですが、Pixel 6でも動作すると思います。 + +## 更新履歴 + +#### v01 +* リリース + +## ライセンス + +- [WTFPL](http://www.wtfpl.net/) + +``` + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. +``` \ No newline at end of file diff --git a/customize.sh b/customize.sh new file mode 100644 index 0000000..e440132 --- /dev/null +++ b/customize.sh @@ -0,0 +1,2 @@ +REPLACE=" +" \ No newline at end of file diff --git a/module.prop b/module.prop new file mode 100644 index 0000000..aba936a --- /dev/null +++ b/module.prop @@ -0,0 +1,6 @@ +id=pixel6-mod +name=Patch for Google Pixel 6 Pro +version=v01 +versionCode=1 +author=AndroPlus +description=Pixel 6 Pro 用パッチ diff --git a/post-fs-data.sh b/post-fs-data.sh new file mode 100644 index 0000000..a2a0e7a --- /dev/null +++ b/post-fs-data.sh @@ -0,0 +1,8 @@ +#!/system/bin/sh +# Do NOT assume where your module will be located. +# ALWAYS use $MODDIR if you need to know where this script +# and module is placed. +# This will make sure your module will still work +# if Magisk change its mount point in the future + +setprop audio.camerasound.force false diff --git a/service.sh b/service.sh new file mode 100644 index 0000000..a2a0e7a --- /dev/null +++ b/service.sh @@ -0,0 +1,8 @@ +#!/system/bin/sh +# Do NOT assume where your module will be located. +# ALWAYS use $MODDIR if you need to know where this script +# and module is placed. +# This will make sure your module will still work +# if Magisk change its mount point in the future + +setprop audio.camerasound.force false diff --git a/system.prop b/system.prop new file mode 100644 index 0000000..ff6e28c --- /dev/null +++ b/system.prop @@ -0,0 +1 @@ +audio.camerasound.force=false diff --git a/system/product/media/audio/ui/camera_click.ogg b/system/product/media/audio/ui/camera_click.ogg new file mode 100644 index 0000000..e69de29 diff --git a/system/product/overlay/treble-overlay-google-pixel6-systemui.apk b/system/product/overlay/treble-overlay-google-pixel6-systemui.apk new file mode 100644 index 0000000000000000000000000000000000000000..973bf8c1dcef76f643c4b6047dcd2b45ca38b6a8 GIT binary patch literal 12638 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 literal 0 HcmV?d00001