Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26777abcaf |
@@ -105,7 +105,4 @@ venv.bak/
|
|||||||
# mypy
|
# mypy
|
||||||
.mypy_cache/
|
.mypy_cache/
|
||||||
|
|
||||||
# nix
|
|
||||||
result*
|
|
||||||
|
|
||||||
test.py
|
test.py
|
||||||
@@ -4,6 +4,20 @@ Script to add GApps and other stuff to Waydroid!
|
|||||||
|
|
||||||
# Installation/Usage
|
# Installation/Usage
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
"lzip" is required for this script to work, install it using your distribution's package manager:
|
||||||
|
### Arch, Manjaro and EndeavourOS based distributions:
|
||||||
|
sudo pacman -S lzip
|
||||||
|
### Debian and Ubuntu based distributions:
|
||||||
|
sudo apt install lzip
|
||||||
|
### RHEL, Fedora and Rocky based distributions:
|
||||||
|
sudo dnf install lzip
|
||||||
|
### openSUSE based distributions:
|
||||||
|
sudo zypper install lzip
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Interactive terminal interface
|
## Interactive terminal interface
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -39,18 +53,6 @@ sudo venv/bin/python3 main.py certified
|
|||||||
sudo venv/bin/python3 main.py hack {nodataperm, hidestatusbar}
|
sudo venv/bin/python3 main.py hack {nodataperm, hidestatusbar}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
|
|
||||||
"lzip" is required for this script to work, install it using your distribution's package manager:
|
|
||||||
### Arch, Manjaro and EndeavourOS based distributions:
|
|
||||||
sudo pacman -S lzip
|
|
||||||
### Debian and Ubuntu based distributions:
|
|
||||||
sudo apt install lzip
|
|
||||||
### RHEL, Fedora and Rocky based distributions:
|
|
||||||
sudo dnf install lzip
|
|
||||||
### openSUSE based distributions:
|
|
||||||
sudo zypper install lzip
|
|
||||||
|
|
||||||
## Install OpenGapps
|
## Install OpenGapps
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
-22
@@ -1,22 +0,0 @@
|
|||||||
with (import <nixpkgs> {});
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "waydroid_script";
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
(python3.withPackages(ps: with ps; [ tqdm requests inquirerpy ]))
|
|
||||||
];
|
|
||||||
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
patchShebangs main.py
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/libexec
|
|
||||||
cp -r . $out/libexec/waydroid_script
|
|
||||||
mkdir -p $out/bin
|
|
||||||
ln -s $out/libexec/waydroid_script/main.py $out/bin/waydroid_script
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,6 @@ from stuff.ndk import Ndk
|
|||||||
from stuff.nodataperm import Nodataperm
|
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
|
|
||||||
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
|
||||||
@@ -87,8 +86,6 @@ def install_app(args):
|
|||||||
install_list.append(MicroG(args.android_version, args.microg_variant))
|
install_list.append(MicroG(args.android_version, args.microg_variant))
|
||||||
if "mitm" in app:
|
if "mitm" in app:
|
||||||
install_list.append(Mitm(args.ca_cert_file))
|
install_list.append(Mitm(args.ca_cert_file))
|
||||||
if "fdroidpriv" in app:
|
|
||||||
install_list.append(FDroidPriv(args.android_version))
|
|
||||||
|
|
||||||
if not container.use_overlayfs():
|
if not container.use_overlayfs():
|
||||||
copy_dir = "/tmp/waydroid"
|
copy_dir = "/tmp/waydroid"
|
||||||
@@ -138,8 +135,6 @@ def remove_app(args):
|
|||||||
remove_list.append(MicroG(args.android_version, args.microg_variant))
|
remove_list.append(MicroG(args.android_version, args.microg_variant))
|
||||||
if "mitm" in app:
|
if "mitm" in app:
|
||||||
remove_list.append(Mitm())
|
remove_list.append(Mitm())
|
||||||
if "fdroidpriv" in app:
|
|
||||||
remove_list.append(FDroidPriv(args.android_version))
|
|
||||||
if "nodataperm" in app:
|
if "nodataperm" in app:
|
||||||
remove_list.append(Nodataperm(args.android_version))
|
remove_list.append(Nodataperm(args.android_version))
|
||||||
if "hidestatusbar" in app:
|
if "hidestatusbar" in app:
|
||||||
@@ -229,7 +224,7 @@ def interact():
|
|||||||
if not action:
|
if not action:
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
install_choices = ["gapps", "microg", "libndk", "magisk", "smartdock", "fdroidpriv",]
|
install_choices = ["gapps", "microg", "libndk", "magisk", "smartdock",]
|
||||||
hack_choices = []
|
hack_choices = []
|
||||||
if android_version=="11":
|
if android_version=="11":
|
||||||
install_choices.extend(["libhoudini", "widevine"])
|
install_choices.extend(["libhoudini", "widevine"])
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
from stuff.general import General
|
|
||||||
|
|
||||||
|
|
||||||
class FDroidPriv(General):
|
|
||||||
id = "fdroid priv"
|
|
||||||
dl_links = {"11": ["https://f-droid.org/repo/org.fdroid.fdroid.privileged.ota_2130.zip",
|
|
||||||
"6242cab56d197d80c598593a46da62e4"]}
|
|
||||||
partition = "system"
|
|
||||||
dl_file_name = "org.fdroid.fdroid.privileged.ota_2130.zip"
|
|
||||||
dl_link = ...
|
|
||||||
act_md5 = ...
|
|
||||||
extract_to = "/tmp/fdroid_ota_2130"
|
|
||||||
files = [
|
|
||||||
"app/F-Droid.apk"
|
|
||||||
"app/F-Droid/F-Droid.apk"
|
|
||||||
"etc/permissions/permissions_org.fdroid.fdroid.privileged.xml"
|
|
||||||
"priv-app/F-DroidPrivilegedExtension.apk"
|
|
||||||
"priv-app/F-DroidPrivilegedExtension/F-DroidPrivilegedExtension.apk"
|
|
||||||
]
|
|
||||||
file_map = {
|
|
||||||
"permissions_org.fdroid.fdroid.privileged.xml": "etc/permissions/permissions_org.fdroid.fdroid.privileged.xml",
|
|
||||||
"F-Droid.apk": "app/F-Droid/F-Droid.apk",
|
|
||||||
"F-DroidPrivilegedExtension.apk": "priv-app/F-DroidPrivilegedExtension/F-DroidPrivilegedExtension.apk",
|
|
||||||
}
|
|
||||||
def __init__(self, android_version="11") -> None:
|
|
||||||
super().__init__()
|
|
||||||
self.dl_link = self.dl_links[android_version][0]
|
|
||||||
self.act_md5 = self.dl_links[android_version][1]
|
|
||||||
|
|
||||||
def copy(self):
|
|
||||||
for f, d in self.file_map.items():
|
|
||||||
rro_file = os.path.join(
|
|
||||||
self.copy_dir, self.partition, d)
|
|
||||||
rro_dir = os.path.dirname(rro_file)
|
|
||||||
if not os.path.exists(rro_dir):
|
|
||||||
os.makedirs(rro_dir)
|
|
||||||
shutil.copyfile(os.path.join(self.extract_to, f), rro_file)
|
|
||||||
|
|
||||||
+4
-4
@@ -15,10 +15,10 @@ class Gapps(General):
|
|||||||
"armeabi-v7a": ["https://sourceforge.net/projects/opengapps/files/arm/20220215/open_gapps-arm-11.0-pico-20220215.zip", "8719519fa32ae83a62621c6056d32814"]
|
"armeabi-v7a": ["https://sourceforge.net/projects/opengapps/files/arm/20220215/open_gapps-arm-11.0-pico-20220215.zip", "8719519fa32ae83a62621c6056d32814"]
|
||||||
},
|
},
|
||||||
"13": {
|
"13": {
|
||||||
"x86_64": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86_64-20231028.zip", "63ccebbf93d45c384f58d7c40049d398"],
|
"x86_64": ["https://github.com/Howard20181/MindTheGappsBuilder/releases/download/20230323/MindTheGapps-13.0.0-x86_64-20230323.zip", "aba427be1ddd0963121c87a4eda80299"],
|
||||||
"x86": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86-20231028.zip", "f12b6a8ed14eedbb4b5b3c932a865956"],
|
"x86": ["https://github.com/Howard20181/MindTheGappsBuilder/releases/download/20230323/MindTheGapps-13.0.0-x86-20230323.zip", "f02d2f1a3f0a084f13ab4c1b58ad7554"],
|
||||||
"arm64-v8a": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm64-20231028.zip", "11180da0a5d9f2ed2863882c30a8d556"],
|
"arm64-v8a": ["https://github.com/Howard20181/MindTheGappsBuilder/releases/download/20230323/MindTheGapps-13.0.0-arm64-20230323.zip", "18484a5622eeccffcea2b43205655d8a"],
|
||||||
"armeabi-v7a": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm-20231028.zip", "d525c980bac427844aa4cb01628f8a8f"]
|
"armeabi-v7a": ["https://github.com/Howard20181/MindTheGappsBuilder/releases/download/20230323/MindTheGapps-13.0.0-arm-20230323.zip", "e4c00a7eb1e4dfca0fc6a3e447710264"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
android_version = ...
|
android_version = ...
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ class Houdini(General):
|
|||||||
extract_to = "/tmp/houdiniunpack"
|
extract_to = "/tmp/houdiniunpack"
|
||||||
init_rc_component = """
|
init_rc_component = """
|
||||||
on early-init
|
on early-init
|
||||||
mount binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
|
mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
|
||||||
|
|
||||||
on property:ro.enable.native.bridge.exec=1
|
on property:ro.enable.native.bridge.exec=1
|
||||||
exec -- /system/bin/sh -c "echo ':arm_exe:M::\\\\x7f\\\\x45\\\\x4c\\\\x46\\\\x01\\\\x01\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x02\\\\x00\\\\x28::/system/bin/houdini:P' > /proc/sys/fs/binfmt_misc/register"
|
exec -- /system/bin/sh -c "echo ':arm_exe:M::\\\\x7f\\\\x45\\\\x4c\\\\x46\\\\x01\\\\x01\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x02\\\\x00\\\\x28::/system/bin/houdini:P' > /proc/sys/fs/binfmt_misc/register"
|
||||||
|
|||||||
+17
-15
@@ -10,7 +10,7 @@ from tools import container
|
|||||||
class Magisk(General):
|
class Magisk(General):
|
||||||
id = "magisk delta"
|
id = "magisk delta"
|
||||||
partition = "system"
|
partition = "system"
|
||||||
dl_link = "https://github.com/mistrmochov/magiskdeltaorig/raw/main/app-release.apk"
|
dl_link = "https://huskydg.github.io/magisk-files/app-debug.apk"
|
||||||
dl_file_name = "magisk.apk"
|
dl_file_name = "magisk.apk"
|
||||||
extract_to = "/tmp/magisk_unpack"
|
extract_to = "/tmp/magisk_unpack"
|
||||||
magisk_dir = os.path.join(partition, "etc", "init", "magisk")
|
magisk_dir = os.path.join(partition, "etc", "init", "magisk")
|
||||||
@@ -29,28 +29,30 @@ service bootanim /system/bin/bootanimation
|
|||||||
bootanim_component = f"""
|
bootanim_component = f"""
|
||||||
on post-fs-data
|
on post-fs-data
|
||||||
start logd
|
start logd
|
||||||
exec u:r:su:s0 root root -- /system/etc/init/magisk/magiskpolicy --live --magisk
|
exec u:r:su:s0 root root -- /system/etc/init/magisk/magisk{host()[1]} --auto-selinux --setup-sbin /system/etc/init/magisk
|
||||||
exec u:r:magisk:s0 root root -- /system/etc/init/magisk/magiskpolicy --live --magisk
|
exec u:r:su:s0 root root -- /system/etc/init/magisk/magiskpolicy --live --magisk "allow * magisk_file lnk_file *"
|
||||||
exec u:r:update_engine:s0 root root -- /system/etc/init/magisk/magiskpolicy --live --magisk
|
mkdir /sbin/.magisk 700
|
||||||
mkdir /dev/magisk_iqeoVo2mDrO 700
|
mkdir /sbin/.magisk/mirror 700
|
||||||
exec u:r:su:s0 root root -- /system/etc/init/magisk/magisk64 --auto-selinux --setup-sbin /system/etc/init/magisk /dev/magisk_iqeoVo2mDrO
|
mkdir /sbin/.magisk/block 700
|
||||||
exec u:r:su:s0 root root -- /dev/magisk_iqeoVo2mDrO/magisk --auto-selinux --post-fs-data
|
copy /system/etc/init/magisk/config /sbin/.magisk/config
|
||||||
|
rm /dev/.magisk_unblock
|
||||||
|
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --post-fs-data
|
||||||
|
wait /dev/.magisk_unblock 40
|
||||||
|
rm /dev/.magisk_unblock
|
||||||
|
|
||||||
on nonencrypted
|
on zygote-start
|
||||||
exec u:r:su:s0 root root -- /dev/magisk_iqeoVo2mDrO/magisk --auto-selinux --service
|
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --service
|
||||||
|
|
||||||
on property:vold.decrypt=trigger_restart_framework
|
|
||||||
exec u:r:su:s0 root root -- /dev/magisk_iqeoVo2mDrO/magisk --auto-selinux --service
|
|
||||||
|
|
||||||
on property:sys.boot_completed=1
|
on property:sys.boot_completed=1
|
||||||
mkdir /data/adb/magisk 755
|
mkdir /data/adb/magisk 755
|
||||||
exec u:r:su:s0 root root -- /dev/magisk_iqeoVo2mDrO/magisk --auto-selinux --boot-complete
|
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --boot-complete
|
||||||
|
exec -- /system/bin/sh -c "if [ ! -e /data/data/io.github.huskydg.magisk ] ; then pm install /system/etc/init/magisk/magisk.apk ; fi"
|
||||||
|
|
||||||
on property:init.svc.zygote=restarting
|
on property:init.svc.zygote=restarting
|
||||||
exec u:r:su:s0 root root -- /dev/magisk_iqeoVo2mDrO/magisk --auto-selinux --zygote-restart
|
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart
|
||||||
|
|
||||||
on property:init.svc.zygote=stopped
|
on property:init.svc.zygote=stopped
|
||||||
exec u:r:su:s0 root root -- /dev/magisk_iqeoVo2mDrO/magisk --auto-selinux --zygote-restart
|
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def download(self):
|
def download(self):
|
||||||
|
|||||||
+5
-5
@@ -4,10 +4,10 @@ from stuff.general import General
|
|||||||
|
|
||||||
class Smartdock(General):
|
class Smartdock(General):
|
||||||
id = "smartdock"
|
id = "smartdock"
|
||||||
dl_link = "https://f-droid.org/repo/cu.axel.smartdock_1121.apk"
|
dl_link = "https://f-droid.org/repo/cu.axel.smartdock_1100.apk"
|
||||||
partition = "system"
|
partition = "system"
|
||||||
dl_file_name = "smartdock.apk"
|
dl_file_name = "smartdock.apk"
|
||||||
act_md5 = "dde94e2babc5f78bf7279e60a98eef05"
|
act_md5 = "f4087d34218eac902a5cca98ee03d215"
|
||||||
apply_props = { "qemu.hw.mainkeys" : "1" }
|
apply_props = { "qemu.hw.mainkeys" : "1" }
|
||||||
skip_extract = True
|
skip_extract = True
|
||||||
permissions = """<?xml version="1.0" encoding="utf-8"?>
|
permissions = """<?xml version="1.0" encoding="utf-8"?>
|
||||||
@@ -16,20 +16,20 @@ class Smartdock(General):
|
|||||||
<permission name="android.permission.SYSTEM_ALERT_WINDOW" />
|
<permission name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
<permission name="android.permission.GET_TASKS"/>
|
<permission name="android.permission.GET_TASKS"/>
|
||||||
<permission name="android.permission.REORDER_TASKS"/>
|
<permission name="android.permission.REORDER_TASKS"/>
|
||||||
|
<permission name="android.permission.REMOVE_TASKS" />
|
||||||
<permission name="android.permission.ACCESS_WIFI_STATE"/>
|
<permission name="android.permission.ACCESS_WIFI_STATE"/>
|
||||||
<permission name="android.permission.CHANGE_WIFI_STATE"/>
|
<permission name="android.permission.CHANGE_WIFI_STATE"/>
|
||||||
<permission name="android.permission.ACCESS_NETWORK_STATE"/>
|
<permission name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
|
<permission name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
<permission name="android.permission.READ_EXTERNAL_STORAGE"/>
|
<permission name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
<permission name="android.permission.MANAGE_USERS"/>
|
<permission name="android.permission.MANAGE_USERS"/>
|
||||||
<permission name="android.permission.BLUETOOTH_ADMIN"/>
|
<permission name="android.permission.BLUETOOTH_ADMIN"/>
|
||||||
<permission name="android.permission.BLUETOOTH" />
|
|
||||||
<permission name="android.permission.BLUETOOTH_CONNECT"/>
|
<permission name="android.permission.BLUETOOTH_CONNECT"/>
|
||||||
|
<permission name="android.permission.BLUETOOTH"/>
|
||||||
<permission name="android.permission.REQUEST_DELETE_PACKAGES"/>
|
<permission name="android.permission.REQUEST_DELETE_PACKAGES"/>
|
||||||
<permission name="android.permission.ACCESS_SUPERUSER"/>
|
<permission name="android.permission.ACCESS_SUPERUSER"/>
|
||||||
<permission name="android.permission.PACKAGE_USAGE_STATS" />
|
<permission name="android.permission.PACKAGE_USAGE_STATS" />
|
||||||
<permission name="android.permission.QUERY_ALL_PACKAGES" />
|
<permission name="android.permission.QUERY_ALL_PACKAGES" />
|
||||||
<permission name="android.permission.WRITE_SECURE_SETTINGS" />
|
|
||||||
<permission name="android.permission.WRITE_SETTINGS" />
|
|
||||||
</privapp-permissions>
|
</privapp-permissions>
|
||||||
</permissions>
|
</permissions>
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user