You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
4.1 KiB
Python
90 lines
4.1 KiB
Python
import os
|
|
import shutil
|
|
from time import sleep
|
|
from stuffs.general import General
|
|
from tools.helper import get_download_dir, host, run
|
|
from aapt2 import aapt
|
|
from tools import container
|
|
from tools.logger import Logger
|
|
|
|
|
|
class MicroG(General):
|
|
partition = "system"
|
|
main_arch = host()[0]
|
|
sub_arch = "x86" if main_arch == "x86_64" else "armeabi-v7a" if main_arch == "arm64-v8a" else ""
|
|
fdroid = "https://f-droid.org/repo/"
|
|
microg="https://microg.org/fdroid/repo/"
|
|
fdroid_repo_apks = {
|
|
"com.aurora.store_41.apk": "9e6c79aefde3f0bbfedf671a2d73d1be",
|
|
"com.etesync.syncadapter_20300.apk": "997d6de7d41c454d39fc22cd7d8fc3c2",
|
|
"com.aurora.adroid_8.apk": "0010bf93f02c2d18daf9e767035fefc5",
|
|
"org.fdroid.fdroid.privileged_2130.apk": "b04353155aceb36207a206d6dd14ba6a",
|
|
"org.microg.nlp.backend.ichnaea_20036.apk": "0b3cb65f8458d1a5802737c7392df903",
|
|
"org.microg.nlp.backend.nominatim_20042.apk": "88e7397cbb9e5c71c8687d3681a23383",
|
|
}
|
|
microg_apks= {
|
|
"com.google.android.gms-223616054.apk": "a945481ca5d33a03bc0f9418263c3228",
|
|
"com.google.android.gsf-8.apk": "b2b4ea3642df6158e14689a4b2a246d4",
|
|
"com.android.vending-22.apk": "6815d191433ffcd8fa65923d5b0b0573",
|
|
"org.microg.gms.droidguard-14.apk": "4734b41c1a6bc34a541053ddde7a0f8e"
|
|
}
|
|
|
|
def skip_extract(self):
|
|
return True
|
|
|
|
def download(self):
|
|
for apk, md5 in self.fdroid_repo_apks.items():
|
|
self.dl_link = self.fdroid+apk
|
|
self.act_md5 = md5
|
|
self.dl_file_name = apk
|
|
super().download()
|
|
for apk, md5 in self.microg_apks.items():
|
|
self.dl_link = self.microg+apk
|
|
self.act_md5 = md5
|
|
self.dl_file_name = apk
|
|
super().download()
|
|
|
|
def generate_permissions(self):
|
|
permissions = "<permissions>"
|
|
download_dir = get_download_dir()
|
|
for apk in {**self.fdroid_repo_apks, **self.microg_apks}.keys():
|
|
splitor = "_" if apk in self.fdroid_repo_apks.keys() else "-"
|
|
package = apk.split(splitor)[0]
|
|
permissions += '\n\t<privapp-permissions package="{}">\n'.format(package)
|
|
permission_list = aapt.get_apk_info(os.path.join(download_dir,apk))["permissions"]
|
|
permissions += "\n".join(['\t\t<permission name="{}"/>'.format(permission) for permission in permission_list])
|
|
permissions += "\n\t</privapp-permissions>"
|
|
return permissions
|
|
|
|
def copy(self):
|
|
Logger.info("Copying MicroG and other files")
|
|
priv_apps = ["com.google.android.gms", "com.android.vending"]
|
|
for apk in {**self.fdroid_repo_apks, **self.microg_apks}.keys():
|
|
splitor = "_" if apk in self.fdroid_repo_apks.keys() else "-"
|
|
package = apk.split(splitor)[0]
|
|
download_dir = get_download_dir()
|
|
apk_dir = "app" if package not in priv_apps else "priv-app"
|
|
if not os.path.exists(os.path.join(self.copy_dir, self.partition, apk_dir, package)):
|
|
os.makedirs(os.path.join(self.copy_dir, self.partition, apk_dir, package))
|
|
shutil.copyfile(os.path.join(download_dir, apk),
|
|
os.path.join(self.copy_dir, self.partition, apk_dir, package, apk))
|
|
permissions = self.generate_permissions()
|
|
permission_dir = os.path.join(self.copy_dir, self.partition, "etc", "permissions")
|
|
if not os.path.exists(permission_dir):
|
|
os.makedirs(permission_dir)
|
|
with open(os.path.join(permission_dir, "foss-permissions.xml"), "w") as f:
|
|
f.write(permissions)
|
|
|
|
def extra2(self):
|
|
index = 0
|
|
while not container.is_running():
|
|
list = ["\\", "|", "/", "—"]
|
|
sleep(0.5)
|
|
print("\r\tPlease start WayDroid for further setup {}".format(list[index%4]), end="")
|
|
index += 1
|
|
sleep(5)
|
|
print()
|
|
Logger.info("Signature spoofing")
|
|
run("waydroid shell pm grant com.google.android.gms android.permission.FAKE_PACKAGE_SIGNATURE".split())
|
|
run("waydroid shell pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE".split())
|