install smart dock

pull/70/head
Rikka 2 years ago committed by Rikka
parent 0abfc4ef4b
commit 59ad317684
No known key found for this signature in database
GPG Key ID: CD36B07FA9F7D2AA

1
.gitignore vendored

@ -104,3 +104,4 @@ venv.bak/
# mypy # mypy
.mypy_cache/ .mypy_cache/
test.py

@ -5,59 +5,75 @@ from stuffs.gapps import Gapps
from stuffs.houdini import Houdini from stuffs.houdini import Houdini
from stuffs.magisk import Magisk from stuffs.magisk import Magisk
from stuffs.ndk import Ndk from stuffs.ndk import Ndk
from stuffs.smartdock import Smartdock
from stuffs.widevine import Widevine from stuffs.widevine import Widevine
import tools.helper as helper import tools.helper as helper
def install(*args):
if "gapps" in args:
def main():
about = """
WayDroid Helper script v0.3
Does stuff like installing Gapps, Installing NDK Translation and getting Android ID for device registration.
Use -h flag for help !
"""
parser = argparse.ArgumentParser(description=about, formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-g', '--install-gapps',
dest='gapps',
help='Install OpenGapps to waydroid',
action='store_true')
parser.add_argument('-n', '--install-ndk-translation',
dest='ndk',
help='Install libndk translation for arm translation',
action='store_true')
parser.add_argument('-i', '--get-android-id', dest='getid',
help='Displays your android id for manual registration',
action='store_true')
parser.add_argument('-m', '--install-magisk', dest='magisk',
help='Attempts to install Magisk ( Bootless )',
action='store_true')
parser.add_argument('-l', '--install-libhoudini', dest='houdini',
help='Install libhoudini for arm translation',
action='store_true')
parser.add_argument('-w', '--install-widevine', dest='widevine',
help='Integrate Widevine DRM (L3)',
action='store_true')
args = parser.parse_args()
helper.check_root()
if args.getid:
Android_id().get_id()
if args.gapps:
Gapps().install() Gapps().install()
if args.ndk and not args.houdini: if "libndk" in args and "houdini" not in args:
arch = helper.host()[0] arch = helper.host()[0]
if arch == "x86_64": if arch == "x86_64":
Ndk().install() Ndk().install()
else: else:
Logger.warn("libndk is not supported on your CPU") Logger.warn("libndk is not supported on your CPU")
if args.houdini and not args.ndk: if "libhoudini" in args and "ndk" not in args:
arch = helper.host()[0] arch = helper.host()[0]
if arch == "x86_64": if arch == "x86_64":
Houdini().install() Houdini().install()
else: else:
Logger.warn("libhoudini is not supported on your CPU") Logger.warn("libhoudini is not supported on your CPU")
if args.magisk: if "magisk" in args:
Magisk().install() Magisk().install()
if args.widevine: if "widevine" in args:
Widevine().install() Widevine().install()
if "smartdock" in args :
Smartdock().install()
def uninstall(*args):
pass
def main():
about = """
WayDroid Helper script v0.3
Does stuff like installing Gapps, installing Magisk, installing NDK Translation and getting Android ID for device registration.
Use -h flag for help!
"""
helper.check_root()
parser = argparse.ArgumentParser(prog=about)
parser.set_defaults(app="")
subparsers = parser.add_subparsers(title="subcommands", help="operations")
google_id_parser=subparsers.add_parser('google',
help='grab device id for unblocking Google Apps')
google_id_parser.set_defaults(func=Android_id().get_id)
# create the parser for the "a" command
arg_template = {
"dest": "app",
"type": str,
"nargs": '+',
"choices": ["gapps", "libndk","libhoudini","magisk", "smartdock","widevine"],
}
install_parser = subparsers.add_parser("install", help='install something')
install_parser.set_defaults(func=install)
install_parser.add_argument(**arg_template)
uninstall_parser = subparsers.add_parser("uninstall", help='uninstall something')
uninstall_parser.set_defaults(func=uninstall)
uninstall_parser.add_argument(**arg_template)
args = parser.parse_args()
if args.app:
args.func(*args.app)
else:
args.func()
if __name__ == "__main__": if __name__ == "__main__":
main() main()

