Files
redroid-script/redroid.py
2025-11-12 12:15:18 +08:00

119 lines
4.8 KiB
Python

#!/usr/bin/env python3
import argparse
from stuff.gapps import Gapps
from stuff.litegapps import LiteGapps
from stuff.magisk import Magisk
from stuff.mindthegapps import MindTheGapps
from stuff.ndk import Ndk
from stuff.houdini import Houdini
from stuff.houdini_hack import Houdini_Hack
from stuff.widevine import Widevine
import tools.helper as helper
import subprocess
def main():
dockerfile = ""
tags = []
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-a', '--android-version',
dest='android',
help='Specify the Android version to build',
default='11.0.0',
choices=['14.0.0', '13.0.0', '12.0.0', '12.0.0_64only', '11.0.0', '10.0.0', '9.0.0', '8.1.0'])
parser.add_argument('-g', '--install-gapps',
dest='gapps',
help='Install OpenGapps to ReDroid',
action='store_true')
parser.add_argument('-lg', '--install-litegapps',
dest='litegapps',
help='Install LiteGapps to ReDroid',
action='store_true')
parser.add_argument('-n', '--install-ndk-translation',
dest='ndk',
help='Install libndk translation files',
action='store_true')
parser.add_argument('-i', '--install-houdini',
dest='houdini',
help='Install houdini files',
action='store_true')
parser.add_argument('-mtg', '--install-mindthegapps',
dest='mindthegapps',
help='Install MindTheGapps to ReDroid',
action='store_true')
parser.add_argument('-m', '--install-magisk', dest='magisk',
help='Install Magisk ( Bootless )',
action='store_true')
parser.add_argument('-w', '--install-widevine', dest='widevine',
help='Integrate Widevine DRM (L3)',
action='store_true')
parser.add_argument('-c', '--container',
dest='container',
default='docker',
help='Specify container type',
choices=['docker', 'podman'])
args = parser.parse_args()
dockerfile = dockerfile + \
"FROM redroid/redroid:{}-latest\n".format(
args.android)
tags.append(args.android)
if args.gapps:
if args.android in ["11.0.0"]:
Gapps().install()
dockerfile = dockerfile + "COPY gapps /\n"
tags.append("gapps")
else:
helper.print_color( "WARNING: OpenGapps only supports 11.0.0", helper.bcolors.YELLOW)
if args.litegapps:
LiteGapps(args.android).install()
dockerfile = dockerfile + "COPY litegapps /\n"
tags.append("litegapps")
if args.mindthegapps:
MindTheGapps(args.android).install()
dockerfile = dockerfile + "COPY mindthegapps /\n"
tags.append("mindthegapps")
if args.ndk:
if args.android in ["11.0.0", "12.0.0", "12.0.0_64only"]:
arch = helper.host()[0]
if arch == "x86" or arch == "x86_64":
Ndk().install()
dockerfile = dockerfile+"COPY ndk /\n"
tags.append("ndk")
else:
helper.print_color(
"WARNING: Libndk seems to work only on redroid:11.0.0 or redroid:12.0.0", helper.bcolors.YELLOW)
if args.houdini:
if args.android in ["8.1.0", "9.0.0", "11.0.0", "12.0.0", "13.0.0", "14.0.0"]:
arch = helper.host()[0]
if arch == "x86" or arch == "x86_64":
Houdini(args.android).install()
if not args.android == "8.1.0":
Houdini_Hack(args.android).install()
dockerfile = dockerfile+"COPY houdini /\n"
tags.append("houdini")
else:
helper.print_color(
"WARNING: Houdini seems to work only above redroid:11.0.0", helper.bcolors.YELLOW)
if args.magisk:
Magisk().install()
dockerfile = dockerfile+"COPY magisk /\n"
tags.append("magisk")
if args.widevine:
Widevine(args.android).install()
dockerfile = dockerfile+"COPY widevine /\n"
tags.append("widevine")
print("\nDockerfile\n"+dockerfile)
with open("./Dockerfile", "w") as f:
f.write(dockerfile)
new_image_name = "redroid/redroid:"+"_".join(tags)
subprocess.run([args.container, "build", "-t", new_image_name, "."])
helper.print_color("Successfully built {}".format(
new_image_name), helper.bcolors.GREEN)
if __name__ == "__main__":
main()