Compare commits

..
Author SHA1 Message Date
TannerSchultz2006 ba51ccaee4 Fixed spelling in error messages 2024-05-18 22:27:45 -05:00
9 changed files with 16 additions and 249 deletions
+1 -1
View File
@@ -166,7 +166,7 @@ chmod 777 -R /mnt/*/*/*/*/Android/obb
![](assets/7.png) ![](assets/7.png)
``` ```
sudo venv/bin/python3 main.py install microg sudo python main.py install microg
``` ```
## Hide Status Bar ## Hide Status Bar
+6 -29
View File
@@ -18,7 +18,6 @@ from stuff.nodataperm import Nodataperm
from stuff.smartdock import Smartdock from stuff.smartdock import Smartdock
from stuff.widevine import Widevine from stuff.widevine import Widevine
from stuff.fdroidpriv import FDroidPriv from stuff.fdroidpriv import FDroidPriv
from stuff.gps import GPS
import tools.helper as helper import tools.helper as helper
from tools import container from tools import container
from tools import images from tools import images
@@ -90,8 +89,6 @@ def install_app(args):
install_list.append(Mitm(args.ca_cert_file)) install_list.append(Mitm(args.ca_cert_file))
if "fdroidpriv" in app: if "fdroidpriv" in app:
install_list.append(FDroidPriv(args.android_version)) install_list.append(FDroidPriv(args.android_version))
if "gps" in app:
install_list.append(GPS(args.android_version, args.gps_host, args.baud_rate))
if not container.use_overlayfs(): if not container.use_overlayfs():
copy_dir = "/tmp/waydroid" copy_dir = "/tmp/waydroid"
@@ -118,7 +115,8 @@ def install_app(args):
if not container.use_overlayfs(): if not container.use_overlayfs():
umount("vendor", copy_dir) umount("vendor", copy_dir)
umount("system", copy_dir) umount("system", copy_dir)
container.upgrade()
container.upgrade()
def remove_app(args): def remove_app(args):
@@ -146,8 +144,6 @@ def remove_app(args):
remove_list.append(Nodataperm(args.android_version)) remove_list.append(Nodataperm(args.android_version))
if "hidestatusbar" in app: if "hidestatusbar" in app:
remove_list.append(HideStatusBar()) remove_list.append(HideStatusBar())
if "gps" in app:
remove_list.append(GPS())
if not container.use_overlayfs(): if not container.use_overlayfs():
copy_dir = "/tmp/waydroid" copy_dir = "/tmp/waydroid"
@@ -173,7 +169,6 @@ def hack_option(args):
hack_list.append(Nodataperm()) hack_list.append(Nodataperm())
if "hidestatusbar" in options: if "hidestatusbar" in options:
hack_list.append(HideStatusBar()) hack_list.append(HideStatusBar())
if not container.use_overlayfs(): if not container.use_overlayfs():
copy_dir = "/tmp/waydroid" copy_dir = "/tmp/waydroid"
@@ -215,7 +210,7 @@ def interact():
Choice(name="Android 13", value="13"), Choice(name="Android 13", value="13"),
Choice(name="Exit", value=None) Choice(name="Exit", value=None)
], ],
default="13", default="11",
).execute() ).execute()
if not android_version: if not android_version:
exit() exit()
@@ -234,12 +229,10 @@ def interact():
if not action: if not action:
exit() exit()
install_choices = ["gapps", "microg", "libndk", "magisk", "smartdock", "fdroidpriv",]
install_choices = ["gapps", "microg", "libndk", "libhoudini", "magisk", "smartdock", "fdroidpriv", "widevine", "gps",]
baud_rate_choices = ["9600", "19200", "38400", "57600", "115200"]
hack_choices = [] hack_choices = []
if android_version=="11": if android_version=="11":
install_choices.extend(["libhoudini", "widevine"])
hack_choices.extend(["nodataperm", "hidestatusbar"]) hack_choices.extend(["nodataperm", "hidestatusbar"])
if action == "Install": if action == "Install":
@@ -259,20 +252,6 @@ def interact():
default="Standard", default="Standard",
).execute() ).execute()
args.microg_variant = microg_variant args.microg_variant = microg_variant
if "gps" in apps:
gps_host = inquirer.text(
message="Enter GPS host (default: /dev/ttyGPSD)",
default="/dev/ttyGPSD",
).execute()
args.gps_host = gps_host
baud_rate = inquirer.select(
message="Enter baud rate (default: 9600)",
instruction="([\u2191\u2193]: [Enter]: Confirm",
default="9600",
choices=baud_rate_choices
).execute()
args.baud_rate = baud_rate
args.app = apps args.app = apps
install_app(args) install_app(args)
elif action == "Remove": elif action == "Remove":
@@ -309,7 +288,7 @@ def main():
parser.add_argument('-a', '--android-version', parser.add_argument('-a', '--android-version',
dest='android_version', dest='android_version',
help='Specify the Android version', help='Specify the Android version',
default="13", default="11",
choices=["11", "13"]) choices=["11", "13"])
# android command # android command
@@ -366,8 +345,6 @@ widevine: Add support for widevine DRM L3
args = parser.parse_args() args = parser.parse_args()
args.microg_variant = "Standard" args.microg_variant = "Standard"
args.gps_host = "/dev/ttyGPSD"
args.baud_rate = "9600"
if hasattr(args, 'func'): if hasattr(args, 'func'):
args_dict = vars(args) args_dict = vars(args)
helper.check_root() helper.check_root()
-2
View File
@@ -6,8 +6,6 @@ from stuff.general import General
class FDroidPriv(General): class FDroidPriv(General):
id = "fdroid priv" id = "fdroid priv"
dl_links = {"11": ["https://f-droid.org/repo/org.fdroid.fdroid.privileged.ota_2130.zip", dl_links = {"11": ["https://f-droid.org/repo/org.fdroid.fdroid.privileged.ota_2130.zip",
"6242cab56d197d80c598593a46da62e4"],
"13": ["https://f-droid.org/repo/org.fdroid.fdroid.privileged.ota_2130.zip",
"6242cab56d197d80c598593a46da62e4"]} "6242cab56d197d80c598593a46da62e4"]}
partition = "system" partition = "system"
dl_file_name = "org.fdroid.fdroid.privileged.ota_2130.zip" dl_file_name = "org.fdroid.fdroid.privileged.ota_2130.zip"
-197
View File
@@ -1,197 +0,0 @@
import os
from xml.dom import minidom
import xml.etree.ElementTree as ET
import shutil
from stuff.general import General
from tools.logger import Logger
import tools.images as images
from tools.helper import run, host
from tools import container
class GPS(General):
id = "gps"
partition = "vendor"
dl_links = ["https://github.com/Lolmc0587/android_gps_libraries/archive/refs/tags/2.1.zip","f84c369c7cebd9dbb8987ca15c6aa856"]
act_md5 = ...
dl_link = ...
dl_file_name = "android_gps_libraries-2.1.zip"
extract_to = "/tmp/android_gps_libraries-2.1"
files = [
"lib/hw/android.hardware.gnss@1.0-impl.so",
"lib64/hw/android.hardware.gnss@1.0-impl.so",
"lib/hw/gps.default.so",
"lib64/hw/gps.default.so",
"etc/init/android.hardware.gnss@1.0-service.rc",
]
def __init__(self, android_version="11", gps_host="/dev/ttyGPSD", baud_rate=9600) -> None:
super().__init__()
self.host_arch = host()
# Set for arm 32 bit support from file downloaded
self.host = "arm64-v8a" if "arm" in self.host_arch[0] else self.host_arch[0]
self.gps_host = gps_host
self.baud_rate = baud_rate
self.android_version = android_version
self.usb_name = self.gps_host.replace("/dev/", "")
self.files_vendor = [
"bin/hw/android.hardware.gnss@1.0-service",
]
self.config_files = {
"11": [
"etc/vintf/compatibility_matrix.legacy.xml",
"etc/vintf/manifest.xml",
"build.prop",
],
"13": [
"etc/vintf/compatibility_matrix.7.xml",
"etc/vintf/manifest.xml",
"build.prop",
],
}
self.compatibility_files = {
"11": "etc/vintf/compatibility_matrix.legacy.xml",
"13": "etc/vintf/compatibility_matrix.7.xml",
}
self.dl_link = self.dl_links[0]
self.act_md5 = self.dl_links[1]
def update_manifest(self, manifest_path, data):
"""
Update the manifest file by inserting data into the <manifest> tag and format the XML.
"""
tree = ET.parse(manifest_path)
root = tree.getroot()
root.append(ET.fromstring(data))
tree.write(manifest_path, encoding="utf-8", xml_declaration=True)
with open(manifest_path, "r") as f:
content = f.read()
formatted_content = minidom.parseString(content).toprettyxml(indent=" ")
formatted_content = "\n".join(
[line for line in formatted_content.split("\n") if line.strip()]
)
with open(manifest_path, "w") as f:
f.write(formatted_content)
def copy(self):
Logger.info("Copying gps library files ...")
if self.android_version == "11":
shutil.copytree(os.path.join(self.extract_to, self.dl_file_name.replace(".zip", ""), self.android_version,
self.host, "system"), os.path.join(self.copy_dir, "system"), dirs_exist_ok=True)
self.partition = "system"
if self.android_version == "13":
shutil.copytree(os.path.join(self.extract_to, self.dl_file_name.replace(".zip", ""), self.android_version,
self.host, "system"), os.path.join(self.copy_dir, "vendor"), dirs_exist_ok=True)
self.partition = "vendor"
shutil.copytree(os.path.join(self.extract_to, self.dl_file_name.replace(".zip", ""), self.android_version,
self.host, "vendor"), os.path.join(self.copy_dir, "vendor"), dirs_exist_ok=True)
def extra1(self):
Logger.info("Setting extra permissions ...")
# set permissions for vendor files
path = os.path.join(self.copy_dir, "vendor", self.files_vendor[0])
self.set_perm2(path, recursive=True)
# Copy nessessary files to the overlayfs
container.stop()
copy_dir = "/tmp/waydroid"
if container.use_overlayfs():
img = os.path.join(images.get_image_dir(), "system.img")
# images.mount(img, copy_dir)
if not os.path.exists(copy_dir):
os.makedirs(copy_dir)
run(["sudo", "mount", img, copy_dir])
for file in self.config_files[self.android_version]:
file_dir = os.path.join(self.copy_dir, "system", file)
if not os.path.exists(os.path.dirname(file_dir)):
os.makedirs(os.path.dirname(file_dir))
shutil.copyfile(os.path.join(copy_dir, "system", file), file_dir)
self.set_perm2(file_dir, recursive=True)
if self.android_version == "13":
# Copy missing libraries file for android 13 vendor partition from system partition
if not os.path.exists(os.path.join(self.copy_dir, "vendor", "lib64", "hw")):
os.makedirs(os.path.join(self.copy_dir, "vendor", "lib64", "hw"))
copy_ = True
if "arm" in self.host and self.host_arch[1] == 32:
copy_ = False
if copy_:
shutil.copyfile(os.path.join(copy_dir, "system", "lib64/android.hardware.gnss@1.0.so"),
os.path.join(self.copy_dir, "vendor", "lib64/hw/android.hardware.gnss@1.0.so"))
if not os.path.exists(os.path.join(self.copy_dir, "vendor", "lib", "hw")):
os.makedirs(os.path.join(self.copy_dir, "vendor", "lib", "hw"))
shutil.copyfile(os.path.join(copy_dir, "system", "lib/android.hardware.gnss@1.0.so"),
os.path.join(self.copy_dir, "vendor", "lib/hw/android.hardware.gnss@1.0.so"))
images.umount(copy_dir)
# Update manifest files
container.upgrade()
manifest_entry_1 = """
<hal format="hidl" optional="true">
<name>android.hardware.gnss</name>
<version>1.0</version>
<interface>
<name>IGnss</name>
<instance>default</instance>
</interface>
</hal>
"""
self.update_manifest(
os.path.join(self.copy_dir, "system", self.compatibility_files[self.android_version]),
data=manifest_entry_1,
)
manifest_entry_2 = """
<hal format="hidl">
<name>android.hardware.gnss</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IGnss</name>
<instance>default</instance>
</interface>
<fqname>@1.0::IGnss/default</fqname>
</hal>
"""
self.update_manifest(os.path.join(self.copy_dir, "system", "etc", "vintf", "manifest.xml"), data=manifest_entry_2)
config_nodes = "/var/lib/waydroid/lxc/waydroid/config_nodes"
# lxc.mount.entry = /dev/ttyGPSD dev/ttyGPSD none bind,create=file,optional 0 0
with open(config_nodes, "a") as f:
f.write(f"lxc.mount.entry = {self.gps_host} dev/{self.usb_name} none bind,create=file,optional 0 0\n")
with open(os.path.join(self.copy_dir, "system", "build.prop"), "a") as f:
f.write("ro.factory.hasGPS=true\n")
f.write(f"ro.kernel.android.gps={self.usb_name}\n")
f.write(f"ro.kernel.android.gps.speed={self.baud_rate}\n")
Logger.warning(
"You need to add user to the 'dialout' group to access the GPS device."
"\nYou can do this by running: sudo usermod -aG dialout <your_username>"
"\nand then reboot your system."
)
def extra2(self):
# Remove vendor files from system partition
self.files = self.files_vendor
self.partition = "vendor"
self.remove()
# Remove config files from system partition
self.files = self.config_files[self.android_version]
self.partition = "system"
self.remove()
container.upgrade()
+1 -1
View File
@@ -10,7 +10,7 @@ class Houdini(General):
partition = "system" partition = "system"
dl_links = { dl_links = {
"11": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/81f2a51ef539a35aead396ab7fce2adf89f46e88.zip", "fbff756612b4144797fbc99eadcb6653"], "11": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/81f2a51ef539a35aead396ab7fce2adf89f46e88.zip", "fbff756612b4144797fbc99eadcb6653"],
"13": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/7e21ea3f63bd89e9e8af54e32da41bd8b65c93a1.zip", "f8cf5db10e5fdb9b77e98e515a9b08c9"] # "13": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/978d8cba061a08837b7e520cd03b635af643ba08.zip", "1e139054c05034648fae58a1810573b4"]
} }
act_md5 = ... act_md5 = ...
dl_link = ... dl_link = ...
+3 -3
View File
@@ -9,12 +9,12 @@ class Ndk(General):
partition = "system" partition = "system"
dl_links = { dl_links = {
"11": ["https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/9324a8914b649b885dad6f2bfd14a67e5d1520bf.zip", "c9572672d1045594448068079b34c350"], "11": ["https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/9324a8914b649b885dad6f2bfd14a67e5d1520bf.zip", "c9572672d1045594448068079b34c350"],
"13": ["https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/68734c52556d3d7a6db34c603dd9276915c29f2f.zip", "0b2207c490fcb400aa5c87fcf0d52d38"] "13": ["https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/a090003c60df53a9eadb2df09bd4fd2fa86ea629.zip", "e6f0d9fc28ebc427b59a3942a9a4ffc0"]
} }
dl_file_name = "libndktranslation.zip" dl_file_name = "libndktranslation.zip"
extract_to = "/tmp/libndkunpack" extract_to = "/tmp/libndkunpack"
apply_props = { apply_props = {
"ro.product.cpu.abilist": "x86_64,x86,arm64-v8a,armeabi-v7a,armeabi", "ro.product.cpu.abilist": "x86_64,x86,armeabi-v7a,armeabi,arm64-v8a",
"ro.product.cpu.abilist32": "x86,armeabi-v7a,armeabi", "ro.product.cpu.abilist32": "x86,armeabi-v7a,armeabi",
"ro.product.cpu.abilist64": "x86_64,arm64-v8a", "ro.product.cpu.abilist64": "x86_64,arm64-v8a",
"ro.dalvik.vm.native.bridge": "libndk_translation.so", "ro.dalvik.vm.native.bridge": "libndk_translation.so",
@@ -49,4 +49,4 @@ class Ndk(General):
Logger.info("Copying libndk library files ...") Logger.info("Copying libndk library files ...")
name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0] name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0]
shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_ndk_translation-prebuilt-" + name, shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_ndk_translation-prebuilt-" + name,
"prebuilts"), os.path.join(self.copy_dir, self.partition), dirs_exist_ok=True) "prebuilts"), os.path.join(self.copy_dir, self.partition), dirs_exist_ok=True)
+2 -13
View File
@@ -13,8 +13,8 @@ class Widevine(General):
"x86_64": { "x86_64": {
"11": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/48d1076a570837be6cdce8252d5d143363e37cc1.zip", "11": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/48d1076a570837be6cdce8252d5d143363e37cc1.zip",
"f587b8859f9071da4bca6cea1b9bed6a"], "f587b8859f9071da4bca6cea1b9bed6a"],
"13": ["https://github.com/WayDroid-ATV/vendor_google_proprietary_widevine-prebuilt/archive/679552343d8b2e8d7a19b6df61c7a03963d0c75b.zip", "13": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a8524d608431573ef1c9313822d271f78728f9a6.zip",
"80ab79ea85c7b2556baedb371a54e01c"] "5c55df61da5c012b4e43746547ab730f"]
}, },
# "armeabi-v7a": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a1a19361d36311bee042da8cf4ced798d2c76d98.zip", "fed6898b5cfd2a908cb134df97802554"], # "armeabi-v7a": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a1a19361d36311bee042da8cf4ced798d2c76d98.zip", "fed6898b5cfd2a908cb134df97802554"],
"arm64-v8a": { "arm64-v8a": {
@@ -30,10 +30,7 @@ class Widevine(General):
"etc/init/*widevine.rc", "etc/init/*widevine.rc",
"etc/vintf/manifest/*widevine.xml", "etc/vintf/manifest/*widevine.xml",
"lib/libwvhidl.so", "lib/libwvhidl.so",
"lib/libwvaidl.so",
"lib/mediadrm", "lib/mediadrm",
"lib64/libwvhidl.so",
"lib64/libwvaidl.so",
"lib64/mediadrm" "lib64/mediadrm"
] ]
@@ -41,17 +38,9 @@ class Widevine(General):
super().__init__() super().__init__()
self.dl_link = self.dl_links[self.arch[0]][android_version][0] self.dl_link = self.dl_links[self.arch[0]][android_version][0]
self.act_md5 = self.dl_links[self.arch[0]][android_version][1] self.act_md5 = self.dl_links[self.arch[0]][android_version][1]
self.android_version = android_version
self.libdir = "lib64" if self.arch[1] == 64 else "lib"
def copy(self): def copy(self):
name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0] name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0]
Logger.info("Copying widevine library files ...") Logger.info("Copying widevine library files ...")
shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_widevine-prebuilt-"+name, shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_widevine-prebuilt-"+name,
"prebuilts"), os.path.join(self.copy_dir, self.partition), dirs_exist_ok=True) "prebuilts"), os.path.join(self.copy_dir, self.partition), dirs_exist_ok=True)
if self.android_version == "13":
try:
os.symlink("libprotobuf-cpp-lite-3.9.1.so",
os.path.join(self.copy_dir, self.partition, self.libdir, "libprotobuf-cpp-lite.so"))
except FileExistsError:
pass
+2 -2
View File
@@ -22,7 +22,7 @@ def use_overlayfs():
cfg = configparser.ConfigParser() cfg = configparser.ConfigParser()
cfg_file = os.environ.get("WAYDROID_CONFIG", "/var/lib/waydroid/waydroid.cfg") cfg_file = os.environ.get("WAYDROID_CONFIG", "/var/lib/waydroid/waydroid.cfg")
if not os.path.isfile(cfg_file): if not os.path.isfile(cfg_file):
Logger.error("Cannot locate waydroid config file, reinit wayland and try again!") Logger.error("Cannot locate waydroid config file, reinit waydroid and try again!")
sys.exit(1) sys.exit(1)
cfg.read(cfg_file) cfg.read(cfg_file)
if "waydroid" not in cfg: if "waydroid" not in cfg:
@@ -50,4 +50,4 @@ def is_running():
return "Session:\tRUNNING" in run(["waydroid", "status"]).stdout.decode() return "Session:\tRUNNING" in run(["waydroid", "status"]).stdout.decode()
def upgrade(): def upgrade():
run(["waydroid", "upgrade", "-o"], ignore=r"\[.*\] Stopping container\n\[.*\] Starting container") run(["waydroid", "upgrade", "-o"], ignore=r"\[.*\] Stopping container\n\[.*\] Starting container")
+1 -1
View File
@@ -32,7 +32,7 @@ def get_image_dir():
cfg = configparser.ConfigParser() cfg = configparser.ConfigParser()
cfg_file = os.environ.get("WAYDROID_CONFIG", "/var/lib/waydroid/waydroid.cfg") cfg_file = os.environ.get("WAYDROID_CONFIG", "/var/lib/waydroid/waydroid.cfg")
if not os.path.isfile(cfg_file): if not os.path.isfile(cfg_file):
Logger.error("Cannot locate waydroid config file, reinit wayland and try again!") Logger.error("Cannot locate waydroid config file, reinit waydroid and try again!")
sys.exit(1) sys.exit(1)
cfg.read(cfg_file) cfg.read(cfg_file)
if "waydroid" not in cfg: if "waydroid" not in cfg: