def get_basic_package(): app_set_list = NikGappsPackages.get_core_package() digital_wellbeing = Package("WellbeingPreBuilt", "com.google.android.apps.wellbeing", Constants.is_priv_app, "DigitalWellbeing") vanced_manager = Package("VancedManager", "com.vanced.manager", Constants.is_system_app) vanced_manager.enabled = 0 app_set_list.append(AppSet("DigitalWellbeing", [digital_wellbeing])) app_set_list.append(AppSet("VancedManager", [vanced_manager])) google_messages = Package("PrebuiltBugle", "com.google.android.apps.messaging", Constants.is_system_app, "GoogleMessages") google_messages.delete("RevengeMessages") google_messages.delete("messaging") google_messages.delete("Messaging") google_messages.delete("QKSMS") google_messages.delete("Mms") app_set_list.append(AppSet("GoogleMessages", [google_messages])) google_dialer = Package("GoogleDialer", "com.google.android.dialer", Constants.is_priv_app) google_dialer.predefined_file_list.append( "framework/com.google.android.dialer.support.jar") google_dialer.delete("Dialer") google_dialer.additional_installer_script = """script_text="<permissions> <!-- Shared library required on the device to get Google Dialer updates from Play Store. This will be deprecated once Google Dialer play store updates stop supporting pre-O devices. --> <library name=\\"com.google.android.dialer.support\\" file=\\"$install_partition/framework/com.google.android.dialer.support.jar\\" /> <!-- Starting from Android O and above, this system feature is required for getting Google Dialer play store updates. --> <feature name=\\"com.google.android.apps.dialer.SUPPORTED\\" /> </permissions>" echo -e "$script_text" > $install_partition/etc/permissions/com.google.android.dialer.support.xml set_perm 0 0 0644 "$install_partition/etc/permissions/com.google.android.dialer.support.xml" installPath=$product_prefix"etc/permissions/com.google.android.dialer.support.xml" echo "install=$installPath" >> $TMPDIR/addon/$packagePath if [ -f "$install_partition/etc/permissions/com.google.android.dialer.support.xml" ]; then addToLog "- $install_partition/etc/permissions/com.google.android.dialer.support.xml Successfully Written!" fi # set Google Dialer as default; based on the work of osm0sis @ xda-developers setver=\"122\" # lowest version in MM, tagged at 6.0.0 setsec=\"/data/system/users/0/settings_secure.xml\" if [ -f \"$setsec\" ]; then if grep -q 'dialer_default_application' \"$setsec\"; then if ! grep -q 'dialer_default_application\" value=\"com.google.android.dialer' \"$setsec\"; then curentry=\"$(grep -o 'dialer_default_application\" value=.*$' \"$setsec\")\" newentry='dialer_default_application\" value=\"com.google.android.dialer\" package=\"android\" />\\r' sed -i \"s;${curentry};${newentry};\" \"$setsec\" fi else max=\"0\" for i in $(grep -o 'id=.*$' \"$setsec\" | cut -d '\"' -f 2); do test \"$i\" -gt \"$max\" && max=\"$i\" done entry='<setting id=\"'\"$((max + 1))\"'\" name=\"dialer_default_application\" value=\"com.google.android.dialer\" package=\"android\" />\\r' sed -i \"/<settings version=\\\"/a\ \ ${entry}\" \"$setsec\" fi else if [ ! -d \"/data/system/users/0\" ]; then install -d \"/data/system/users/0\" chown -R 1000:1000 \"/data/system\" chmod -R 775 \"/data/system\" chmod 700 \"/data/system/users/0\" fi { echo -e \"<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\\r\" echo -e '<settings version=\"'$setver'\">\\r' echo -e ' <setting id="1" name=\"dialer_default_application\" value=\"com.google.android.dialer\" package=\"android\" />\\r' echo -e '</settings>'; } > \"$setsec\" fi chown 1000:1000 \"$setsec\" chmod 600 \"$setsec\" if [ -f "$setsec" ]; then addToLog "- $setsec Successfully Written!" fi""" app_set_list.append(AppSet("GoogleDialer", [google_dialer])) google_contacts = Package("GoogleContacts", "com.google.android.contacts", Constants.is_priv_app) google_contacts.delete("Contacts") app_set_list.append(AppSet("GoogleContacts", [google_contacts])) carrier_services = Package("CarrierServices", "com.google.android.ims", Constants.is_priv_app) app_set_list.append(AppSet("CarrierServices", [carrier_services])) google_clock = Package("PrebuiltDeskClockGoogle", "com.google.android.deskclock", Constants.is_system_app, "GoogleClock") google_clock.delete("DeskClock") google_clock.clean_flash_only = True app_set_list.append(AppSet("GoogleClock", [google_clock])) return app_set_list
def get_stock_package(): app_set_list = NikGappsPackages.get_omni_package() google_velvet = Package("Velvet", "com.google.android.googlequicksearchbox", Constants.is_priv_app) google_velvet.priv_app_permissions.append( "android.permission.WRITE_APN_SETTINGS") google_velvet.priv_app_permissions.append( "android.permission.BLUETOOTH_PRIVILEGED") google_velvet.additional_installer_script = """ set_prop "ro.opa.eligible_device" "true" "$install_partition/build.prop" """ app_set_list.append(AppSet("Velvet", [google_velvet])) google_board = Package("LatinIMEGooglePrebuilt", "com.google.android.inputmethod.latin", Constants.is_system_app, "GBoard") google_board.additional_installer_script = """ set_prop "ro.com.google.ime.bs_theme" "true" "$install_partition/build.prop" set_prop "ro.com.google.ime.theme_id" "5" "$install_partition/build.prop" set_prop "ro.com.google.ime.system_lm_dir" "$install_partition/usr/share/ime/google/d3_lms" "$install_partition/build.prop" """ google_board.delete("LatinIME") google_board.clean_flash_only = True app_set_list.append(AppSet("GBoard", [google_board])) app_set_list.append(NikGappsPackages.get_pixel_launcher()) if TARGET_ANDROID_VERSION >= 11: app_set_list.append(NikGappsPackages.get_google_files()) google_recorder = Package("RecorderPrebuilt", "com.google.android.apps.recorder", Constants.is_priv_app, "GoogleRecorder") google_recorder.delete("Recorder") google_recorder.delete("QtiSoundRecorder") app_set_list.append(AppSet("GoogleRecorder", [google_recorder])) google_calendar = Package("CalendarGooglePrebuilt", "com.google.android.calendar", Constants.is_priv_app, "GoogleCalendar") google_calendar.delete("Calendar") google_calendar.delete("Etar") google_calendar.delete("SimpleCalendar") app_set_list.append(AppSet("GoogleCalendar", [google_calendar])) google_markup = Package("MarkupGoogle", "com.google.android.markup", Constants.is_system_app) app_set_list.append(AppSet("MarkupGoogle", [google_markup])) google_wallpaper = Package("WallpaperPickerGooglePrebuilt", "com.google.android.apps.wallpaper", Constants.is_priv_app, "GoogleWallpaper", partition="system_ext") app_set_list.append(AppSet("GoogleWallpaper", [google_wallpaper])) google_feedback = Package("GoogleFeedback", "com.google.android.feedback", Constants.is_priv_app, partition="system_ext") app_set_list.append(AppSet("GoogleFeedback", [google_feedback])) google_partner_setup = Package("PartnerSetupPrebuilt", "com.google.android.partnersetup", Constants.is_priv_app, "GooglePartnerSetup") app_set_list.append( AppSet("GooglePartnerSetup", [google_partner_setup])) google_sounds = Package("SoundPickerPrebuilt", "com.google.android.soundpicker", Constants.is_system_app, "GoogleSounds") app_set_list.append(AppSet("GoogleSounds", [google_sounds])) if TARGET_ANDROID_VERSION >= 10: android_device_policy = Package( "DevicePolicyPrebuilt", "com.google.android.apps.work.clouddpc", Constants.is_system_app, "AndroidDevicePolicy") app_set_list.append( AppSet("AndroidDevicePolicy", [android_device_policy])) return app_set_list
def build_from_directory(app_set_build_list): dir_path = Constants.source_directory cmd = Cmd() app_set_list = [] for app_set in app_set_build_list: app_set: AppSet name = app_set.title app_set_path = Constants.path.join(dir_path, name) package_list = [] for package in app_set.package_list: package: Package pkg_to_build = package package_title = pkg_to_build.package_title pkg_path = Constants.path.join(app_set_path, package_title) file_dict = dict() folder_dict = dict() install_list = [] package_name = None app_type = None primary_app_location = None delete_files_list = [] # print("Package Name: " + package.title) for pkg_files in Path(pkg_path).rglob("*"): if Path(pkg_files).is_dir() or str(pkg_files).__contains__(".git") \ or str(pkg_files).endswith(".gitattributes") or str(pkg_files).endswith("README.md"): continue if str(pkg_files).endswith(Constants.DELETE_FILES_NAME): for str_data in FileOp.read_string_file(pkg_files): delete_file = str_data[:-1] if delete_file not in pkg_to_build.delete_files_list: delete_files_list.append(delete_file) continue pkg_files_path = str(pkg_files) pkg_files_path = pkg_files_path[pkg_files_path.find("___") + 3:] if pkg_to_build.package_name is not None and str(pkg_files_path).endswith(".apk") and not str( pkg_files).__contains__("split_") and not str(pkg_files).__contains__("___m___") \ and not str(pkg_files).__contains__("___overlay"): primary_app_location = pkg_files.absolute() package_name = cmd.get_package_name(primary_app_location) # print("File: " + package_name) package_version = cmd.get_package_version(primary_app_location) # print("Package Version: " + package_version) if str(primary_app_location).__contains__("___priv-app___"): app_type = Constants.is_priv_app elif str(primary_app_location).__contains__("___app___"): app_type = Constants.is_system_app for folder in FileOp.get_dir_list(pkg_files_path): folder_dict[folder] = folder # We don't need this but for the sake of consistency install_list.append(pkg_files_path.replace("___", "/")) file_dict[pkg_files.absolute()] = str(pkg_files_path.replace("___", "/")).replace("\\", "/") if primary_app_location is not None: title = Constants.get_base_name(primary_app_location)[:-4] else: title = package_title pkg = Package(title, package_name, app_type, package_title) pkg.install_list = install_list pkg.partition = pkg_to_build.partition pkg.clean_flash_only = pkg_to_build.clean_flash_only pkg.file_dict = file_dict pkg.folder_dict = folder_dict pkg.additional_installer_script = pkg_to_build.additional_installer_script pkg.primary_app_location = primary_app_location # Generate priv-app permissions whitelist if pkg.primary_app_location is not None and app_type == Constants.is_priv_app: permissions_list = cmd.get_white_list_permissions(primary_app_location) if permissions_list.__len__() >= 1 and not permissions_list[0].__contains__("Exception"): pkg.generate_priv_app_whitelist(app_set.title, permissions_list, Constants.source_directory) pkg.delete_rom_files_list = pkg_to_build.delete_rom_files_list # Add the deleted files from the pkg_to_build object for delete_file in pkg_to_build.delete_files_list: delete_files_list.append(delete_file) pkg.delete_files_list = delete_files_list package_list.append(pkg) if package_list.__len__() > 0: app_set_to_build = AppSet(app_set.title, package_list) app_set_list.append(app_set_to_build) return app_set_list