@ -15,4 +15,4 @@ class Android_id:
queryout = run(["sqlite3", "/var/lib/waydroid/data/data/com.google.android.gsf/databases/gservices.db", sqs.strip()]) queryout = run(["sqlite3", "/var/lib/waydroid/data/data/com.google.android.gsf/databases/gservices.db", sqs.strip()])
print(queryout.stdout.decode().replace("android_id|", "").strip()) print(queryout.stdout.decode().replace("android_id|", "").strip())
print(" ^----- Open https://google.com/android/uncertified/?pli=1") print(" ^----- Open https://google.com/android/uncertified/?pli=1")
print(" Login with your google id then submit the form with id shown above") print(" Login with your google id then submit the form with id shown above")

@ -27,10 +27,6 @@ class Gapps(General):
"setupwizardtablet-x86_64.tar.lz" "setupwizardtablet-x86_64.tar.lz"
] ]
def download(self):
Logger.info("Downloading OpenGapps now to {} .....".format(self.download_loc))
super().download()
def copy(self): def copy(self):
if not os.path.exists(self.extract_to): if not os.path.exists(self.extract_to):
os.makedirs(self.extract_to) os.makedirs(self.extract_to)
@ -56,4 +52,4 @@ class Gapps(General):
app_name = os.listdir(os.path.join(self.extract_to, "appunpack"))[0] app_name = os.listdir(os.path.join(self.extract_to, "appunpack"))[0]
common_content_dirs = os.listdir(os.path.join(self.extract_to, "appunpack", app_name, "common")) common_content_dirs = os.listdir(os.path.join(self.extract_to, "appunpack", app_name, "common"))
for ccdir in common_content_dirs: for ccdir in common_content_dirs:
shutil.copytree(os.path.join(self.extract_to, "appunpack", app_name, "common", ccdir), os.path.join(self.copy_dir, self.partition, ccdir), dirs_exist_ok=True) shutil.copytree(os.path.join(self.extract_to, "appunpack", app_name, "common", ccdir), os.path.join(self.copy_dir, self.partition, ccdir), dirs_exist_ok=True)

@ -9,6 +9,10 @@ from tools.container import DBusContainerService
from tools.logger import Logger from tools.logger import Logger
class General: class General:
@property
def skip_extract(self):
return False
@property @property
def download_loc(self): def download_loc(self):
return os.path.join(get_download_dir(), self.dl_file_name) return os.path.join(get_download_dir(), self.dl_file_name)
@ -37,6 +41,7 @@ class General:
return False return False
def download(self): def download(self):
Logger.info("Downloading {} now to {} .....".format(self.dl_file_name, self.download_loc))
loc_md5 = "" loc_md5 = ""
if os.path.isfile(self.download_loc): if os.path.isfile(self.download_loc):
with open(self.download_loc, "rb") as f: with open(self.download_loc, "rb") as f:
@ -113,21 +118,28 @@ class General:
def copy(self): def copy(self):
pass pass
def extra(self):
pass
def install(self): def install(self):
if self.use_overlayfs: if self.use_overlayfs:
self.download() self.download()
self.extract() if not self.skip_extract:
self.extract()
self.copy() self.copy()
self.extra()
if hasattr(self, "apply_props"): if hasattr(self, "apply_props"):
self.add_props() self.add_props()
self.restart() self.restart()
else: else:
self.stop() self.stop()
self.download() self.download()
self.extract() if not self.skip_extract:
self.extract()
self.resize() self.resize()
self.mount() self.mount()
self.copy() self.copy()
self.extra()
if hasattr(self, "apply_props"): if hasattr(self, "apply_props"):
self.add_props() self.add_props()
self.umount() self.umount()

@ -32,10 +32,6 @@ on property:ro.enable.native.bridge.exec=1
"ro.dalvik.vm.isa.arm64": "x86_64" "ro.dalvik.vm.isa.arm64": "x86_64"
} }
def download(self):
Logger.info("Downloading libhoudini to {}now .....".format(self.download_loc))
super().download()
def copy(self): def copy(self):
run(["chmod", "+x", self.extract_to, "-R"]) run(["chmod", "+x", self.extract_to, "-R"])
Logger.info("Copying libhoudini library files ...") Logger.info("Copying libhoudini library files ...")

@ -86,4 +86,4 @@ on property:init.svc.zygote=stopped
with gzip.open(gz_filename,'wb') as f_gz: with gzip.open(gz_filename,'wb') as f_gz:
f_gz.write(self.oringinal_bootanim.encode('utf-8')) f_gz.write(self.oringinal_bootanim.encode('utf-8'))
with open(bootanim_path, "w") as initfile: with open(bootanim_path, "w") as initfile:
initfile.write(self.oringinal_bootanim+self.bootanim_component) initfile.write(self.oringinal_bootanim+self.bootanim_component)

@ -31,10 +31,6 @@ on property:ro.enable.native.bridge.exec=1
copy /system/etc/binfmt_misc/arm64_exe /proc/sys/fs/binfmt_misc/register copy /system/etc/binfmt_misc/arm64_exe /proc/sys/fs/binfmt_misc/register
copy /system/etc/binfmt_misc/arm64_dyn /proc/sys/fs/binfmt_misc/register copy /system/etc/binfmt_misc/arm64_dyn /proc/sys/fs/binfmt_misc/register
""" """
def download(self):
Logger.info("Downloading libndk to {} now .....".format(self.download_loc))
super().download()
def copy(self): def copy(self):
run(["chmod", "+x", self.extract_to, "-R"]) run(["chmod", "+x", self.extract_to, "-R"])
@ -54,4 +50,4 @@ on property:ro.enable.native.bridge.exec=1
if not path.isfile(init_path): if not path.isfile(init_path):
makedirs(path.dirname(init_path), exist_ok=True) makedirs(path.dirname(init_path), exist_ok=True)
with open(init_path, "w") as initfile: with open(init_path, "w") as initfile:
initfile.write(self.init_rc_component) initfile.write(self.init_rc_component)

@ -0,0 +1,21 @@
import os
import shutil
from stuffs.general import General
class Smartdock(General):
dl_link = "https://github.com/ayasa520/smartdock/releases/download/v1.9.6/smartdock.zip"
partition = "system"
extract_to = "/tmp/smartdockunpack"
dl_file_name = "smartdock.zip"
act_md5 = "ad0cc5e023ac6ee97e7b013b9b0defee"
def copy(self):
if not os.path.exists(os.path.join(self.copy_dir, self.partition, "priv-app", "SmartDock")):
os.makedirs(os.path.join(self.copy_dir, self.partition, "priv-app", "SmartDock"))
shutil.copyfile(os.path.join(self.extract_to, "app-release.apk"),
os.path.join(self.copy_dir, self.partition, "priv-app", "SmartDock", "smartdock.apk"))
shutil.copyfile(os.path.join(self.extract_to, "permissions_cu.axel.smartdock.xml"),
os.path.join(self.copy_dir, self.partition, "etc", "permissions", "permissions_cu.axel.smartdock.xml"))
def extra(self):
return super().extra()

@ -12,12 +12,8 @@ class Widevine(General):
extract_to = "/tmp/widevineunpack" extract_to = "/tmp/widevineunpack"
act_md5 = "a31f325453c5d239c21ecab8cfdbd878" act_md5 = "a31f325453c5d239c21ecab8cfdbd878"
def download(self):
Logger.info("Downloading widevine to {} now .....".format(self.download_loc))
super().download()
def copy(self): def copy(self):
run(["chmod", "+x", self.extract_to, "-R"]) run(["chmod", "+x", self.extract_to, "-R"])
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-94c9ee172e3d78fecc81863f50a59e3646f7a2bd", shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_widevine-prebuilt-94c9ee172e3d78fecc81863f50a59e3646f7a2bd",
"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)

@ -44,4 +44,4 @@ def get_image_dir():
if "waydroid" not in cfg: if "waydroid" not in cfg:
Logger.error("ERROR: Required entry in config was not found, Cannot continue!") #magisk Logger.error("ERROR: Required entry in config was not found, Cannot continue!") #magisk
sys.exit(1) sys.exit(1)
return cfg["waydroid"]["images_path"] return cfg["waydroid"]["images_path"]

Loading…
Cancel
Save