From 3900328b83ab042830352296ba18ee30aa8e03f7 Mon Sep 17 00:00:00 2001 From: Rikka Date: Sun, 30 Apr 2023 01:36:05 +0800 Subject: [PATCH] Add interactive command line interface --- README.md | 42 ++- assets/img/README/image-20230430013103883.png | Bin 0 -> 17067 bytes assets/img/README/image-20230430013119763.png | Bin 0 -> 14976 bytes assets/img/README/image-20230430013148814.png | Bin 0 -> 43730 bytes main.py | 340 +++++++++++------- stuffs/microg.py | 1 + stuffs/nodataperm.py | 7 +- 7 files changed, 242 insertions(+), 148 deletions(-) create mode 100644 assets/img/README/image-20230430013103883.png create mode 100644 assets/img/README/image-20230430013119763.png create mode 100644 assets/img/README/image-20230430013148814.png diff --git a/README.md b/README.md index f790328..f3e2fab 100644 --- a/README.md +++ b/README.md @@ -11,15 +11,35 @@ Script to add gapps and other stuff to waydroid ! sudo dnf install lzip ## openSUSE based distributions: sudo zypper install lzip -Then run: - + + +## Interactive terminal interface + +``` +git clone https://github.com/casualsnek/waydroid_script +cd waydroid_script +sudo python main.py +``` + +![image-20230430013103883](assets/img/README/image-20230430013103883.png) + +![image-20230430013119763](assets/img/README/image-20230430013119763.png) + +![image-20230430013148814](assets/img/README/image-20230430013148814.png) + + + +## Command Line + git clone https://github.com/casualsnek/waydroid_script cd waydroid_script sudo python3 -m pip install -r requirements.txt # install something - sudo python3 main.py install {gapps, magisk, libndk, libhoudini, nodataperm, smartdock, microg, hidestatus} + sudo python3 main.py install {gapps, magisk, libndk, libhoudini, nodataperm, smartdock, microg} # uninstall something - sudo python3 main.py uninstall {gapps, magisk, libndk, libhoudini, nodataperm, smartdock, microg, hidestatus} + sudo python3 main.py uninstall {gapps, magisk, libndk, libhoudini, nodataperm, smartdock, microg} + # some hacks + sudo python3 hack {nodataperm, hidestatusbar} ## Install OpenGapps @@ -107,7 +127,7 @@ Open terminal and switch to directory where "main.py" is located then run: ``` sudo python3 main.py install nodataperm ``` -**WARNING**: Tested on `lineage-18.1-20230128-VANILLA-waydroid_x86_64.img`. This script will replace `/system/framework/service.jar`, which may prevent WayDroid from booting. If so, run `sudo python3 main.py uninstall nodataperm` to remove it. +**WARNING**: Tested on `lineage-18.1-20230128-VANILLA-waydroid_x86_64.img`. This script will replace `/system/framework/service.jar`, which may prevent WayDroid from booting. If so, run `sudo python3 main.py uninstall nodataperm` to remove it. Or you can run the following commands directly in `sudo waydroid shell`. In this way, every time a new game is installed, you need to run it again, but it's much less risky. @@ -140,7 +160,7 @@ After ![After](assets/9.png) ``` -sudo python3 main.py install hidestatus +sudo python3 main.py install hidestatusbar ``` @@ -155,16 +175,6 @@ Star this repository if you find this useful, if you encounter problem create a ## Error handling -- WayDroid no longer boots - -``` -sudo waydroid upgrade -o -sudo systemctl restart waydroid-container.service -``` -This will make `/var/lib/waydroid/waydroid_base.prop` return to original state, so libndk/libhoudini will be invalid. You need to modify `waydroid_base.prop` again. - -Or use `sudo python3 main.py uninstall xxxxx` to remove what is causing the issue. - - Magisk installed: N/A Check [waydroid-magisk](https://github.com/nitanmarcel/waydroid-magisk) diff --git a/assets/img/README/image-20230430013103883.png b/assets/img/README/image-20230430013103883.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb2e78a7cfa2b16e6902bd697da644f4574e594 GIT binary patch literal 17067 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 z z+OOE#0t$-QfuhP6mS~tl9U*=kGl8PvXch&#@un;$-xerYdZ%W0Jc=z-+muifZR8xL z5bqX!{Kn{I$|CmT5}~D?1sjTq_5!`zmPY&+Cv`bJ+xyO2fR|EUO8=&|r1)Mb6x?Cn z`7Y6p;>dveJ$Kdw2jmMVp>h~hFya?hT1zX@3H{tQ9qnw@Wle26SUGkTA& zK%4cBM)423A`^#>gtH0SMN;?ILNsNWAZ{jE`VHzyblyTu9CFiYp4HKp)DZ8fO%;_H z>f@sE;eGyU zoeLT!=sG@qi70^>4C}V%SBPxi`SUZ!P!P*Ok1jq17WmsSyteSL82Y^`=8rc z`HXOQd^Va43={95$Qi-tXL^dnufweJd3hC8#Y<21zp3_jwgki*+@cMwQ!3X#4Qjq0 zIv61}VjyDn__57MPU=QC4`SS1;n}-ch4`|ibR>)Vl>7B*ORKgvt)#?=`dD4vFwghb zi4~SCOK`)(SED5iWw~aCaUdk*z(;$M;u5gTr8PJV2UwOAmMlp`mVD)Je%7=0Mrh`9 z-+tD7!Qs<)SsyvPS2hWzmFvHdl=h4A-oQ{*ryVTnL_As+?_16lH0>l?S;r9)inKcGL)q1N`swW;^2yAPbVc;{Uj0hf|{ZJ}}xgfSqRX_a3a!hl*>Tk@N-? z+8Zhr;;V=2wQ0(7+L} z^z#d#H#Ic?E3)z6#}FdibC2Y~!9f?B3@G?UB$f^ij|1E6th=)SnF4>1_4mtWho^_D zGw7B%aD&+ZllHl4UOAm<&;W2;=zVCZAjV!`ExP5jmylSO1N!-1qQmm)lv>YLl9jrQ!b`6%yhN)F8hx zCIi1HKnwbN0d_%j+wYc+uYqmdsq4BV1~yX~faSFCkxfO`W>O@-HL zc3~(k1}k1}V5k22{%jOVgJBXufT6n@z#}%DDprL_95#h+2i%8ce+7G9!2N|OEHCc` zcLZ#Mn|5J#rb^U1Ei=K&Ch2!?{r?V*nD}yf)2V);9T-xH-1cw4?Q>*cxFaTDeS9=UR$e7D?kG;2Gg*?ZXlK>UUQvumEsMWeyH%oV?0*moB)@e|603F;F z65NFB_nRKDnt$)~a^7DKv-+P>;`bZpU+ahZRUsNs4+E40xsez&&;fFh|8N#yGaUc# gN&lB2xcBwUt*&miXjTKigaSrVOzwTTh=Je#2PwLjvj6}9 literal 0 HcmV?d00001 diff --git a/assets/img/README/image-20230430013119763.png b/assets/img/README/image-20230430013119763.png new file mode 100644 index 0000000000000000000000000000000000000000..87b60f4cd7fa83a1d62207fd75cade72f3f253a1 GIT binary patch literal 14976 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 SN@x)RepHn-?-eMR2K*15>{v4Z literal 0 HcmV?d00001 diff --git a/main.py b/main.py index f4579fd..d5a8cd3 100755 --- a/main.py +++ b/main.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 - +from InquirerPy import inquirer +from InquirerPy.base.control import Choice +from InquirerPy.separator import Separator import argparse import os from typing import List @@ -56,135 +58,210 @@ def umount(partition, copy_dir): images.umount(mount_point) -def main(): - - def install_app(args): - install_list: List[General] = [] - app = args.app - if "gapps" in app: - install_list.append(Gapps(args.android_version)) - if "libndk" in app and "houdini" not in app: - arch = helper.host()[0] - if arch == "x86_64": - install_list.append(Ndk(args.android_version)) - else: - Logger.warn("libndk is not supported on your CPU") - if "libhoudini" in app and "ndk" not in app: - arch = helper.host()[0] - if arch == "x86_64": - install_list.append(Houdini(args.android_version)) - else: - Logger.warn("libhoudini is not supported on your CPU") - if "magisk" in app: - install_list.append(Magisk()) - if "widevine" in app: - install_list.append(Widevine(args.android_version)) - if "smartdock" in app: - install_list.append(Smartdock()) - if "microg" in app: - install_list.append(MicroG(args.android_version)) - - if not container.use_overlayfs(): - copy_dir = "/tmp/waydroid" - container.stop() - - resize_system, resize_vendor = False, False - for item in install_list: - if item.partition == "system": - resize_system = True - elif item.partition == "vendor": - resize_vendor = True - - if resize_system: - resize("system") - if resize_vendor: - resize("vendor") - - mount("system", copy_dir) - mount("vendor", copy_dir) - +def install_app(args): + install_list: List[General] = [] + app = args.app + if "gapps" in app: + install_list.append(Gapps(args.android_version)) + if "libndk" in app and "houdini" not in app: + arch = helper.host()[0] + if arch == "x86_64": + install_list.append(Ndk(args.android_version)) + else: + Logger.warn("libndk is not supported on your CPU") + if "libhoudini" in app and "ndk" not in app: + arch = helper.host()[0] + if arch == "x86_64": + install_list.append(Houdini(args.android_version)) + else: + Logger.warn("libhoudini is not supported on your CPU") + if "magisk" in app: + install_list.append(Magisk()) + if "widevine" in app: + install_list.append(Widevine(args.android_version)) + if "smartdock" in app: + install_list.append(Smartdock()) + if "microg" in app: + install_list.append(MicroG(args.android_version)) + + if not container.use_overlayfs(): + copy_dir = "/tmp/waydroid" + container.stop() + + resize_system, resize_vendor = False, False for item in install_list: - item.install() - - if not container.use_overlayfs(): - umount("vendor", copy_dir) - umount("system", copy_dir) - - container.upgrade() - - def remove_app(args): - remove_list: List[General] = [] - app = args.app - if "gapps" in app: - remove_list.append(Gapps(args.android_version)) - if "libndk" in app and "houdini" not in app: - remove_list.append(Ndk(args.android_version)) - if "libhoudini" in app and "ndk" not in app: - remove_list.append(Houdini(args.android_version)) - if "magisk" in app: - remove_list.append(Magisk()) - if "widevine" in app: - remove_list.append(Widevine(args.android_version)) - if "smartdock" in app: - remove_list.append(Smartdock()) - if "microg" in app: - remove_list.append(MicroG(args.android_version)) - if "nodataperm" in app: - remove_list.append(Nodataperm(args.android_version)) - if "hidestatusbar" in app: - remove_list.append(HideStatusBar()) - - if not container.use_overlayfs(): - copy_dir = "/tmp/waydroid" - container.stop() - - for item in remove_list: - item.uninstall() - - if not container.use_overlayfs(): - umount("vendor", copy_dir) - umount("system", copy_dir) - - container.upgrade() - - def hack_option(args): - Logger.warning("If these hacks cause any problems, run `sudo python main.py remove ` to remove") - - hack_list: List[General] = [] - options = args.option_name - if "nodataperm" in options: - hack_list.append(Nodataperm()) - if "hidestatusbar" in options: - hack_list.append(HideStatusBar()) - - if not container.use_overlayfs(): - copy_dir = "/tmp/waydroid" - container.stop() - - resize_system, resize_vendor = False, False - for item in hack_list: - if item.partition == "system": - resize_system = True - elif item.partition == "vendor": - resize_vendor = True - - if resize_system: - resize("system") - if resize_vendor: - resize("vendor") - - mount("system", copy_dir) - mount("vendor", copy_dir) - + if item.partition == "system": + resize_system = True + elif item.partition == "vendor": + resize_vendor = True + + if resize_system: + resize("system") + if resize_vendor: + resize("vendor") + + mount("system", copy_dir) + mount("vendor", copy_dir) + + for item in install_list: + item.install() + + if not container.use_overlayfs(): + umount("vendor", copy_dir) + umount("system", copy_dir) + + container.upgrade() + + +def remove_app(args): + remove_list: List[General] = [] + app = args.app + if "gapps" in app: + remove_list.append(Gapps(args.android_version)) + if "libndk" in app and "houdini" not in app: + remove_list.append(Ndk(args.android_version)) + if "libhoudini" in app and "ndk" not in app: + remove_list.append(Houdini(args.android_version)) + if "magisk" in app: + remove_list.append(Magisk()) + if "widevine" in app: + remove_list.append(Widevine(args.android_version)) + if "smartdock" in app: + remove_list.append(Smartdock()) + if "microg" in app: + remove_list.append(MicroG(args.android_version, args.microg_variant)) + if "nodataperm" in app: + remove_list.append(Nodataperm(args.android_version)) + if "hidestatusbar" in app: + remove_list.append(HideStatusBar()) + + if not container.use_overlayfs(): + copy_dir = "/tmp/waydroid" + container.stop() + + for item in remove_list: + item.uninstall() + + if not container.use_overlayfs(): + umount("vendor", copy_dir) + umount("system", copy_dir) + + container.upgrade() + + +def hack_option(args): + Logger.warning( + "If these hacks cause any problems, run `sudo python main.py remove ` to remove") + + hack_list: List[General] = [] + options = args.option_name + if "nodataperm" in options: + hack_list.append(Nodataperm()) + if "hidestatusbar" in options: + hack_list.append(HideStatusBar()) + + if not container.use_overlayfs(): + copy_dir = "/tmp/waydroid" + container.stop() + + resize_system, resize_vendor = False, False for item in hack_list: - item.install() - - if not container.use_overlayfs(): - umount("vendor", copy_dir) - umount("system", copy_dir) + if item.partition == "system": + resize_system = True + elif item.partition == "vendor": + resize_vendor = True + + if resize_system: + resize("system") + if resize_vendor: + resize("vendor") + + mount("system", copy_dir) + mount("vendor", copy_dir) + + for item in hack_list: + item.install() + + if not container.use_overlayfs(): + umount("vendor", copy_dir) + umount("system", copy_dir) + + container.upgrade() + + +def interact(): + os.system("clear") + args = argparse.Namespace() + android_version = inquirer.select( + message="Select Android version", + instruction="(\u2191\u2193 Select Item)", + choices=[ + Choice(name="Android 11", value="11"), + Choice(name="Android 13", value="13"), + Choice(name="Exit", value=None) + ], + default="11", + ).execute() + if not android_version: + exit() + args.android_version = android_version + action = inquirer.select( + message="Please select an action", + choices=[ + "Install", + "Remove", + "Hack", + ], + default=None, + ).execute() + if not action: + exit() + install_choices = ["gapps", "microg", "libndk", + "libhoudini", "magisk", "smartdock", "widevine"] + hack_choices = ["nodataperm", "hidestatusbar"] + if action == "Install": + apps = inquirer.checkbox( + message="Select apps", + instruction="([\u2191\u2193]: Select Item. [Space]: toggle choice), [Enter]: Confirm", + validate=lambda result: len(result) >= 1, + invalid_message="should be at least 1 selection", + choices=install_choices + ).execute() + microg_variants = ["Standard", "NoGoolag", + "UNLP", "Minimal", "MinimalIAP"] + if "MicroG" in apps: + microg_variant = inquirer.select( + message="Select MicroG variant", + choices=microg_variants, + default="Standard", + ).execute() + args.microg_variant = microg_variant + args.app = apps + install_app(args) + elif action == "Remove": + apps = inquirer.checkbox( + message="Select apps", + instruction="([\u2191\u2193]: Select Item. [Space]: toggle choice), [Enter]: Confirm", + validate=lambda result: len(result) >= 1, + invalid_message="should be at least 1 selection", + choices=[*install_choices, *hack_choices] + ).execute() + args.app = apps + args.microg_variant="Standard" + remove_app(args) + elif action == "Havk": + apps = inquirer.checkbox( + message="Select hack options", + instruction="([\u2191\u2193]: Select Item. [Space]: toggle choice), [Enter]: Confirm", + validate=lambda result: len(result) >= 1, + invalid_message="should be at least 1 selection", + choices=hack_choices + ).execute() + args.option_name = apps + remove_app(args) - container.upgrade() +def main(): parser = argparse.ArgumentParser(description=''' Does stuff like installing Gapps, installing Magisk, installing NDK Translation and getting Android ID for device registration. Use -h flag for help!''') @@ -231,24 +308,27 @@ widevine: Add support for widevine DRM L3 install_parser.set_defaults(func=install_app) # remove and its aliases - remove_parser = subparsers.add_parser('remove',aliases=["uninstall"], help='Remove an app') + remove_parser = subparsers.add_parser( + 'remove', aliases=["uninstall"], help='Remove an app') remove_parser.add_argument( - **arg_template, choices=[*remove_choices,* hack_choices], help='Name of app to remove') + **arg_template, choices=[*remove_choices, * hack_choices], help='Name of app to remove') remove_parser.set_defaults(func=remove_app) # hack and its aliases hack_parser = subparsers.add_parser('hack', help='Hack the system') hack_parser.add_argument( - 'option_name',nargs="+" , choices=hack_choices, help='Name of hack option') + 'option_name', nargs="+", choices=hack_choices, help='Name of hack option') hack_parser.set_defaults(func=hack_option) args = parser.parse_args() + args.microg_variant = "Standard" if hasattr(args, 'func'): args_dict = vars(args) helper.check_root() args.func(args) else: - parser.print_help() + helper.check_root() + interact() if __name__ == "__main__": diff --git a/stuffs/microg.py b/stuffs/microg.py index ea23641..5818be2 100644 --- a/stuffs/microg.py +++ b/stuffs/microg.py @@ -96,6 +96,7 @@ service microg_service /system/bin/sh /system/bin/npem "etc/init/microg.rc", "etc/permissions/com.google.android.backuptransport.xml", "etc/permissions/com.android.vending.xml", + "etc/permissions/foss-permissions.xml", "etc/permissions/com.google.android.gms.xml", "etc/permissions/com.aurora.services.xml", "etc/permissions/com.google.android.maps.xml", diff --git a/stuffs/nodataperm.py b/stuffs/nodataperm.py index d93cc40..6cb8fb1 100644 --- a/stuffs/nodataperm.py +++ b/stuffs/nodataperm.py @@ -9,8 +9,11 @@ from tools import container class Nodataperm(General): id = "nodataperm" - dl_links = {"11": ["https://github.com/ayasa520/hack_full_data_permission/archive/refs/heads/main.zip", - "eafd7b0986f3edaebaf1dd89f19d49bf"]} + dl_links = { + "11": ["https://github.com/ayasa520/hack_full_data_permission/archive/refs/heads/main.zip", + "eafd7b0986f3edaebaf1dd89f19d49bf"], + "13": ["", ""] + } dl_file_name = "nodataperm.zip" extract_to = "/tmp/nodataperm" dl_link = ...