├── .github └── ISSUE_TEMPLATE │ ├── feature-request.yaml │ └── problem-report.yaml ├── .gitignore ├── LICENSE ├── README.md ├── config ├── boot_debug │ ├── boot_debug.te.sepolicy │ ├── cache │ │ └── cache_boot_debug.te.sepolicy │ ├── file.te.sepolicy │ ├── file_contexts.sepolicy │ ├── h810_usu │ ├── h811 │ ├── h812_usu │ ├── h815 │ ├── h815_usu │ ├── init.te.sepolicy │ ├── lge_g4 │ │ └── sensors.te.sepolicy │ ├── persist │ │ └── persist_boot_debug.te.sepolicy │ └── vs986_usu ├── call-rec │ └── lineage │ │ ├── A11 │ │ ├── packages-apps-Settings-src-com-android-settings-development-CallRecInfo.java │ │ └── packages-apps-Settings-src-com-android-settings-development-CallRecPreferenceController.java │ │ ├── A13 │ │ ├── A14 │ │ └── A15 ├── common.mk ├── extendrom.te.sepolicy ├── init.er.rc.in ├── magisk │ ├── aicp │ ├── aosp │ ├── axp │ ├── lineage │ │ ├── A10 │ │ │ └── 0001-build_make_tools_releasetools_common.patch │ │ ├── A11 │ │ ├── A12 │ │ ├── A13 │ │ │ └── 0001-build_make_tools_releasetools_common.patch │ │ ├── A14 │ │ ├── A15 │ │ └── A9 │ │ │ └── 0001-build_make_tools_releasetools_common.patch │ └── patch.sh ├── orr_installsrc │ └── lineage │ │ ├── A11 │ │ ├── 001_framework_base.patch │ │ ├── packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcInfo.java │ │ └── packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcPreferenceController.java │ │ └── A13 │ │ ├── 001_framework_base.patch │ │ ├── packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcInfo.java │ │ └── packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcPreferenceController.java ├── property.te.sepolicy ├── property_contexts.sepolicy ├── signing │ ├── aicp │ ├── aosp │ ├── axp │ │ ├── A10 │ │ ├── A13 │ │ └── A14 │ └── lineage │ │ ├── A10 │ │ ├── bootable_recovery.patch │ │ ├── build_make_tools_releasetools_fixpython.patch │ │ └── system_update_engine.patch │ │ ├── A11 │ │ ├── A12 │ │ ├── bootable_recovery.patch │ │ ├── build_make_tools_releasetools_fixpython.patch │ │ └── system_update_engine.patch │ │ ├── A13 │ │ ├── bootable_recovery.patch │ │ ├── build_make_tools_releasetools_fixpython.patch │ │ └── system_update_engine.patch │ │ ├── A14 │ │ ├── bootable_recovery.patch │ │ ├── build_make_tools_releasetools_fixpython.patch │ │ └── system_update_engine.patch │ │ └── A15 │ │ ├── bootable_recovery.patch │ │ └── system_update_engine.patch └── sigspoof │ ├── README.md │ ├── aicp │ ├── aosp │ ├── axp │ └── lineage │ ├── A10 │ ├── 01-frameworks-base-core-api-current.patch │ ├── 02-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch │ ├── 03-packages-apps-PermissionController-src-com-android-packageinstaller-permission-utils-Utils.patch │ ├── 04-frameworks-base-core-java-android-app-Activity.patch │ ├── 05-frameworks-base-core-java-android-provider-Settings.patch │ ├── 06-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch │ ├── 07-framework-base-core-res-AndroidManifest.patch │ ├── 08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch │ ├── 09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java │ ├── 10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java │ └── 11-packages-apps-Settings-res-xml-development_settings.patch │ ├── A11 │ ├── 01-frameworks-base-api-current.patch │ ├── 02-frameworks-base-non-updatable-api-current.patch │ ├── 03-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch │ ├── 04-framework-base-core-res-AndroidManifest.patch │ ├── 04-frameworks-base-core-java-android-app-Activity.patch │ ├── 05-frameworks-base-core-java-android-provider-Settings.patch │ ├── 05-packages-apps-PermissionController-src-com-android-packageinstaller-permission-utils-Utils.patch │ ├── 06-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch │ ├── 07-packages-apps-Settings-res-xml-development_settings.patch │ ├── 08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch │ ├── 09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java │ └── 10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java │ ├── A12 │ ├── 01-frameworks-base-core-api-current.patch │ ├── 02-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch │ ├── 03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-Utils.patch │ ├── 04-frameworks-base-core-java-android-app-Activity.patch │ ├── 05-frameworks-base-core-java-android-provider-Settings.patch │ ├── 06-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch │ ├── 07-framework-base-core-res-AndroidManifest.patch │ ├── 08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch │ ├── 09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java │ ├── 10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java │ └── 11-packages-apps-Settings-res-xml-development_settings.patch │ ├── A13 │ ├── 01-frameworks-base-core-api-current.patch │ ├── 02-frameworks-base-services-core-java-com-android-server-pm-ComputerEngine.patch │ ├── 03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-Utils.patch │ ├── 04-frameworks-base-core-java-android-app-Activity.patch │ ├── 05-frameworks-base-core-java-android-provider-Settings.patch │ ├── 06-frameworks-base-services-core-java-com-android-server-pm-ComputerEngine.patch │ ├── 07-framework-base-core-res-AndroidManifest.patch │ ├── 08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch │ ├── 09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java │ ├── 10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java │ └── 11-packages-apps-Settings-res-xml-development_settings.patch │ ├── A14 │ ├── 01-frameworks-base-core-api-current.patch │ ├── 02-frameworks-base-services-core-java-com-android-server-pm-ComputerEngine.patch │ ├── 03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-PermissionMapping.patch │ ├── 04-frameworks-base-core-java-android-app-Activity.patch │ ├── 05-frameworks-base-core-java-android-provider-Settings.patch │ ├── 06-frameworks-base-services-core-java-com-android-server-pm-ComputerEngine.patch │ ├── 07-framework-base-core-res-AndroidManifest.patch │ ├── 08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch │ ├── 09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java │ ├── 10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java │ ├── 11-packages-apps-Settings-res-xml-development_settings.patch │ └── 12-frameworks-base-core-api-lint-baseline.patch │ ├── A15 │ └── A9 │ ├── 01-frameworks-base.patch │ ├── 02-frameworks_base_extendrom.patch │ ├── 03-packages_apps_Settings.patch │ ├── 04-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch │ ├── 05-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java │ ├── 06-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java │ └── 11-packages-apps-Settings-res-xml-development_settings.patch ├── er.mk ├── er.sh ├── extra ├── Android.mk ├── empty.apk ├── er_default-permissions-com.android.vending-phonesky.xml ├── er_default-permissions-com.android.vending.xml ├── er_default-permissions-com.google.android.gms.xml ├── er_default-permissions-com.google.android.gms.xml.legacy ├── er_default-permissions-neolauncher.xml ├── er_default-permissions-neolauncher_legacy.xml ├── er_etar-permissions.xml ├── er_privapp-permissions-aoslauncher.xml ├── er_privapp-permissions-com.android.vending-phonesky-legacy.xml ├── er_privapp-permissions-com.android.vending-phonesky.xml ├── er_privapp-permissions-com.android.vending.xml ├── er_privapp-permissions-com.google.android.gms.xml ├── er_privapp_whitelist_im.angry.openeuicc.xml ├── er_sysconfig-com.google.android.gms.xml ├── microg.xml ├── permissions_com.aurora.services.xml ├── webview_aosmium.sig.xml └── webview_cromite.sig.xml ├── fdroid_repos ├── additional_repos.xml ├── axpos.xml ├── bitwarden.xml ├── briar.xml ├── cake_labs.xml ├── calyx.xml ├── collabora.xml ├── cromite.xml ├── cryptomator.xml ├── ember.xml ├── fdroid-ff.yml ├── futo_org.xml ├── ironfox.xml ├── izzysoft.xml ├── microg.xml ├── molly.xml ├── nailyk.xml ├── nanolx.xml ├── nethunter.xml ├── pirata.xml ├── rakshazi.xml └── threema.xml ├── overlays ├── call-rec │ └── lineage │ │ ├── A10 │ │ └── packages │ │ │ └── apps │ │ │ └── Dialer │ │ ├── A11 │ │ └── packages │ │ │ └── apps │ │ │ ├── Dialer │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── android │ │ │ │ └── dialer │ │ │ │ └── callrecord │ │ │ │ └── res │ │ │ │ └── values │ │ │ │ └── config.xml │ │ │ └── Settings │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ ├── A12 │ │ └── packages │ │ │ └── apps │ │ │ └── Dialer │ │ ├── A13 │ │ └── packages │ │ │ └── apps │ │ │ ├── Dialer │ │ │ └── Settings │ │ ├── A14 │ │ └── packages │ │ │ └── apps │ │ │ ├── Dialer │ │ │ └── Settings │ │ ├── A15 │ │ └── packages │ │ │ └── apps │ │ │ ├── Dialer │ │ │ └── Settings │ │ └── A9 │ │ └── packages │ │ └── apps │ │ └── Dialer ├── gestures │ └── frameworks │ │ └── base │ │ └── core │ │ └── res │ │ └── res │ │ └── values │ │ └── config.xml ├── orr_installsrc │ └── lineage │ │ ├── A10 │ │ ├── A11 │ │ └── packages │ │ │ └── apps │ │ │ └── Settings │ │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ ├── A12 │ │ ├── A13 │ │ ├── A14 │ │ └── A15 └── sigspoof │ ├── frameworks │ └── base │ │ └── core │ │ └── res │ │ └── res │ │ └── values │ │ ├── config.xml │ │ └── strings.xml │ └── packages │ └── apps │ └── Settings │ └── res │ └── values │ └── strings.xml ├── repo └── packages.txt ├── tools ├── README.md ├── apply_patches.sh ├── curl_x64_static ├── extract_utils.sh ├── get-signature.sh └── get_latest_apkname.py └── wiki ├── .placeholder └── sigspoof ├── .placeholder ├── 01-devoption-onoff.png ├── 02-privacy-manager.png ├── 03-privacy-manager-sigspoof.png ├── 04-privacy-manager-allapps-before.png ├── 05-microg-request-permission.png ├── 06-microg-after-allow.png ├── 07-app-permission-manual-enablement.png ├── 08-privacy-manager-allapps-after.png └── 09-microg-when-devoption-disabled-again.png /.github/ISSUE_TEMPLATE/feature-request.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | name: Feature request 4 | description: "Request a specific feature currently missing" 5 | title: '[FR] ' 6 | labels: enhancement 7 | 8 | body: 9 | - type: textarea 10 | id: desc 11 | attributes: 12 | label: What you miss in extendrom? 13 | description: "Describe your feature request as detailed as possible" 14 | validations: 15 | required: true 16 | - type: input 17 | id: vendor 18 | attributes: 19 | label: Device vendor 20 | description: What's your device vendor and model? 21 | placeholder: Google Pixel 7 Pro, OnePlus 6T, Sony xxx, ... 22 | validations: 23 | required: false 24 | - type: input 25 | id: os 26 | attributes: 27 | label: Custom OS 28 | description: Custom OS name you build for 29 | placeholder: LOS, AXP.OS, AOSP, ... (add all that should apply) 30 | validations: 31 | required: true 32 | - type: checkboxes 33 | id: version 34 | attributes: 35 | label: OS version 36 | description: | 37 | What Android version this feature should support at minimum? 38 | Choose one or more but at least the one you currently build for as I might need your help for testing purposes. 39 | options: 40 | - label: Android 9 41 | - label: Android 10 42 | - label: Android 11 43 | - label: Android 12 44 | - label: Android 13 45 | - label: Android 14 46 | - label: Android 15 47 | - label: Yes, I have selected at least 1 Android version above 48 | required: true 49 | - type: textarea 50 | id: free 51 | attributes: 52 | label: Free form for additional info 53 | description: | 54 | **Note: do NOT add full log files within this issue!** 55 | Always use a paste service and/or for bigger logs it is strongly recommended using [github gists](https://gists.github.com). 56 | placeholder: "add any other info you might find useful to report, add screenshots or whatever helps ;)" 57 | validations: 58 | required: false 59 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/problem-report.yaml: -------------------------------------------------------------------------------- 1 | name: Problem report 2 | description: Default issue template for problems or questions 3 | labels: problem 4 | 5 | body: 6 | - type: textarea 7 | id: repro 8 | attributes: 9 | label: Reproduction steps / Problem description 10 | description: "Describe your problem including any hints to reproduce it. Please walk us through it step by step." 11 | value: | 12 | 1. 13 | 2. 14 | validations: 15 | required: true 16 | - type: input 17 | id: vendor 18 | attributes: 19 | label: Device vendor 20 | description: What's your device vendor and model? 21 | placeholder: Google Pixel 7 Pro, OnePlus 6T, Sony xxx, ... 22 | validations: 23 | required: false 24 | - type: input 25 | id: os 26 | attributes: 27 | label: Custom OS 28 | description: Custom OS name you build for 29 | placeholder: LOS, AXP.OS, AOSP, ... 30 | validations: 31 | required: true 32 | - type: input 33 | id: version 34 | attributes: 35 | label: OS version 36 | description: What Android version you build for 37 | placeholder: Android 9, 10, 11, 12, ... 38 | validations: 39 | required: true 40 | - type: input 41 | id: log_er 42 | attributes: 43 | label: extendrom log 44 | description: | 45 | COMPLETE(!!!) output when executing: `vendor/extendrom/er.sh` (e.g. as [gist](https://gists.github.com)) 46 | placeholder: 47 | validations: 48 | required: true 49 | - type: input 50 | id: log_build 51 | attributes: 52 | label: Build log 53 | description: | 54 | Full terminal output (e.g. by mka > build.log 2>&1) e.g. as a [gist](https://gists.github.com) 55 | placeholder: 56 | validations: 57 | required: false 58 | - type: input 59 | id: log_mk 60 | attributes: 61 | label: extendrom's Android.mk 62 | description: | 63 | Content of `vendor/extendrom/Android.mk` after running extendrom/a build -> (see "Note" topic) 64 | placeholder: 65 | validations: 66 | required: false 67 | - type: textarea 68 | id: free 69 | attributes: 70 | label: Free form for additional info 71 | description: | 72 | **Note: do NOT add full log files within this issue!** 73 | Always use a paste service and/or for bigger logs it is strongly recommended using [github gists](https://gists.github.com). 74 | placeholder: "add any other info you might find useful to report, add screenshots or whatever helps ;)" 75 | validations: 76 | required: false 77 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Android.mk 2 | prebuilt/ 3 | out/ 4 | config/init.er.rc 5 | sepolicy 6 | EXTENDROM_PATCHER_DONE 7 | packages.mk 8 | mkvars.mk 9 | overlays/*/active 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | extendrom allows you to modify/extend the Android build process in a seamless way for any custom OS you want to build. 4 | 5 | # Setup 6 | 7 | See wiki: [Setup](https://github.com/sfX-android/android_vendor_extendrom/wiki/Setup) 8 | 9 | # Support 10 | 11 | - Matrix: [#sfX_Android:matrix.org](https://matrix.to/#/#sfX_Android:matrix.org) 12 | - Telegram: [https://t.me/sfX_android](https://t.me/sfX_android) 13 | -------------------------------------------------------------------------------- /config/boot_debug/boot_debug.te.sepolicy: -------------------------------------------------------------------------------- 1 | ################################################################################### 2 | # THIS FILE HAS BEEN GENERATED BY EXTENDROM 3 | # THE ORIGIN IS LOCATED IN: "vendor/extendrom/config/boot_debug/xxxxx.te.sepolicy" 4 | ################################################################################### 5 | # 6 | # info: 7 | # - https://selinuxproject.org 8 | # - http://www.billauer.co.il/selinux-policy-module-howto.html 9 | ################################################################################### 10 | 11 | # required to fix neverallows reg core_data_file_type 12 | # and several others depending on it 13 | attribute boot_log_type; 14 | 15 | # define our own domain and initialize it 16 | type boot_debug, domain; 17 | type boot_debug_exec, exec_type, file_type, boot_log_type, vendor_file_type; 18 | init_daemon_domain(boot_debug) 19 | 20 | # allow us to actually write our logs in EXTENDROM_DEBUG_PATH 21 | # rename, unlink + remove_name perms are required as we use log rotation 22 | allow boot_debug boot_log_file:dir { open read search write add_name remove_name }; 23 | allow boot_debug boot_log_file:file { open read append create getattr ioctl write rename unlink write }; 24 | 25 | # allow accessing logd used by er-logcat 26 | allow boot_debug logd:unix_stream_socket connectto; 27 | allow boot_debug logdr_socket:sock_file write; 28 | 29 | # more recent android versions do not have an own cache partition anymore. 30 | # therefor lnk_file is required here 31 | allow boot_debug cache_file:lnk_file read; 32 | 33 | # when using /metadata 34 | allow boot_debug metadata_file:dir search; 35 | 36 | # when using /data/vendor_de 37 | allow boot_debug mnt_vendor_file:dir search; 38 | -------------------------------------------------------------------------------- /config/boot_debug/cache/cache_boot_debug.te.sepolicy: -------------------------------------------------------------------------------- 1 | ######################################################################################## 2 | # THIS FILE HAS BEEN GENERATED BY EXTENDROM 3 | # THE ORIGIN IS LOCATED IN: "vendor/extendrom/config/boot_debug/a10/xxxxx.te.sepolicy" 4 | ######################################################################################## 5 | # 6 | # info: 7 | # - https://selinuxproject.org 8 | # - http://www.billauer.co.il/selinux-policy-module-howto.html 9 | ######################################################################################## 10 | 11 | # when using /cache/boot_debug (dedicated /cache partition) 12 | allow boot_debug cache_file:dir search; 13 | -------------------------------------------------------------------------------- /config/boot_debug/file.te.sepolicy: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # THIS FILE HAS BEEN GENERATED BY EXTENDROM 3 | # THE ORIGIN IS LOCATED IN: "config/boot_debug/xxxxx.te.sepolicy" 4 | ################################################################## 5 | 6 | # boot_debug 7 | type boot_log_file, boot_log_type, file_type; 8 | -------------------------------------------------------------------------------- /config/boot_debug/file_contexts.sepolicy: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # THIS FILE HAS BEEN GENERATED BY EXTENDROM 3 | # THE ORIGIN IS LOCATED IN: "config/boot_debug/xxxxx.sepolicy" 4 | ################################################################## 5 | 6 | # boot_debug 7 | %%DEBUGLOG_PATH%%(/.*)? u:object_r:boot_log_file:s0 8 | 9 | # extendrom binaries 10 | /(vendor|system/vendor|system_ext|system)/bin/er-logcat u:object_r:boot_debug_exec:s0 11 | -------------------------------------------------------------------------------- /config/boot_debug/h810_usu: -------------------------------------------------------------------------------- 1 | lge_g4/ -------------------------------------------------------------------------------- /config/boot_debug/h811: -------------------------------------------------------------------------------- 1 | lge_g4/ -------------------------------------------------------------------------------- /config/boot_debug/h812_usu: -------------------------------------------------------------------------------- 1 | lge_g4/ -------------------------------------------------------------------------------- /config/boot_debug/h815: -------------------------------------------------------------------------------- 1 | lge_g4/ -------------------------------------------------------------------------------- /config/boot_debug/h815_usu: -------------------------------------------------------------------------------- 1 | lge_g4/ -------------------------------------------------------------------------------- /config/boot_debug/init.te.sepolicy: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # THIS FILE HAS BEEN GENERATED BY EXTENDROM 3 | # THE ORIGIN IS LOCATED IN: "config/boot_debug/xxxxx.te.sepolicy" 4 | ################################################################## 5 | 6 | # boot_debug 7 | allow init boot_debug:process { rlimitinh siginh transition }; 8 | allow init boot_log_file:dir mounton; 9 | -------------------------------------------------------------------------------- /config/boot_debug/lge_g4/sensors.te.sepolicy: -------------------------------------------------------------------------------- 1 | # when using /persist some devices require that one 2 | # otherwise e.g. the camera on the LG G4 does not start anymore 3 | # when enforcing 4 | allow sensors boot_log_file:dir { getattr search }; 5 | -------------------------------------------------------------------------------- /config/boot_debug/persist/persist_boot_debug.te.sepolicy: -------------------------------------------------------------------------------- 1 | ########################################################################################### 2 | # THIS FILE HAS BEEN GENERATED BY EXTENDROM 3 | # THE ORIGIN IS LOCATED IN: "vendor/extendrom/config/boot_debug/persist/xxxxx.te.sepolicy" 4 | ########################################################################################### 5 | # 6 | # info: 7 | # - https://selinuxproject.org 8 | # - http://www.billauer.co.il/selinux-policy-module-howto.html 9 | ################################################################################### 10 | 11 | # when using /mnt/vendor/persist 12 | allow boot_debug persist_file:dir search; 13 | -------------------------------------------------------------------------------- /config/boot_debug/vs986_usu: -------------------------------------------------------------------------------- 1 | lge_g4/ -------------------------------------------------------------------------------- /config/call-rec/lineage/A11/packages-apps-Settings-src-com-android-settings-development-CallRecInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (C) 2024 steadfasterX 4 | * LICENSE: GNU General Public License v3.0 5 | * 6 | */ 7 | 8 | package com.android.settings.development; 9 | 10 | import android.content.Context; 11 | import androidx.preference.Preference; 12 | import com.android.settings.core.PreferenceControllerMixin; 13 | import com.android.settingslib.development.DeveloperOptionsPreferenceController; 14 | 15 | public class ER_CallRecInfo extends DeveloperOptionsPreferenceController 16 | implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { 17 | 18 | private static final String ER_ALLOW_ANY_CALL_REC_KEY_INFO = "extendrom_call_recording_info"; 19 | 20 | public ER_CallRecInfo(Context context) { 21 | super(context); 22 | } 23 | 24 | @Override 25 | public String getPreferenceKey() { 26 | return ER_ALLOW_ANY_CALL_REC_KEY_INFO; 27 | } 28 | 29 | @Override 30 | public boolean onPreferenceChange(Preference preference, Object newValue) { 31 | return true; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /config/call-rec/lineage/A11/packages-apps-Settings-src-com-android-settings-development-CallRecPreferenceController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (C) 2024 steadfasterX 4 | * LICENSE: GNU General Public License v3.0 5 | * 6 | */ 7 | 8 | package com.android.settings.development; 9 | 10 | import android.content.Context; 11 | import android.provider.Settings; 12 | 13 | import androidx.annotation.VisibleForTesting; 14 | import androidx.preference.Preference; 15 | import androidx.preference.SwitchPreference; 16 | 17 | import com.android.settings.core.PreferenceControllerMixin; 18 | import com.android.settingslib.development.DeveloperOptionsPreferenceController; 19 | 20 | public class ER_CallRecPreferenceController extends DeveloperOptionsPreferenceController 21 | implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { 22 | 23 | private static final String ER_ALLOW_ANY_CALL_REC_KEY = "extendrom_call_recording"; 24 | 25 | @VisibleForTesting 26 | static final int SETTING_VALUE_ON = 1; 27 | @VisibleForTesting 28 | static final int SETTING_VALUE_OFF = 0; 29 | 30 | public ER_CallRecPreferenceController(Context context) { 31 | super(context); 32 | } 33 | 34 | @Override 35 | public String getPreferenceKey() { 36 | return ER_ALLOW_ANY_CALL_REC_KEY; 37 | } 38 | 39 | @Override 40 | public boolean onPreferenceChange(Preference preference, Object newValue) { 41 | final boolean isEnabled = (Boolean) newValue; 42 | Settings.Secure.putInt(mContext.getContentResolver(), 43 | Settings.Secure.ER_ALLOW_ANY_CALL_REC, 44 | isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); 45 | return true; 46 | } 47 | 48 | @Override 49 | public void updateState(Preference preference) { 50 | final int recMode = Settings.Secure.getInt(mContext.getContentResolver(), 51 | Settings.Secure.ER_ALLOW_ANY_CALL_REC, SETTING_VALUE_OFF); 52 | 53 | ((SwitchPreference) mPreference).setChecked(recMode != SETTING_VALUE_OFF); 54 | } 55 | 56 | @Override 57 | protected void onDeveloperOptionsSwitchDisabled() { 58 | super.onDeveloperOptionsSwitchDisabled(); 59 | Settings.Secure.putInt(mContext.getContentResolver(), 60 | Settings.Secure.ER_ALLOW_ANY_CALL_REC, SETTING_VALUE_OFF); 61 | ((SwitchPreference) mPreference).setChecked(false); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /config/call-rec/lineage/A13: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /config/call-rec/lineage/A14: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /config/call-rec/lineage/A15: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /config/common.mk: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | # backwards compat for at least A9 where the environment vars 3 | # do not get parsed and become build flags automatically 4 | 5 | $(call inherit-product-if-exists, vendor/extendrom/mkvars.mk) 6 | 7 | ifeq ($(EXTENDROM_BOOT_DEBUG),) 8 | EXTENDROM_BOOT_DEBUG := $(shell echo $$EXTENDROM_BOOT_DEBUG) 9 | endif 10 | 11 | ifeq ($(EXTENDROM_PREROOT_BOOT),) 12 | EXTENDROM_PREROOT_BOOT := $(shell echo $$EXTENDROM_PREROOT_BOOT) 13 | endif 14 | 15 | ################################################################## 16 | # enable gesture support in /e/ OS 17 | # DEPRECATED! 18 | 19 | ifeq ($(EOS_GESTURES),true) 20 | # set specific overlay 21 | DEVICE_PACKAGE_OVERLAYS += \ 22 | vendor/extendrom/overlays/gestures 23 | # build TrebuchetQuickStep (get_prebuilts.sh must be executed once at least) 24 | PRODUCT_PACKAGES += eOSTrebuchetQuickStep 25 | endif 26 | 27 | ################################################################## 28 | # Signature spoofing overlays 29 | 30 | # backwards compat for old Android releases where environment vars do not become build flags 31 | ifeq ($(EXTENDROM_SIGNATURE_SPOOFING),) 32 | EXTENDROM_SIGNATURE_SPOOFING := $(shell echo $$EXTENDROM_SIGNATURE_SPOOFING) 33 | endif 34 | 35 | ifeq ($(EXTENDROM_SIGNATURE_SPOOFING),true) 36 | DEVICE_PACKAGE_OVERLAYS += \ 37 | vendor/extendrom/overlays/sigspoof 38 | endif 39 | 40 | ################################################################## 41 | # Call recording overlay 42 | 43 | # backwards compat for old Android releases where environment vars do not become build flags 44 | #ifeq ($(EXTENDROM_ALLOW_ANY_CALL_RECORDING),) 45 | #EXTENDROM_ALLOW_ANY_CALL_RECORDING := $(shell echo $$EXTENDROM_ALLOW_ANY_CALL_RECORDING) 46 | #endif 47 | 48 | ifeq ($(EXTENDROM_ALLOW_ANY_CALL_RECORDING),true) 49 | PRODUCT_PACKAGE_OVERLAYS += \ 50 | vendor/extendrom/overlays/call-rec/active 51 | endif # EXTENDROM_ALLOW_ANY_CALL_RECORDING 52 | 53 | ################################################################## 54 | # Override installation source overlay 55 | 56 | ifeq ($(EXTENDROM_INTERCEPT_INSTALLSRC),true) 57 | PRODUCT_PACKAGE_OVERLAYS += \ 58 | vendor/extendrom/overlays/orr_installsrc/active 59 | endif # EXTENDROM_OVERRIDE_INSTALLATION_SOURCE 60 | 61 | ################################################################## 62 | # extendrom vendor makefile 63 | 64 | $(call inherit-product, vendor/extendrom/er.mk) 65 | -------------------------------------------------------------------------------- /config/extendrom.te.sepolicy: -------------------------------------------------------------------------------- 1 | # required to set and read our properties 2 | 3 | # developer options 4 | set_prop(system_app, extendrom_prop) 5 | get_prop(system_app, extendrom_prop) 6 | 7 | # installsource intercept in frameworks/base 8 | get_prop(system_server, extendrom_prop) 9 | -------------------------------------------------------------------------------- /config/init.er.rc.in: -------------------------------------------------------------------------------- 1 | ########################################################################################## 2 | # 3 | # This code is part of extendrom (https://github.com/sfX-android/android_vendor_extendrom) 4 | # Copyright (C) 2023-2025 steadfasterX 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | ########################################################################################## 19 | 20 | # stop logging after boot 21 | on property:sys.boot_completed=1 22 | stop boot_debug_full 23 | stop boot_debug_crash 24 | stop boot_debug_kernel 25 | stop boot_debug_selinux 26 | 27 | # stop fallback for some devices 28 | on property:dev.bootcomplete=1 29 | stop boot_debug_full 30 | stop boot_debug_crash 31 | stop boot_debug_kernel 32 | stop boot_debug_selinux 33 | 34 | on property:extendrom.bootdebug=start 35 | start boot_debug_full 36 | start boot_debug_kernel 37 | start boot_debug_crash 38 | start boot_debug_selinux 39 | 40 | on property:extendrom.bootdebug=stop 41 | stop boot_debug_full 42 | stop boot_debug_crash 43 | stop boot_debug_kernel 44 | stop boot_debug_selinux 45 | 46 | # start debug logger as soon as possible 47 | # i.e. when logd actually has started 48 | on post-fs 49 | mkdir %%DEBUGLOG_PATH%% 0770 system system %%DEBUGLOG_MKDARG%% 50 | start boot_debug_full 51 | start boot_debug_kernel 52 | start boot_debug_crash 53 | start boot_debug_selinux 54 | 55 | service boot_debug_full %%DEBUGLOG_LOGCAT_PATH%%/bin/er-logcat -b all -D -f %%DEBUGLOG_PATH%%/full.txt --rotate-kbytes=%%DEBUGLOG_PATH_SIZE_FULL%% --rotate-count=1 56 | user system 57 | group system 58 | seclabel u:r:boot_debug:s0 59 | disabled 60 | oneshot 61 | 62 | service boot_debug_crash %%DEBUGLOG_LOGCAT_PATH%%/bin/er-logcat -b crash -D -f %%DEBUGLOG_PATH%%/crash.txt --rotate-kbytes=%%DEBUGLOG_PATH_SIZE_CRASH%% --rotate-count=1 63 | user system 64 | group system 65 | seclabel u:r:boot_debug:s0 66 | disabled 67 | oneshot 68 | 69 | # note: kernel logs will appear on userdebug and/or eng builds only! 70 | service boot_debug_kernel %%DEBUGLOG_LOGCAT_PATH%%/bin/er-logcat -b kernel -D -f %%DEBUGLOG_PATH%%/kernel.txt --rotate-kbytes=%%DEBUGLOG_PATH_SIZE_KERNEL%% --rotate-count=1 71 | user system 72 | group system 73 | seclabel u:r:boot_debug:s0 74 | disabled 75 | oneshot 76 | 77 | service boot_debug_selinux %%DEBUGLOG_LOGCAT_PATH%%/bin/er-logcat -b events --regex=avc: -D -f %%DEBUGLOG_PATH%%/selinux.txt --rotate-kbytes=%%DEBUGLOG_PATH_SIZE_SELINUX%% --rotate-count=1 78 | user system 79 | group system 80 | seclabel u:r:boot_debug:s0 81 | disabled 82 | oneshot 83 | -------------------------------------------------------------------------------- /config/magisk/aicp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/magisk/aosp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/magisk/axp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/magisk/lineage/A10/0001-build_make_tools_releasetools_common.patch: -------------------------------------------------------------------------------- 1 | 2 | project build/make/ 3 | diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py 4 | index 71679e8cb2..70c75cd40b 100644 5 | --- a/tools/releasetools/common.py 6 | +++ b/tools/releasetools/common.py 7 | @@ -734,6 +734,14 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None, 8 | img_unsigned.close() 9 | img_keyblock.close() 10 | 11 | + # EXTENDROM: Magisk patch (build) 12 | + if (partition_name == "boot" and info_dict.get("init_boot") != "true") or partition_name == "init_boot": 13 | + top_dir = os.getenv('ANDROID_BUILD_TOP', os.environ.get('PWD')) 14 | + mpatcher = [ top_dir + '/vendor/extendrom/config/magisk/patch.sh', img.name , top_dir ] 15 | + logger.info("Patching (build): %s", img.name) 16 | + RunAndCheckOutput(mpatcher, verbose=True, env={'system_root_image': info_dict.get("system_root_image", "false")}) 17 | + # END # EXTENDROM: Magisk patch (build) 18 | + 19 | # AVB: if enabled, calculate and add hash to boot.img or recovery.img. 20 | if info_dict.get("avb_enable") == "true": 21 | avbtool = info_dict["avb_avbtool"] 22 | @@ -766,6 +774,30 @@ def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir, 23 | the source files in 'unpack_dir'/'tree_subdir'.""" 24 | 25 | prebuilt_path = os.path.join(unpack_dir, "BOOTABLE_IMAGES", prebuilt_name) 26 | + 27 | + # EXTENDROM: Magisk patcher (prebuilt) 28 | + if (prebuilt_name == "boot.img" or prebuilt_name == "init_boot.img") and os.path.exists(prebuilt_path): 29 | + if info_dict is None: 30 | + info_dict = OPTIONS.info_dict 31 | + top_dir = os.getenv('ANDROID_BUILD_TOP', os.environ.get('PWD')) 32 | + from ota_from_target_files import BuildInfo 33 | + emptyd = [] 34 | + build_info = BuildInfo(info_dict, emptyd) 35 | + codename = build_info.GetOemProperty("ro.product.device") 36 | + targetimg = top_dir + "/out/target/product/" + codename + "/" + prebuilt_name 37 | + if os.path.exists(prebuilt_path): 38 | + bimg = os.path.join(top_dir, prebuilt_path) 39 | + else: 40 | + bimg = os.path.join(top_dir, unpack_dir, "IMAGES", prebuilt_name) 41 | + if not os.path.exists(bimg): 42 | + assert False, "MAGISK ERROR: couldn't find valid file to patch!" 43 | + logger.info("Patching (prebuilt): %s", bimg) 44 | + mpatcher = [ top_dir + '/vendor/extendrom/config/magisk/patch.sh', bimg , top_dir ] 45 | + RunAndCheckOutput(mpatcher, verbose=True, env={'system_root_image': info_dict.get("system_root_image", "false")}) 46 | + logger.info("avoid user confusion (prebuilt): %s", targetimg) 47 | + shutil.copy(bimg, targetimg) # not actually required - but to avoid user mistakes 48 | + # END # EXTENDROM: Magisk patcher (prebuilt) 49 | + 50 | if os.path.exists(prebuilt_path): 51 | logger.info("using prebuilt %s from BOOTABLE_IMAGES...", prebuilt_name) 52 | return File.FromLocalFile(name, prebuilt_path) 53 | -------------------------------------------------------------------------------- /config/magisk/lineage/A11: -------------------------------------------------------------------------------- 1 | A13 -------------------------------------------------------------------------------- /config/magisk/lineage/A12: -------------------------------------------------------------------------------- 1 | A13 -------------------------------------------------------------------------------- /config/magisk/lineage/A13/0001-build_make_tools_releasetools_common.patch: -------------------------------------------------------------------------------- 1 | 2 | project build/make/ 3 | diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py 4 | index c8389388df..c58e27db49 100644 5 | --- a/tools/releasetools/common.py 6 | +++ b/tools/releasetools/common.py 7 | @@ -1323,6 +1323,13 @@ def _BuildBootableImage(image_name, sourcedir, fs_config_file, info_dict=None, 8 | img_unsigned.close() 9 | img_keyblock.close() 10 | 11 | + # EXTENDROM: Magisk patch (build) 12 | + if (partition_name == "boot" and info_dict.get("init_boot") != "true") or partition_name == "init_boot": 13 | + top_dir = os.getenv('ANDROID_BUILD_TOP', os.environ.get('PWD')) 14 | + mpatcher = [ top_dir + '/vendor/extendrom/config/magisk/patch.sh', img.name , top_dir ] 15 | + logger.info("Patching (build): %s", img.name) 16 | + RunAndCheckOutput(mpatcher, verbose=True, env={'system_root_image': info_dict.get("system_root_image", "false")}) 17 | + 18 | # AVB: if enabled, calculate and add hash to boot.img or recovery.img. 19 | if info_dict.get("avb_enable") == "true": 20 | avbtool = info_dict["avb_avbtool"] 21 | @@ -1358,6 +1365,27 @@ def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir, 22 | the source files in 'unpack_dir'/'tree_subdir'.""" 23 | 24 | prebuilt_path = os.path.join(unpack_dir, "BOOTABLE_IMAGES", prebuilt_name) 25 | + 26 | + # EXTENDROM: Magisk patcher (prebuilt) 27 | + if (prebuilt_name == "boot.img" or prebuilt_name == "init_boot.img") and os.path.exists(prebuilt_path): 28 | + if info_dict is None: 29 | + info_dict = OPTIONS.info_dict 30 | + build_info = BuildInfo(info_dict) 31 | + top_dir = os.getenv('ANDROID_BUILD_TOP', os.environ.get('PWD')) 32 | + codename = build_info.GetOemProperty("ro.product.device") 33 | + targetimg = top_dir + "/out/target/product/" + codename + "/" + prebuilt_name 34 | + if os.path.exists(prebuilt_path): 35 | + bimg = os.path.join(top_dir, prebuilt_path) 36 | + else: 37 | + bimg = os.path.join(top_dir, unpack_dir, "IMAGES", prebuilt_name) 38 | + if not os.path.exists(bimg): 39 | + assert False, "MAGISK ERROR: couldn't find valid file to patch!" 40 | + logger.info("Patching (prebuilt): %s", bimg) 41 | + mpatcher = [ top_dir + '/vendor/extendrom/config/magisk/patch.sh', bimg , top_dir ] 42 | + RunAndCheckOutput(mpatcher, verbose=True, env={'system_root_image': info_dict.get("system_root_image", "false")}) 43 | + logger.info("avoid user confusion (prebuilt): %s", targetimg) 44 | + shutil.copy(bimg, targetimg) # not actually required - but to avoid user mistakes 45 | + 46 | if os.path.exists(prebuilt_path): 47 | logger.info("using prebuilt %s from BOOTABLE_IMAGES...", prebuilt_name) 48 | return File.FromLocalFile(name, prebuilt_path) 49 | -------------------------------------------------------------------------------- /config/magisk/lineage/A14: -------------------------------------------------------------------------------- 1 | A13 -------------------------------------------------------------------------------- /config/magisk/lineage/A15: -------------------------------------------------------------------------------- 1 | A13 -------------------------------------------------------------------------------- /config/magisk/lineage/A9/0001-build_make_tools_releasetools_common.patch: -------------------------------------------------------------------------------- 1 | 2 | project build/make/ 3 | diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py 4 | index f7ab11cd8..d5b19a40f 100644 5 | --- a/tools/releasetools/common.py 6 | +++ b/tools/releasetools/common.py 7 | @@ -529,6 +529,13 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None, 8 | img_unsigned.close() 9 | img_keyblock.close() 10 | 11 | + # EXTENDROM: Magisk patcher 12 | + if (partition_name == "boot" and info_dict.get("init_boot") != "true") or partition_name == "init_boot": 13 | + mpatcher = [ 'vendor/extendrom/config/magisk/patch.sh', img.name ] 14 | + p = Run(mpatcher, verbose=True, env={'system_root_image': info_dict.get("system_root_image", "false")}, stdout=subprocess.PIPE) 15 | + p.communicate() 16 | + assert p.returncode == 0, "EXTENDROM: FATAL error %i occured!" % p.returncode 17 | + 18 | # AVB: if enabled, calculate and add hash to boot.img or recovery.img. 19 | if info_dict.get("avb_enable") == "true": 20 | avbtool = os.getenv('AVBTOOL') or info_dict["avb_avbtool"] 21 | -------------------------------------------------------------------------------- /config/orr_installsrc/lineage/A11/packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (C) 2025 steadfasterX 4 | * LICENSE: GNU General Public License v3.0 5 | * 6 | */ 7 | 8 | package com.android.settings.development; 9 | 10 | import android.content.Context; 11 | import androidx.preference.Preference; 12 | import com.android.settings.core.PreferenceControllerMixin; 13 | import com.android.settingslib.development.DeveloperOptionsPreferenceController; 14 | 15 | public class ER_OrrInstallSrcInfo extends DeveloperOptionsPreferenceController 16 | implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { 17 | 18 | private static final String ER_ORR_INSTALLSRC_KEY_INFO = "extendrom_orr_installsrc_info"; 19 | 20 | public ER_OrrInstallSrcInfo(Context context) { 21 | super(context); 22 | } 23 | 24 | @Override 25 | public String getPreferenceKey() { 26 | return ER_ORR_INSTALLSRC_KEY_INFO; 27 | } 28 | 29 | @Override 30 | public boolean onPreferenceChange(Preference preference, Object newValue) { 31 | return true; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /config/orr_installsrc/lineage/A11/packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcPreferenceController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (C) 2024 steadfasterX 4 | * LICENSE: GNU General Public License v3.0 5 | * 6 | */ 7 | 8 | package com.android.settings.development; 9 | 10 | import android.content.Context; 11 | import android.os.SystemProperties; 12 | 13 | import androidx.annotation.VisibleForTesting; 14 | import androidx.preference.Preference; 15 | import androidx.preference.SwitchPreference; 16 | 17 | import com.android.settings.core.PreferenceControllerMixin; 18 | import com.android.settingslib.development.DeveloperOptionsPreferenceController; 19 | 20 | public class ER_OrrInstallSrcPreferenceController extends DeveloperOptionsPreferenceController 21 | implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { 22 | 23 | private static final String ER_ORR_INSTALLSRC_KEY = "extendrom_orr_installsrc"; 24 | private static final String PERSIST_PROPERTY_ER_ORR_INSTALLSRC = "persist.vendor.er.orrinstallsrc"; 25 | 26 | @VisibleForTesting 27 | static final String SETTING_VALUE_ENABLED = "enabled"; 28 | @VisibleForTesting 29 | static final String SETTING_VALUE_DISABLED = "disabled"; 30 | 31 | public ER_OrrInstallSrcPreferenceController(Context context) { 32 | super(context); 33 | } 34 | 35 | @Override 36 | public String getPreferenceKey() { 37 | return ER_ORR_INSTALLSRC_KEY; 38 | } 39 | 40 | @Override 41 | public boolean onPreferenceChange(Preference preference, Object newValue) { 42 | final boolean isEnabled = (Boolean) newValue; 43 | SystemProperties.set(PERSIST_PROPERTY_ER_ORR_INSTALLSRC, 44 | isEnabled ? SETTING_VALUE_ENABLED : SETTING_VALUE_DISABLED); 45 | return true; 46 | } 47 | 48 | @Override 49 | public void updateState(Preference preference) { 50 | final String recMode = SystemProperties.get(PERSIST_PROPERTY_ER_ORR_INSTALLSRC, SETTING_VALUE_DISABLED); 51 | ((SwitchPreference) preference).setChecked(SETTING_VALUE_ENABLED.equals(recMode)); 52 | } 53 | 54 | @Override 55 | protected void onDeveloperOptionsSwitchDisabled() { 56 | super.onDeveloperOptionsSwitchDisabled(); 57 | SystemProperties.set(PERSIST_PROPERTY_ER_ORR_INSTALLSRC, SETTING_VALUE_DISABLED); 58 | ((SwitchPreference) mPreference).setChecked(false); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /config/orr_installsrc/lineage/A13/001_framework_base.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java 4 | index 094214417ce2..53564971bbef 100644 5 | --- a/services/core/java/com/android/server/pm/ComputerEngine.java 6 | +++ b/services/core/java/com/android/server/pm/ComputerEngine.java 7 | @@ -5180,6 +5180,47 @@ public class ComputerEngine implements Computer { 8 | } 9 | } 10 | 11 | + /** 12 | + extendrom intercept installation source 13 | + - com.machiav3lli.backup: Neo Backup 14 | + - F-Droid on e.g A11 results in: com.android.packageinstaller 15 | + - null: usually a system app 16 | + callingUid != Process.SYSTEM_UID: show App info correctly, allows origin App Store update 17 | + **/ 18 | + AndroidPackage p = mPackages.get(packageName); 19 | + boolean systemApp = p.isSystem(); 20 | + if (!systemApp) { 21 | + String PACKAGE_PLAY_STORE = "com.android.vending"; 22 | + String[] PACKAGES_SPOOF_INSTALLSOURCE = 23 | + new String[] { "com.aurora.store", 24 | + "dev.imranr.obtainium", 25 | + "com.machiav3lli.backup" 26 | + }; 27 | + try { 28 | + String interceptInstSrc = android.os.SystemProperties.get( 29 | + "persist.vendor.er.orrinstallsrc", "disabled"); 30 | + 31 | + if (callingUid != Process.SYSTEM_UID 32 | + && "enabled".equals(interceptInstSrc) 33 | + && installSource.installerPackageName != null 34 | + && mSettings.getPackage(PACKAGE_PLAY_STORE) != null 35 | + && (Arrays.asList(PACKAGES_SPOOF_INSTALLSOURCE).contains(installSource.installerPackageName) 36 | + || Arrays.asList(PACKAGES_SPOOF_INSTALLSOURCE).contains(installSource.initiatingPackageName))) { 37 | + Log.w(TAG, "EXTENDROM: cond4: INTERCEPTING !!! installer/initiator: " + installSource.installerPackageName + "/" + installSource.initiatingPackageName + ", pkg: " + packageName + ", UID: " + callingUid + ", systemApp: " + systemApp); 38 | + installerPackageName = PACKAGE_PLAY_STORE; 39 | + } else { 40 | + Log.d(TAG, "EXTENDROM: cond4: NOT intercepting installer/initiator: " + installSource.installerPackageName + "/" + installSource.initiatingPackageName + ", pkg: " + packageName + ", UID: " + callingUid + ", systemApp: " + systemApp + ", originator: " + installSource.originatingPackageName); 41 | + } 42 | + } catch (Exception e) { 43 | + Log.e(TAG, "EXTENDROM: Error occured: " + e.getMessage()); 44 | + } 45 | + //Log.d(TAG, "EXTENDROM: cond1: installer/initiator: " + ps.installSource.installerPackageName + "/" + ps.installSource.initiatingPackageName + ", pkg: " + packageName + ", UID: " + callingUid + ", systemApp: " + systemApp); 46 | + //} else { 47 | + // Log.d(TAG, "EXTENDROM: cond0: installer/initiator: " + ps.installSource.installerPackageName + "/" + ps.installSource.initiatingPackageName + ", pkg: " + packageName + ", UID: " + callingUid + ", systemApp: " + systemApp); 48 | + } 49 | + // end: extendrom intercept installation source 50 | + Log.w(TAG, "EXTENDROM: getInstallSourceInfo: installer/origin: " + installerPackageName + "/" + installSource.installerPackageName + ", pkg: " + packageName); 51 | + 52 | if (installSource.isInitiatingPackageUninstalled) { 53 | // We can't check visibility in the usual way, since the initiating package is no 54 | // longer present. So we apply simpler rules to whether to expose the info: 55 | -------------------------------------------------------------------------------- /config/orr_installsrc/lineage/A13/packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcInfo.java: -------------------------------------------------------------------------------- 1 | ../A11/packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcInfo.java -------------------------------------------------------------------------------- /config/orr_installsrc/lineage/A13/packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcPreferenceController.java: -------------------------------------------------------------------------------- 1 | ../A11/packages-apps-Settings-src-com-android-settings-development-OrrInstallSrcPreferenceController.java -------------------------------------------------------------------------------- /config/property.te.sepolicy: -------------------------------------------------------------------------------- 1 | #type extendrom_prop, vendor_property_type; 2 | vendor_public_prop(extendrom_prop); 3 | -------------------------------------------------------------------------------- /config/property_contexts.sepolicy: -------------------------------------------------------------------------------- 1 | persist.vendor.er. u:object_r:extendrom_prop:s0 2 | persist.vendor.extendrom. u:object_r:extendrom_prop:s0 3 | -------------------------------------------------------------------------------- /config/signing/aicp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/signing/aosp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/signing/axp/A10: -------------------------------------------------------------------------------- 1 | ../lineage/A10 -------------------------------------------------------------------------------- /config/signing/axp/A13: -------------------------------------------------------------------------------- 1 | ../lineage/A13 -------------------------------------------------------------------------------- /config/signing/axp/A14: -------------------------------------------------------------------------------- 1 | ../lineage/A14 -------------------------------------------------------------------------------- /config/signing/lineage/A10/build_make_tools_releasetools_fixpython.patch: -------------------------------------------------------------------------------- 1 | 2 | project build/make/ 3 | diff --git a/tools/releasetools/sign_target_files_apks.py b/tools/releasetools/sign_target_files_apks.py 4 | index d86014a01..c6ae5b0f6 100755 5 | --- a/tools/releasetools/sign_target_files_apks.py 6 | +++ b/tools/releasetools/sign_target_files_apks.py 7 | @@ -737,13 +737,14 @@ def ReplaceOtaKeys(input_tf_zip, output_tf_zip, misc_info): 8 | extra_recovery_keys = [] 9 | 10 | mapped_keys = [] 11 | - for k in keylist: 12 | - m = re.match(r"^(.*)\.x509\.pem$", k) 13 | + for kl in keylist: 14 | + k = kl.decode('ISO-8859-1') 15 | + m = re.match(r"^(.*)$", k) 16 | if not m: 17 | raise common.ExternalError( 18 | "can't parse \"%s\" from META/otakeys.txt" % (k,)) 19 | k = m.group(1) 20 | - mapped_keys.append(OPTIONS.key_map.get(k, k) + ".x509.pem") 21 | + mapped_keys.append(OPTIONS.key_map.get(k, k)) 22 | 23 | if mapped_keys: 24 | print("using:\n ", "\n ".join(mapped_keys)) 25 | -------------------------------------------------------------------------------- /config/signing/lineage/A10/system_update_engine.patch: -------------------------------------------------------------------------------- 1 | 2 | project system/update_engine/ 3 | diff --git a/payload_consumer/payload_verifier.cc b/payload_consumer/payload_verifier.cc 4 | index 8a3ea650..cd22dfc4 100644 5 | --- a/payload_consumer/payload_verifier.cc 6 | +++ b/payload_consumer/payload_verifier.cc 7 | @@ -223,7 +223,7 @@ bool PayloadVerifier::GetRawHashFromSignature( 8 | 9 | bool PayloadVerifier::PadRSASHA256Hash(brillo::Blob* hash, size_t rsa_size) { 10 | TEST_AND_RETURN_FALSE(hash->size() == kSHA256Size); 11 | - TEST_AND_RETURN_FALSE(rsa_size == 256 || rsa_size == 512); 12 | + TEST_AND_RETURN_FALSE(rsa_size == 256 || rsa_size == 512 || rsa_size == 1024); 13 | 14 | // The following is a standard PKCS1-v1_5 padding for SHA256 signatures, as 15 | // defined in RFC3447 section 9.2. It is prepended to the actual signature 16 | -------------------------------------------------------------------------------- /config/signing/lineage/A11: -------------------------------------------------------------------------------- 1 | A10 -------------------------------------------------------------------------------- /config/signing/lineage/A12/bootable_recovery.patch: -------------------------------------------------------------------------------- 1 | ../A10/bootable_recovery.patch -------------------------------------------------------------------------------- /config/signing/lineage/A12/build_make_tools_releasetools_fixpython.patch: -------------------------------------------------------------------------------- 1 | 2 | project build/make/ 3 | diff --git a/tools/releasetools/sign_target_files_apks.py b/tools/releasetools/sign_target_files_apks.py 4 | index 089d8f7455..eb6aa77e14 100755 5 | --- a/tools/releasetools/sign_target_files_apks.py 6 | +++ b/tools/releasetools/sign_target_files_apks.py 7 | @@ -946,8 +946,9 @@ def ReplaceOtaKeys(input_tf_zip, output_tf_zip, misc_info): 8 | raise common.ExternalError(k + " does not exist or is not a file") 9 | 10 | mapped_keys = [] 11 | - for k in keylist: 12 | - m = re.match(r"^(.*)\.x509\.pem$", k) 13 | + for kl in keylist: 14 | + k = kl.decode('ISO-8859-1') 15 | + m = re.match(r"^(.*)$", k) 16 | if not m: 17 | raise common.ExternalError( 18 | "can't parse \"%s\" from META/otakeys.txt" % (k,)) 19 | -------------------------------------------------------------------------------- /config/signing/lineage/A12/system_update_engine.patch: -------------------------------------------------------------------------------- 1 | 2 | project system/update_engine/ 3 | diff --git a/payload_consumer/payload_verifier.cc b/payload_consumer/payload_verifier.cc 4 | index 8a3ea650..cd22dfc4 100644 5 | --- a/payload_consumer/payload_verifier.cc 6 | +++ b/payload_consumer/payload_verifier.cc 7 | @@ -223,7 +223,7 @@ bool PayloadVerifier::GetRawHashFromSignature( 8 | 9 | bool PayloadVerifier::PadRSASHA256Hash(brillo::Blob* hash, size_t rsa_size) { 10 | TEST_AND_RETURN_FALSE(hash->size() == kSHA256Size); 11 | - TEST_AND_RETURN_FALSE(rsa_size == 256 || rsa_size == 512); 12 | + TEST_AND_RETURN_FALSE(rsa_size == 256 || rsa_size == 512 || rsa_size == 1024); 13 | 14 | // The following is a standard PKCS1-v1_5 padding for SHA256 signatures, as 15 | // defined in RFC3447 section 9.2. It is prepended to the actual signature 16 | -------------------------------------------------------------------------------- /config/signing/lineage/A13/build_make_tools_releasetools_fixpython.patch: -------------------------------------------------------------------------------- 1 | ../A12/build_make_tools_releasetools_fixpython.patch -------------------------------------------------------------------------------- /config/signing/lineage/A13/system_update_engine.patch: -------------------------------------------------------------------------------- 1 | ../A12/system_update_engine.patch -------------------------------------------------------------------------------- /config/signing/lineage/A14/bootable_recovery.patch: -------------------------------------------------------------------------------- 1 | ../A13/bootable_recovery.patch -------------------------------------------------------------------------------- /config/signing/lineage/A14/build_make_tools_releasetools_fixpython.patch: -------------------------------------------------------------------------------- 1 | ../A13/build_make_tools_releasetools_fixpython.patch -------------------------------------------------------------------------------- /config/signing/lineage/A14/system_update_engine.patch: -------------------------------------------------------------------------------- 1 | ../A13/system_update_engine.patch -------------------------------------------------------------------------------- /config/signing/lineage/A15/bootable_recovery.patch: -------------------------------------------------------------------------------- 1 | ../A13/bootable_recovery.patch -------------------------------------------------------------------------------- /config/signing/lineage/A15/system_update_engine.patch: -------------------------------------------------------------------------------- 1 | ../A13/system_update_engine.patch -------------------------------------------------------------------------------- /config/sigspoof/README.md: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | This implements signature spoofing support to any (supported) ROM. 4 | 5 | Check the [wiki](https://github.com/sfX-android/android_vendor_extendrom/wiki/Signature-spoofing-support) for configuration options and how to use it. 6 | 7 | # References / Credits 8 | 9 | - Signature spoofing patches itself are mainly taken from the [lineage4microg](https://github.com/lineageos4microg/docker-lineage-cicd/tree/master/src/signature_spoofing_patches) project while minimized, optimized and enhanced as described in the extendrom documentation. 10 | - PackageInfo.signingInfo extension [A11](https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/411385) (based on A12) 11 | - PackageInfo.signingInfo extension [A12](https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/411385) 12 | - PackageInfo.signingInfo extension [A13](https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/411384) 13 | - PackageInfo.signingInfo extension [A14](https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/411374) 14 | -------------------------------------------------------------------------------- /config/sigspoof/aicp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/sigspoof/aosp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/sigspoof/axp: -------------------------------------------------------------------------------- 1 | lineage -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/01-frameworks-base-core-api-current.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/api/current.txt b/api/current.txt 4 | index 487e57d114c9..04e69741b9fd 100644 5 | --- a/api/current.txt 6 | +++ b/api/current.txt 7 | @@ -87,6 +87,7 @@ package android { 8 | field public static final String DUMP = "android.permission.DUMP"; 9 | field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR"; 10 | field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST"; 11 | + field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE"; 12 | field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE"; 13 | field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS"; 14 | field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED"; 15 | @@ -222,6 +223,7 @@ package android { 16 | field public static final String CALL_LOG = "android.permission-group.CALL_LOG"; 17 | field public static final String CAMERA = "android.permission-group.CAMERA"; 18 | field public static final String CONTACTS = "android.permission-group.CONTACTS"; 19 | + field public static final String FAKE_PACKAGE = "android.permission-group.FAKE_PACKAGE"; 20 | field public static final String LOCATION = "android.permission-group.LOCATION"; 21 | field public static final String MICROPHONE = "android.permission-group.MICROPHONE"; 22 | field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES"; 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/02-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java 4 | index 9a4edcc5ea39..5c06dc64c22f 100644 5 | --- a/services/core/java/com/android/server/pm/PackageManagerService.java 6 | +++ b/services/core/java/com/android/server/pm/PackageManagerService.java 7 | @@ -190,6 +190,7 @@ import android.content.pm.SELinuxUtil; 8 | import android.content.pm.ServiceInfo; 9 | import android.content.pm.SharedLibraryInfo; 10 | import android.content.pm.Signature; 11 | +import android.content.pm.SigningInfo; 12 | import android.content.pm.SuspendDialogInfo; 13 | import android.content.pm.UserInfo; 14 | import android.content.pm.VerifierDeviceIdentity; 15 | @@ -4203,8 +4204,9 @@ public class PackageManagerService extends IPackageManager.Stub 16 | }); 17 | } 18 | 19 | - PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags, 20 | - ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId); 21 | + PackageInfo packageInfo = mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags, 22 | + ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId), 23 | + permissions); 24 | 25 | if (packageInfo == null) { 26 | return null; 27 | @@ -4240,6 +4242,36 @@ public class PackageManagerService extends IPackageManager.Stub 28 | } 29 | } 30 | 31 | + private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi, 32 | + Set permissions) { 33 | + try { 34 | + if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") 35 | + && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1 36 | + && p.mAppMetaData != null) { 37 | + String sig = p.mAppMetaData.getString("fake-signature"); 38 | + if (sig != null) { 39 | + pi.signatures = new Signature[] {new Signature(sig)}; 40 | + try { 41 | + pi.signingInfo = new SigningInfo( 42 | + new SigningDetails( 43 | + pi.signatures, 44 | + SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V3, 45 | + PackageParser.toSigningKeys(pi.signatures), 46 | + null 47 | + ) 48 | + ); 49 | + } catch (CertificateException e) { 50 | + Slog.e(TAG, "Caught an exception when creating signing keys: ", e); 51 | + } 52 | + } 53 | + } 54 | + } catch (Throwable t) { 55 | + // We should never die because of any failures, this is system code! 56 | + Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t); 57 | + } 58 | + return pi; 59 | + } 60 | + 61 | @Override 62 | public void checkPackageStartable(String packageName, int userId) { 63 | final int callingUid = Binder.getCallingUid(); 64 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/03-packages-apps-PermissionController-src-com-android-packageinstaller-permission-utils-Utils.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/apps/PermissionController/ 3 | diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java 4 | index 48793ab51..d75a58360 100644 5 | --- a/src/com/android/packageinstaller/permission/utils/Utils.java 6 | +++ b/src/com/android/packageinstaller/permission/utils/Utils.java 7 | @@ -21,6 +21,7 @@ import static android.Manifest.permission_group.CALENDAR; 8 | import static android.Manifest.permission_group.CALL_LOG; 9 | import static android.Manifest.permission_group.CAMERA; 10 | import static android.Manifest.permission_group.CONTACTS; 11 | +import static android.Manifest.permission_group.FAKE_PACKAGE; 12 | import static android.Manifest.permission_group.LOCATION; 13 | import static android.Manifest.permission_group.MICROPHONE; 14 | import static android.Manifest.permission_group.NEARBY_DEVICES; 15 | @@ -341,6 +342,8 @@ public final class Utils { 16 | PLATFORM_PERMISSIONS.put(Manifest.permission.BODY_SENSORS_BACKGROUND, SENSORS); 17 | } 18 | 19 | + PLATFORM_PERMISSIONS.put(Manifest.permission.FAKE_PACKAGE_SIGNATURE, FAKE_PACKAGE); 20 | + 21 | PLATFORM_PERMISSION_GROUPS = new ArrayMap<>(); 22 | int numPlatformPermissions = PLATFORM_PERMISSIONS.size(); 23 | for (int i = 0; i < numPlatformPermissions; i++) { 24 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/04-frameworks-base-core-java-android-app-Activity.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java 4 | index 85a969b8003..b4d9e36a60e 100644 5 | --- a/core/java/android/app/Activity.java 6 | +++ b/base/core/java/android/app/Activity.java 7 | @@ -72,6 +72,7 @@ import android.os.ServiceManager.ServiceNotFoundException; 8 | import android.os.StrictMode; 9 | import android.os.SystemProperties; 10 | import android.os.UserHandle; 11 | +import android.provider.Settings.Secure; 12 | import android.text.Selection; 13 | import android.text.SpannableStringBuilder; 14 | import android.text.TextUtils; 15 | @@ -4478,6 +4479,26 @@ public class Activity extends ContextThemeWrapper 16 | onRequestPermissionsResult(requestCode, new String[0], new int[0]); 17 | return; 18 | } 19 | + 20 | + /* 21 | + Only when the requested permission asks for signature spoofing, check if that is allowed 22 | + in developer options and skip the dialog if not 23 | + */ 24 | + List permlist = Arrays.asList(permissions); 25 | + if (permlist.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) { 26 | + if (android.provider.Settings.Secure.getInt(getContentResolver(), 27 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) { 28 | + Log.w(TAG, "Requested signature spoofing permission (" 29 | + + Arrays.toString(permissions) 30 | + + ") has been denied as it is not enabled in developer options"); 31 | + return; 32 | + } else { 33 | + Log.w(TAG, "The app's permission request for: " 34 | + + Arrays.toString(permissions) 35 | + + " will be processed as signature spoofing is enabled in developer options!"); 36 | + } 37 | + } 38 | + 39 | Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); 40 | startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); 41 | mHasCurrentPermissionsRequest = true; 42 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/05-frameworks-base-core-java-android-provider-Settings.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java 4 | index 4c80a5924eb9..120e017e4b41 100644 5 | --- a/core/java/android/provider/Settings.java 6 | +++ b/core/java/android/provider/Settings.java 7 | @@ -7177,6 +7177,15 @@ public final class Settings { 8 | @Readable 9 | public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; 10 | 11 | + /** 12 | + * extendrom: whether applications can fake a signature. 13 | + * 14 | + *

1 = permit apps to fake signature 15 | + *

0 = disable this feature 16 | + * @hide 17 | + */ 18 | + public static final String ALLOW_SIGNATURE_FAKE = "allow_signature_fake"; 19 | + 20 | /** 21 | * A flag to tell {@link com.android.server.devicepolicy.DevicePolicyManagerService} that 22 | * the default for {@link #INSTALL_NON_MARKET_APPS} is reversed for this user on OTA. So it 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/06-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java 4 | index abf7e748bf2..cda66b52e3c 100644 5 | --- a/services/core/java/com/android/server/pm/PackageManagerService.java 6 | +++ b/services/core/java/com/android/server/pm/PackageManagerService.java 7 | @@ -4095,6 +4095,10 @@ public class PackageManagerService extends IPackageManager.Stub 8 | if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") 9 | && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1 10 | && p.mAppMetaData != null) { 11 | + // extendrom: stop here when not enabled in developer settings 12 | + if (android.provider.Settings.Secure.getInt(mContext.getContentResolver(), 13 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) 14 | + return pi; 15 | String sig = p.mAppMetaData.getString("fake-signature"); 16 | if (sig != null) { 17 | pi.signatures = new Signature[] {new Signature(sig)}; 18 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A10/07-framework-base-core-res-AndroidManifest.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml 4 | index c4837e504f58..1a9d5d33e9f8 100644 5 | --- a/core/res/AndroidManifest.xml 6 | +++ b/core/res/AndroidManifest.xml 7 | @@ -832,6 +832,23 @@ 8 | 9 | 10 | 11 | + 12 | + 17 | + 18 | + 20 | + 25 | + 26 | + 27 | + 28 | 12 | + 16 | + 17 | + 20 | + 21 | + 26 | + 27 | + 28 | + 29 | + 30 | + 31 | 34 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/01-frameworks-base-api-current.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/api/current.txt b/api/current.txt 4 | index 4ab72254811f..da735d24162c 100644 5 | --- a/api/current.txt 6 | +++ b/api/current.txt 7 | @@ -77,6 +77,7 @@ package android { 8 | field public static final String DIAGNOSTIC = "android.permission.DIAGNOSTIC"; 9 | field public static final String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD"; 10 | field public static final String DUMP = "android.permission.DUMP"; 11 | + field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE"; 12 | field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR"; 13 | field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST"; 14 | field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE"; 15 | @@ -183,6 +184,7 @@ package android { 16 | field public static final String CALL_LOG = "android.permission-group.CALL_LOG"; 17 | field public static final String CAMERA = "android.permission-group.CAMERA"; 18 | field public static final String CONTACTS = "android.permission-group.CONTACTS"; 19 | + field public static final String FAKE_PACKAGE = "android.permission-group.FAKE_PACKAGE"; 20 | field public static final String LOCATION = "android.permission-group.LOCATION"; 21 | field public static final String MICROPHONE = "android.permission-group.MICROPHONE"; 22 | field public static final String NETWORK = "android.permission-group.NETWORK"; 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/02-frameworks-base-non-updatable-api-current.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt 4 | index 9badc8c4d9c0..81b554638f06 100644 5 | --- a/non-updatable-api/current.txt 6 | +++ b/non-updatable-api/current.txt 7 | @@ -79,6 +79,7 @@ package android { 8 | field public static final String DUMP = "android.permission.DUMP"; 9 | field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR"; 10 | field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST"; 11 | + field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE"; 12 | field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE"; 13 | field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS"; 14 | field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED"; 15 | @@ -183,6 +184,7 @@ package android { 16 | field public static final String CALL_LOG = "android.permission-group.CALL_LOG"; 17 | field public static final String CAMERA = "android.permission-group.CAMERA"; 18 | field public static final String CONTACTS = "android.permission-group.CONTACTS"; 19 | + field public static final String FAKE_PACKAGE = "android.permission-group.FAKE_PACKAGE"; 20 | field public static final String LOCATION = "android.permission-group.LOCATION"; 21 | field public static final String MICROPHONE = "android.permission-group.MICROPHONE"; 22 | field public static final String NETWORK = "android.permission-group.NETWORK"; 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/03-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java 4 | index af313ce81db3..9646592dfb19 100644 5 | --- a/services/core/java/com/android/server/pm/PackageManagerService.java 6 | +++ b/services/core/java/com/android/server/pm/PackageManagerService.java 7 | @@ -4465,8 +4465,9 @@ public class PackageManagerService extends IPackageManager.Stub 8 | }); 9 | } 10 | 11 | - PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags, 12 | - ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId, ps); 13 | + PackageInfo packageInfo = mayFakeSignature(p, PackageInfoUtils.generate(p, gids, flags, 14 | + ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId, ps), 15 | + permissions); 16 | 17 | if (packageInfo == null) { 18 | return null; 19 | @@ -4502,6 +4503,36 @@ public class PackageManagerService extends IPackageManager.Stub 20 | } 21 | } 22 | 23 | + private PackageInfo mayFakeSignature(AndroidPackage p, PackageInfo pi, 24 | + Set permissions) { 25 | + try { 26 | + if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") 27 | + && p.getTargetSdkVersion() > Build.VERSION_CODES.LOLLIPOP_MR1 28 | + && p.getMetaData() != null) { 29 | + String sig = p.getMetaData().getString("fake-signature"); 30 | + if (sig != null) { 31 | + pi.signatures = new Signature[] {new Signature(sig)}; 32 | + try { 33 | + pi.signingInfo = new SigningInfo( 34 | + new SigningDetails( 35 | + pi.signatures, 36 | + SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V3, 37 | + PackageParser.toSigningKeys(pi.signatures), 38 | + null 39 | + ) 40 | + ); 41 | + } catch (CertificateException e) { 42 | + Slog.e(TAG, "Caught an exception when creating signing keys: ", e); 43 | + } 44 | + } 45 | + } 46 | + } catch (Throwable t) { 47 | + // We should never die because of any failures, this is system code! 48 | + Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t); 49 | + } 50 | + return pi; 51 | + } 52 | + 53 | @Override 54 | public void checkPackageStartable(String packageName, int userId) { 55 | final int callingUid = Binder.getCallingUid(); 56 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/04-framework-base-core-res-AndroidManifest.patch: -------------------------------------------------------------------------------- 1 | ../A13/07-framework-base-core-res-AndroidManifest.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/04-frameworks-base-core-java-android-app-Activity.patch: -------------------------------------------------------------------------------- 1 | ../A10/04-frameworks-base-core-java-android-app-Activity.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/05-frameworks-base-core-java-android-provider-Settings.patch: -------------------------------------------------------------------------------- 1 | ../A13/05-frameworks-base-core-java-android-provider-Settings.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/05-packages-apps-PermissionController-src-com-android-packageinstaller-permission-utils-Utils.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/apps/PermissionController/ 3 | diff --git a/src/com/android/permissioncontroller/permission/utils/Utils.java b/src/com/android/permissioncontroller/permission/utils/Utils.java 4 | index 90acf9223..f692f9862 100644 5 | --- a/src/com/android/permissioncontroller/permission/utils/Utils.java 6 | +++ b/src/com/android/permissioncontroller/permission/utils/Utils.java 7 | @@ -23,6 +23,7 @@ import static android.Manifest.permission_group.CALENDAR; 8 | import static android.Manifest.permission_group.CALL_LOG; 9 | import static android.Manifest.permission_group.CAMERA; 10 | import static android.Manifest.permission_group.CONTACTS; 11 | +import static android.Manifest.permission_group.FAKE_PACKAGE; 12 | import static android.Manifest.permission_group.LOCATION; 13 | import static android.Manifest.permission_group.MICROPHONE; 14 | import static android.Manifest.permission_group.NETWORK; 15 | @@ -221,6 +222,8 @@ public final class Utils { 16 | SPECIAL_RUNTIME_PERMISSIONS.put(Manifest.permission.INTERNET, NETWORK); 17 | SPECIAL_RUNTIME_PERMISSIONS.put(Manifest.permission.OTHER_SENSORS, OTHER_SENSORS); 18 | 19 | + PLATFORM_PERMISSIONS.put(Manifest.permission.FAKE_PACKAGE_SIGNATURE, FAKE_PACKAGE); 20 | + 21 | PLATFORM_PERMISSION_GROUPS = new ArrayMap<>(); 22 | int numPlatformPermissions = PLATFORM_PERMISSIONS.size(); 23 | for (int i = 0; i < numPlatformPermissions; i++) { 24 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/06-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java 4 | index 1a8a23856d81..cce919adcb3e 100644 5 | --- a/services/core/java/com/android/server/pm/PackageManagerService.java 6 | +++ b/services/core/java/com/android/server/pm/PackageManagerService.java 7 | @@ -4509,6 +4509,10 @@ public class PackageManagerService extends IPackageManager.Stub 8 | if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") 9 | && p.getTargetSdkVersion() > Build.VERSION_CODES.LOLLIPOP_MR1 10 | && p.getMetaData() != null) { 11 | + // extendrom: stop here when not enabled in developer settings 12 | + if (android.provider.Settings.Secure.getInt(mContext.getContentResolver(), 13 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) 14 | + return pi; 15 | String sig = p.getMetaData().getString("fake-signature"); 16 | if (sig != null) { 17 | pi.signatures = new Signature[] {new Signature(sig)}; 18 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/07-packages-apps-Settings-res-xml-development_settings.patch: -------------------------------------------------------------------------------- 1 | ../A13/11-packages-apps-Settings-res-xml-development_settings.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/apps/Settings/ 3 | diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java 4 | index c32674ff6f..014d71d257 100644 5 | --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java 6 | +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java 7 | @@ -583,6 +583,8 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra 8 | bluetoothA2dpConfigStore, fragment)); 9 | controllers.add(new SharedDataPreferenceController(context)); 10 | controllers.add(new OverlaySettingsPreferenceController(context)); 11 | + controllers.add(new SpoofSignaturePreferenceController(context)); // extendrom: signature spoofing patch 12 | + controllers.add(new SpoofSignatureInfo(context)); // extendrom: signature spoofing patch 13 | 14 | return controllers; 15 | } 16 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java: -------------------------------------------------------------------------------- 1 | ../A13/09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java -------------------------------------------------------------------------------- /config/sigspoof/lineage/A11/10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java: -------------------------------------------------------------------------------- 1 | ../A13/10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/01-frameworks-base-core-api-current.patch: -------------------------------------------------------------------------------- 1 | ../A13/01-frameworks-base-core-api-current.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-Utils.patch: -------------------------------------------------------------------------------- 1 | ../A13/03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-Utils.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/04-frameworks-base-core-java-android-app-Activity.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java 4 | index 750e3d6f6fed..203baa862e3d 100644 5 | --- a/core/java/android/app/Activity.java 6 | +++ b/core/java/android/app/Activity.java 7 | @@ -163,7 +163,7 @@ import java.util.HashMap; 8 | import java.util.List; 9 | import java.util.concurrent.Executor; 10 | import java.util.function.Consumer; 11 | - 12 | +import android.provider.Settings.Secure; // extendrom: signature spoofing patch 13 | 14 | /** 15 | * An activity is a single, focused thing that the user can do. Almost all 16 | @@ -5408,6 +5409,26 @@ public class Activity extends ContextThemeWrapper 17 | } 18 | } 19 | 20 | + /* 21 | + signature spoofing patch: 22 | + Only when the requested permission asks for signature spoofing, check if that is allowed 23 | + in developer options and skip the dialog if not 24 | + */ 25 | + List permlist = Arrays.asList(permissions); 26 | + if (permlist.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) { 27 | + if (android.provider.Settings.Secure.getInt(getContentResolver(), 28 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) { 29 | + Log.w(TAG, "Requested signature spoofing permission (" 30 | + + Arrays.toString(permissions) 31 | + + ") has been denied as it is not enabled in developer options"); 32 | + return; 33 | + } else { 34 | + Log.w(TAG, "The app's permission request for: " 35 | + + Arrays.toString(permissions) 36 | + + " will be processed as signature spoofing is enabled in developer options!"); 37 | + } 38 | + } 39 | + 40 | final Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); 41 | startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); 42 | mHasCurrentPermissionsRequest = true; 43 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/05-frameworks-base-core-java-android-provider-Settings.patch: -------------------------------------------------------------------------------- 1 | ../A13/05-frameworks-base-core-java-android-provider-Settings.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/06-frameworks-base-services-core-java-com-android-server-pm-PackageManagerService.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java 4 | index 1085c9232214..d738fe3004c0 100644 5 | --- a/services/core/java/com/android/server/pm/PackageManagerService.java 6 | +++ b/services/core/java/com/android/server/pm/PackageManagerService.java 7 | @@ -3339,11 +3339,15 @@ public class PackageManagerService extends IPackageManager.Stub 8 | return null; 9 | } 10 | 11 | - private static PackageInfo applyFakeSignature(AndroidPackage p, PackageInfo pi, 12 | + private PackageInfo applyFakeSignature(AndroidPackage p, PackageInfo pi, 13 | Set permissions) { 14 | try { 15 | if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") 16 | && p.getTargetSdkVersion() > Build.VERSION_CODES.LOLLIPOP_MR1) { 17 | + // extendrom: stop here when not enabled in developer settings 18 | + if (android.provider.Settings.Secure.getInt(mContext.getContentResolver(), 19 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) 20 | + return pi; 21 | String sig = getRequestedFakeSignature(p); 22 | if (sig != null) { 23 | pi.signatures = new Signature[] { new Signature(sig) }; 24 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/07-framework-base-core-res-AndroidManifest.patch: -------------------------------------------------------------------------------- 1 | ../A13/07-framework-base-core-res-AndroidManifest.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/08-packages-apps-Settings-src-com-android-settings-development-DevelopmentSettingsDashboardFragment.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/apps/Settings/ 3 | diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java 4 | index 2834bf7ee76..13fb073c6e8 100644 5 | --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java 6 | +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java 7 | @@ -581,6 +581,8 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra 8 | bluetoothA2dpConfigStore, fragment)); 9 | controllers.add(new SharedDataPreferenceController(context)); 10 | controllers.add(new OverlaySettingsPreferenceController(context)); 11 | + controllers.add(new SpoofSignaturePreferenceController(context)); // extendrom: signature spoofing patch 12 | + controllers.add(new SpoofSignatureInfo(context)); // extendrom: signature spoofing patch 13 | 14 | return controllers; 15 | } 16 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java: -------------------------------------------------------------------------------- 1 | ../A13/09-packages-apps-Settings-src-com-android-settings-development-SpoofSignaturePreferenceController.java -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java: -------------------------------------------------------------------------------- 1 | ../A13/10-packages-apps-Settings-src-com-android-settings-development-SpoofSignatureInfo.java -------------------------------------------------------------------------------- /config/sigspoof/lineage/A12/11-packages-apps-Settings-res-xml-development_settings.patch: -------------------------------------------------------------------------------- 1 | ../A13/11-packages-apps-Settings-res-xml-development_settings.patch -------------------------------------------------------------------------------- /config/sigspoof/lineage/A13/01-frameworks-base-core-api-current.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/api/current.txt b/core/api/current.txt 4 | index 487e57d114c9..04e69741b9fd 100644 5 | --- a/core/api/current.txt 6 | +++ b/core/api/current.txt 7 | @@ -87,6 +87,7 @@ package android { 8 | field public static final String DUMP = "android.permission.DUMP"; 9 | field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR"; 10 | field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST"; 11 | + field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE"; 12 | field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE"; 13 | field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS"; 14 | field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED"; 15 | @@ -222,6 +223,7 @@ package android { 16 | field public static final String CALL_LOG = "android.permission-group.CALL_LOG"; 17 | field public static final String CAMERA = "android.permission-group.CAMERA"; 18 | field public static final String CONTACTS = "android.permission-group.CONTACTS"; 19 | + field public static final String FAKE_PACKAGE = "android.permission-group.FAKE_PACKAGE"; 20 | field public static final String LOCATION = "android.permission-group.LOCATION"; 21 | field public static final String MICROPHONE = "android.permission-group.MICROPHONE"; 22 | field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES"; 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A13/03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-Utils.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/modules/Permission/ 3 | diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java 4 | index 48793ab51..d75a58360 100644 5 | --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java 6 | +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java 7 | @@ -21,6 +21,7 @@ import static android.Manifest.permission_group.CALENDAR; 8 | import static android.Manifest.permission_group.CALL_LOG; 9 | import static android.Manifest.permission_group.CAMERA; 10 | import static android.Manifest.permission_group.CONTACTS; 11 | +import static android.Manifest.permission_group.FAKE_PACKAGE; 12 | import static android.Manifest.permission_group.LOCATION; 13 | import static android.Manifest.permission_group.MICROPHONE; 14 | import static android.Manifest.permission_group.NEARBY_DEVICES; 15 | @@ -341,6 +342,8 @@ public final class Utils { 16 | PLATFORM_PERMISSIONS.put(Manifest.permission.BODY_SENSORS_BACKGROUND, SENSORS); 17 | } 18 | 19 | + PLATFORM_PERMISSIONS.put(Manifest.permission.FAKE_PACKAGE_SIGNATURE, FAKE_PACKAGE); 20 | + 21 | PLATFORM_PERMISSION_GROUPS = new ArrayMap<>(); 22 | int numPlatformPermissions = PLATFORM_PERMISSIONS.size(); 23 | for (int i = 0; i < numPlatformPermissions; i++) { 24 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A13/04-frameworks-base-core-java-android-app-Activity.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java 4 | index 03a97ba1d977..565267593a86 100644 5 | --- a/core/java/android/app/Activity.java 6 | +++ b/core/java/android/app/Activity.java 7 | @@ -171,12 +171,13 @@ import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.ref.WeakReference; 10 | import java.util.ArrayList; 11 | +import java.util.Arrays; 12 | import java.util.Collections; 13 | import java.util.HashMap; 14 | import java.util.List; 15 | import java.util.concurrent.Executor; 16 | import java.util.function.Consumer; 17 | - 18 | +import android.provider.Settings.Secure; // extendrom: signature spoofing patch 19 | 20 | /** 21 | * An activity is a single, focused thing that the user can do. Almost all 22 | @@ -5408,6 +5409,26 @@ public class Activity extends ContextThemeWrapper 23 | } 24 | } 25 | 26 | + /* 27 | + signature spoofing patch: 28 | + Only when the requested permission asks for signature spoofing, check if that is allowed 29 | + in developer options and skip the dialog if not 30 | + */ 31 | + List permlist = Arrays.asList(permissions); 32 | + if (permlist.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) { 33 | + if (android.provider.Settings.Secure.getInt(getContentResolver(), 34 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) { 35 | + Log.w(TAG, "Requested signature spoofing permission (" 36 | + + Arrays.toString(permissions) 37 | + + ") has been denied as it is not enabled in developer options"); 38 | + return; 39 | + } else { 40 | + Log.w(TAG, "The app's permission request for: " 41 | + + Arrays.toString(permissions) 42 | + + " will be processed as signature spoofing is enabled in developer options!"); 43 | + } 44 | + } 45 | + 46 | final Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); 47 | startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); 48 | mHasCurrentPermissionsRequest = true; 49 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A13/05-frameworks-base-core-java-android-provider-Settings.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java 4 | index 4c80a5924eb9..120e017e4b41 100644 5 | --- a/core/java/android/provider/Settings.java 6 | +++ b/core/java/android/provider/Settings.java 7 | @@ -7177,6 +7177,15 @@ public final class Settings { 8 | @Readable 9 | public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; 10 | 11 | + /** 12 | + * extendrom: whether applications can fake a signature. 13 | + * 14 | + *

1 = permit apps to fake signature 15 | + *

0 = disable this feature 16 | + * @hide 17 | + */ 18 | + public static final String ALLOW_SIGNATURE_FAKE = "allow_signature_fake"; 19 | + 20 | /** 21 | * A flag to tell {@link com.android.server.devicepolicy.DevicePolicyManagerService} that 22 | * the default for {@link #INSTALL_NON_MARKET_APPS} is reversed for this user on OTA. So it 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A13/06-frameworks-base-services-core-java-com-android-server-pm-ComputerEngine.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java 4 | index 90f75dedef59..7dcce4f53a8d 100644 5 | --- a/services/core/java/com/android/server/pm/ComputerEngine.java 6 | +++ b/services/core/java/com/android/server/pm/ComputerEngine.java 7 | @@ -1613,6 +1613,10 @@ public class ComputerEngine implements Computer { 8 | try { 9 | if (p.getMetaData() != null && 10 | p.getTargetSdkVersion() > Build.VERSION_CODES.LOLLIPOP_MR1) { 11 | + // extendrom: stop here when not enabled in developer settings 12 | + if (android.provider.Settings.Secure.getInt(mContext.getContentResolver(), 13 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) 14 | + return pi; 15 | String sig = p.getMetaData().getString("fake-signature"); 16 | if (sig != null && 17 | permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) { 18 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A13/07-framework-base-core-res-AndroidManifest.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml 4 | index c4837e504f58..1a9d5d33e9f8 100644 5 | --- a/core/res/AndroidManifest.xml 6 | +++ b/core/res/AndroidManifest.xml 7 | @@ -832,6 +832,23 @@ 8 | 9 | 10 | 11 | + 12 | + 17 | + 18 | + 20 | + 25 | + 26 | + 27 | + 28 | 12 | + 16 | + 17 | + 20 | + 21 | + 26 | + 27 | + 28 | + 29 | + 30 | + 31 | 34 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/01-frameworks-base-core-api-current.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/api/current.txt b/core/api/current.txt 4 | index 487e57d114c9..04e69741b9fd 100644 5 | --- a/core/api/current.txt 6 | +++ b/core/api/current.txt 7 | @@ -100,6 +101,7 @@ package android { 8 | field public static final String EXECUTE_APP_ACTION = "android.permission.EXECUTE_APP_ACTION"; 9 | field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR"; 10 | field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST"; 11 | + field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE"; 12 | field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE"; 13 | field public static final String FOREGROUND_SERVICE_CAMERA = "android.permission.FOREGROUND_SERVICE_CAMERA"; 14 | field public static final String FOREGROUND_SERVICE_CONNECTED_DEVICE = "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE"; 15 | @@ -244,6 +245,7 @@ package android { 16 | field public static final String CALL_LOG = "android.permission-group.CALL_LOG"; 17 | field public static final String CAMERA = "android.permission-group.CAMERA"; 18 | field public static final String CONTACTS = "android.permission-group.CONTACTS"; 19 | + field public static final String FAKE_PACKAGE = "android.permission-group.FAKE_PACKAGE"; 20 | field public static final String LOCATION = "android.permission-group.LOCATION"; 21 | field public static final String MICROPHONE = "android.permission-group.MICROPHONE"; 22 | field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES"; 23 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/03-packages-modules-Permission-PermissionController-src-com-android_permissioncontroller-permission-utils-PermissionMapping.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/modules/Permission/ 3 | diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt 4 | index 840a033c3..df012305c 100644 5 | --- a/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt 6 | +++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/PermissionMapping.kt 7 | @@ -176,6 +176,8 @@ object PermissionMapping { 8 | 9 | PLATFORM_PERMISSIONS[Manifest.permission.BODY_SENSORS] = Manifest.permission_group.SENSORS 10 | 11 | + PLATFORM_PERMISSIONS[Manifest.permission.FAKE_PACKAGE_SIGNATURE] = Manifest.permission_group.FAKE_PACKAGE 12 | + 13 | if (SdkLevel.isAtLeastT()) { 14 | PLATFORM_PERMISSIONS[Manifest.permission.POST_NOTIFICATIONS] = 15 | Manifest.permission_group.NOTIFICATIONS -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/04-frameworks-base-core-java-android-app-Activity.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java 4 | index 63cafdc6c855..3118c20182b4 100644 5 | --- a/core/java/android/app/Activity.java 6 | +++ b/core/java/android/app/Activity.java 7 | @@ -184,12 +184,13 @@ import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.ref.WeakReference; 10 | import java.util.ArrayList; 11 | +import java.util.Arrays; 12 | import java.util.Collections; 13 | import java.util.HashMap; 14 | import java.util.List; 15 | import java.util.concurrent.Executor; 16 | import java.util.function.Consumer; 17 | - 18 | +import android.provider.Settings.Secure; // extendrom: signature spoofing patch 19 | 20 | /** 21 | * An activity is a single, focused thing that the user can do. Almost all 22 | @@ -5695,6 +5696,26 @@ public class Activity extends ContextThemeWrapper 23 | 24 | PackageManager packageManager = getDeviceId() == deviceId ? getPackageManager() 25 | : createDeviceContext(deviceId).getPackageManager(); 26 | + 27 | + /* 28 | + signature spoofing patch: 29 | + Only when the requested permission asks for signature spoofing, check if that is allowed 30 | + in developer options and skip the dialog if not 31 | + */ 32 | + List permlist = Arrays.asList(permissions); 33 | + if (permlist.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) { 34 | + if (android.provider.Settings.Secure.getInt(getContentResolver(), 35 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) { 36 | + Log.w(TAG, "Requested signature spoofing permission (" 37 | + + Arrays.toString(permissions) 38 | + + ") has been denied as it is not enabled in developer options"); 39 | + return; 40 | + } else { 41 | + Log.w(TAG, "The app's permission request for: " 42 | + + Arrays.toString(permissions) 43 | + + " will be processed as signature spoofing is enabled in developer options!"); 44 | + } 45 | + } 46 | final Intent intent = packageManager.buildRequestPermissionsIntent(permissions); 47 | startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); 48 | mHasCurrentPermissionsRequest = true; 49 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/05-frameworks-base-core-java-android-provider-Settings.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java 4 | index 2b4836861219..4c8674e0c482 100644 5 | --- a/core/java/android/provider/Settings.java 6 | +++ b/core/java/android/provider/Settings.java 7 | @@ -8084,6 +8084,15 @@ public final class Settings { 8 | @Readable 9 | public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; 10 | 11 | + /** 12 | + * extendrom: whether applications can fake a signature. 13 | + * 14 | + *

1 = permit apps to fake signature 15 | + *

0 = disable this feature 16 | + * @hide 17 | + */ 18 | + public static final String ALLOW_SIGNATURE_FAKE = "allow_signature_fake"; 19 | + 20 | /** 21 | * A flag to tell {@link com.android.server.devicepolicy.DevicePolicyManagerService} that 22 | * the default for {@link #INSTALL_NON_MARKET_APPS} is reversed for this user on OTA. So it -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/06-frameworks-base-services-core-java-com-android-server-pm-ComputerEngine.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java 4 | index 3fe35778aec9..ade5aae09483 100644 5 | --- a/services/core/java/com/android/server/pm/ComputerEngine.java 6 | +++ b/services/core/java/com/android/server/pm/ComputerEngine.java 7 | @@ -1476,6 +1476,10 @@ public class ComputerEngine implements Computer { 8 | try { 9 | if (p.getMetaData() != null && 10 | p.getTargetSdkVersion() > Build.VERSION_CODES.LOLLIPOP_MR1) { 11 | + // extendrom: stop here when not enabled in developer settings 12 | + if (android.provider.Settings.Secure.getInt(mContext.getContentResolver(), 13 | + android.provider.Settings.Secure.ALLOW_SIGNATURE_FAKE, 0) == 0) 14 | + return pi; 15 | String sig = p.getMetaData().getString("fake-signature"); 16 | if (sig != null && 17 | permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) { -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/07-framework-base-core-res-AndroidManifest.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml 4 | index abe4b2942ca2..44ff62592ae4 100644 5 | --- a/core/res/AndroidManifest.xml 6 | +++ b/core/res/AndroidManifest.xml 7 | @@ -851,6 +851,22 @@ 8 | 9 | 10 | 11 | + 12 | + 17 | + 18 | + 20 | + 25 | + 26 | + 27 | 12 | + 16 | + 17 | + 20 | + 21 | + 26 | + 27 | + 28 | + 29 | + 30 | + 31 | 34 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A14/12-frameworks-base-core-api-lint-baseline.patch: -------------------------------------------------------------------------------- 1 | 2 | project frameworks/base/ 3 | diff --git a/core/api/lint-baseline.txt b/core/api/lint-baseline.txt 4 | index 1b0da055038d..1574e481876e 100644 5 | --- a/core/api/lint-baseline.txt 6 | +++ b/core/api/lint-baseline.txt 7 | @@ -1108,7 +1108,10 @@ Todo: android.hardware.camera2.params.StreamConfigurationMap: 8 | Todo: android.provider.ContactsContract.RawContacts#newEntityIterator(android.database.Cursor): 9 | Documentation mentions 'TODO' 10 | 11 | - 12 | +UnflaggedApi: android.Manifest.permission#FAKE_PACKAGE_SIGNATURE: 13 | + New API must be flagged with @FlaggedApi: field android.Manifest.permission.FAKE_PACKAGE_SIGNATURE 14 | +UnflaggedApi: android.Manifest.permission_group#FAKE_PACKAGE: 15 | + New API must be flagged with @FlaggedApi: field android.Manifest.permission_group.FAKE_PACKAGE 16 | UnflaggedApi: android.R.color#on_surface_disabled_material: 17 | New API must be flagged with @FlaggedApi: field android.R.color.on_surface_disabled_material 18 | UnflaggedApi: android.R.color#outline_disabled_material: 19 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A15: -------------------------------------------------------------------------------- 1 | A14 -------------------------------------------------------------------------------- /config/sigspoof/lineage/A9/03-packages_apps_Settings.patch: -------------------------------------------------------------------------------- 1 | 2 | project packages/apps/Settings/ 3 | diff --git a/res/values/strings.xml b/res/values/strings.xml 4 | index 9f78d9b654..28a2421b9d 100644 5 | --- a/res/values/strings.xml 6 | +++ b/res/values/strings.xml 7 | @@ -10088,6 +10088,11 @@ 8 | 9 | Devices 10 | 11 | + 12 | + Allow signature spoofing 13 | + Allow apps to bypass security systems by pretending to be a different app 14 | + Allowing apps to bypass security systems can lead to serious security and privacy problems! Check that only benign apps use the corresponding permission when this is active. 15 | + 16 | 17 | A device wants to access your messages. Tap for details. 18 | 19 | diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml 20 | index 8a8d2d4def..abfd8cc637 100644 21 | --- a/res/xml/development_settings.xml 22 | +++ b/res/xml/development_settings.xml 23 | @@ -569,6 +569,12 @@ 24 | android:key="reset_shortcut_manager_throttling" 25 | android:title="@string/reset_shortcut_manager_throttling" /> 26 | 27 | + 32 | + 33 | 4 | * LICENSE: GNU General Public License v3.0 5 | * 6 | */ 7 | 8 | package com.android.settings.development; 9 | 10 | import android.content.Context; 11 | import android.support.v7.preference.Preference; 12 | import com.android.settings.core.PreferenceControllerMixin; 13 | import com.android.settingslib.development.DeveloperOptionsPreferenceController; 14 | 15 | public class SpoofSignatureInfo extends DeveloperOptionsPreferenceController 16 | implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { 17 | 18 | private static final String ALLOW_SIGNATURE_FAKE_KEY_INFO = "allow_signature_fake_info"; 19 | 20 | public SpoofSignatureInfo(Context context) { 21 | super(context); 22 | } 23 | 24 | @Override 25 | public String getPreferenceKey() { 26 | return ALLOW_SIGNATURE_FAKE_KEY_INFO; 27 | } 28 | 29 | @Override 30 | public boolean onPreferenceChange(Preference preference, Object newValue) { 31 | return true; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /config/sigspoof/lineage/A9/11-packages-apps-Settings-res-xml-development_settings.patch: -------------------------------------------------------------------------------- 1 | ../A10/11-packages-apps-Settings-res-xml-development_settings.patch -------------------------------------------------------------------------------- /extra/empty.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/extra/empty.apk -------------------------------------------------------------------------------- /extra/er_default-permissions-com.android.vending-phonesky.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /extra/er_default-permissions-com.android.vending.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /extra/er_default-permissions-com.google.android.gms.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /extra/er_default-permissions-com.google.android.gms.xml.legacy: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /extra/er_default-permissions-neolauncher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /extra/er_default-permissions-neolauncher_legacy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /extra/er_etar-permissions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /extra/er_privapp-permissions-aoslauncher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /extra/er_privapp-permissions-com.android.vending-phonesky-legacy.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /extra/er_privapp-permissions-com.android.vending.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /extra/er_privapp-permissions-com.google.android.gms.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /extra/er_privapp_whitelist_im.angry.openeuicc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /extra/er_sysconfig-com.google.android.gms.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /extra/microg.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | org.microg.nlp.backend.ichnaea/org.microg.nlp.backend.ichnaea.BackendService/6ad8bcb1300536d2157d144f6b77cb09551048bd78aaf91522c4ab12ec2c526d 9 | 10 | 11 | org.microg.nlp.backend.nominatim/org.microg.nlp.backend.nominatim.BackendService/44226aa6b4ff69627283a28348976371558f039561f776208da08c294286d5d2 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /extra/permissions_com.aurora.services.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /extra/webview_aosmium.sig.xml: -------------------------------------------------------------------------------- 1 | 2 | MIICajCCAcugAwIBAgIJAKKFzP6qpdgWMAoGCCqGSM49BAMEMGUxCzAJBgNVBAYTAkRFMQwwCgYDVQQIEwNOL0ExDDAKBgNVBAcTA04vQTEPMA0GA1UEChMGQVhQLk9TMQ8wDQYDVQQLEwZBWFAuT1MxGDAWBgNVBAMTD0FQSyBTSUdOSU5HIEtFWTAeFw0yNTAxMDgxNzAxMjNaFw0zNTAxMDYxNzAxMjNaMGUxCzAJBgNVBAYTAkRFMQwwCgYDVQQIEwNOL0ExDDAKBgNVBAcTA04vQTEPMA0GA1UEChMGQVhQLk9TMQ8wDQYDVQQLEwZBWFAuT1MxGDAWBgNVBAMTD0FQSyBTSUdOSU5HIEtFWTCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAOhJfTYKhxYAs391+zrDZVKxtMnKkDvoFQfUHrl/HLCwK+c9X9kSHXaG7DcEzBPtEc7105CUyhk9YtN5GNCphnSqAa7fG5v4nngeTOFplZUq295outNAjT0NlWFWuA+3ei3JV43AzQGimH5EQ/UD9CpFemLoAQpUlOMU5tr5BWzAyUsqoyEwHzAdBgNVHQ4EFgQUpv+2CCk3423DCp5oTA5bZmxYX9owCgYIKoZIzj0EAwQDgYwAMIGIAkIBrPhoYHbix9fESALKBCQvW2Z4RULHJs7CwFSEc71rNN30QWHA5W8sRkfUgZJzFGcFQmhf8nHUISMWpRFm0kdszkUCQgHhWodLT3JmqiR1Eg5fU5oo4cdijJft50slR1u7gTiTamY5SmuohJvLO51LhmgnRN1uCE69yYloqvfvoIoaSBdmyA== 3 | 4 | -------------------------------------------------------------------------------- /extra/webview_cromite.sig.xml: -------------------------------------------------------------------------------- 1 | 2 | MIIEzzCCAregAwIBAgIIe3EoNsMIx7QwDQYJKoZIhvcNAQENBQAwFTETMBEGA1UEAxMKQ3JvbWl0ZU9yZzAgFw0yMzA3MTkxMTI1MjBaGA8yMDUwMTIwNDExMjUyMFowFTETMBEGA1UEAxMKQ3JvbWl0ZU9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKZcpHyZ3cAQ7kUwR4gtIG5bf7ZzW29aidEw2ShUuOIL7u1pk/xgyTAQk9CZMO3PjMFJiCpv84ILwwpqgF+nLFCdnOMizApD138qxLENnHcGOJ+vxNdIsLk9NwbK8BmtT4SXclta5QOy246+DtM0Lysf7QxuQ0KCPeia8n/JTBy+YbeRhHxfXlgdO8LScOVdcvC/Be+5uAylUcbCQX0xcgSvDXBGX3OcIQ+kpPbocDkR+H01V6KY8BZI5g2iULyRjoqAvJT6rdeWzK4mHfXKYhEu1xrhWs5mQCbvp/ZYTmEcyoBvJE2lj+qRxgQDUh6XX41NIjjMiZuVtyyWDcsAsO3cGSghDWFbHrnIans90/GH37KSxMRPazSEinLem6bUfZye6U2SaP+pf4emv8SZLJXQJh5Uwsx4OOOGl7MFQKgyXEMJCS+6JKXFgg4FroFti5zir/1dSg4xwhmkM8+wgXuX2Gnb/5yTPcCX4VV9Ugg2xiblart4iixST66CNfqLHeFOQ9yy7fV8DzjbZY/zCxNflgr+839Q/74fHCvK22byMZ0f7BoWIvIi/1eex1Wjmpgk2WPyLEbhtbfNXR78xDFVQFc4GqO6PtbRsA6EUy2GBnrkiqaBjMP4Q11hkOd+zJ/IafNAKoYvdwKWDa/YOMiKCatsrPA6TyooZpY936pHAgMBAAGjITAfMB0GA1UdDgQWBBSwECBD7Hxf98TW2Qt1HyvplUshAjANBgkqhkiG9w0BAQ0FAAOCAgEAG39YouUPiHZKPQslEP3VXmyz6vIPk5kPygZegrVCPqL8XesxiO8cCRpILNq+C2vj03wzWf5BM7zz75E+Eil1CURQ0NQ2zJVLnxQF32cbyiEg+VU6E2BA24qgUkfNHKcrwURacci7SF9cRFfLKUiY/1MlwF/aKYOuAhbGEHLRIyQHNvAd1pd+mYLpa2yMxDoIi/OnRQ4lwnBYFCN9CIwdU3NQKnioTYaURTKhrQtSmgB5wVsZbqIbqdkSS9UIGodCW6aU3zEpkY1Oqhu++J4h8/ydfKf2RcaCz3EF8nM9G3BlNsbYEi2A+Ev/T2EbXC4b+QQmnjdVOxZgdKj7ul6z9EzfPxBn/A0Yl/5Iecj1sE92aBOqxdFKK8NQMT/AJbCkU8XurwRSHR4hY5F/EjzBsN4v7s2KtmkXyzmmp4skABebThypKautc93hzv+ZMILJbqyKvUkuUYs5gR1CHINn4xJLYdCDlGfdqno2IAHWKakV2uOGpcDCFFzf5ZUZ3PvmM/dnme7gYhYPFEgffMrknrNbERr9lIX4USAu5yDJ6vVAQp6/UZo1W+sM9uuTvt2J1ktkoJH9pDRB3mIrJDAKatO1BrZ8CW4mu/xqsmfM3k6gvawc6LH6G0g3+zvxvYQBI+fEdY2dzlUpAqEWuaT7IRttNOV+XW9Yn+k99J8nXGg= 3 | 4 | -------------------------------------------------------------------------------- /fdroid_repos/additional_repos.xml: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /fdroid_repos/bitwarden.xml: -------------------------------------------------------------------------------- 1 | 2 | Bitwarden F-Droid Repo 3 | 4 | https://mobileapp.bitwarden.com/fdroid 5 | 6 | F-Droid repo for Bitwarden. 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 3082050b308202f3a003020102020450bb84bb300d06092a864886f70d01010b050030363110300e060355040b1307462d44726f6964312230200603550403131962697477617264656e2d5669727475616c2d4d616368696e65301e170d3139303630373031323531305a170d3436313032333031323531305a30363110300e060355040b1307462d44726f6964312230200603550403131962697477617264656e2d5669727475616c2d4d616368696e6530820222300d06092a864886f70d01010105000382020f003082020a02820201008d80ad2dec6a0a227fc4ccf55b20c1c968f375fadf457fd6fd03a5f0eec0743fcb037595fa450603faa94c1c49307786e591c5f4324704ed087491f6329d6921ab82402a7b2b65c14d0443e390f44e0e43af606b6aee8be0ad6fcaa808b2b68cd275844a1496e187a47a9546fed59fea48f1ee4eef6ee2b8df2d0139e6bf0dc58bd1adfcb9b6545dd0fe9ad1c685ed09692aa202745d2cbe3f43b917fdfd8fdf2ac9f01f09dd4c2a5eb3401e1648912b324c3b96dba361fc2ff7308456179ebb7fa4e6700a9af986829bb63c27ddb02c4881ec272446c3bcb286ebfcd50b1ff4e3864bc447d164400982f97c89380094e1ac146ecdf7c36469bfc6a17a177cd6f6bd14695b1858358af6a2b2f32e9ac457539ce2b19a986354483b77acbd0544863becd437ff11bb1bc9d2493b93607049c31b1cc72a81d4bfeac2eb2e49c0ab3be8037ffa2e2df90a3cf8bb2d90e37d20f917d3b56cc308fd0fa49b111daca230d77028b82285085a3c896561c8000f61b3aeb102ecf67c9466a62854bf477f82def889a6fe2d606fc296387bf70c4250188c80a292cd563a5bde28eebd7911822a01ff8667dce1324cab735b60d18f0cce3a114bb72ae0019c0f93adc1a2a8d81be9782c78d724d9917eee6b1c81a751b009f18828cf17593c1a52e27a35b03aece4f03a8dcf280557d9294d6f95df44bdeef8be32321a1397b09fb72848990203010001a321301f301d0603551d0e04160414fd6084b86a35190c8c2e14bde4ece1950c22c603300d06092a864886f70d01010b050003820201005af4595384cb93cc1be2f0afbfea9b5f7d730ed38cb15410dde9eaa1b4399229e9bef1237cb72a30978211651ba5d4c54a42815f3560fe5c6bc681b560e68cbb3783f93ce5c464900748d94a254f971bf216504c83dddf22687e1417f4b0f856054ec179ca6a40d590452eb420742238f0745e0d7aea7e2480f754d1e3d222aca89db4728b339f8f15824f6787c8f65236ec76812a3223426a24e2d86c180cf7b792f9609b1f60a3c52c1eeb976f0195ed279f30a575746e9092dcf9682f3a577b67099e2bc1f2a0315feddd2b575c94bdd60db4213f93ea6b5597c55944d3e86f73cd5c5d166d8eefdc78aea1ae66b8dfb166198fe0cfdfba348b884357f506335328432b1cae8eac5f1bd34442f30d68dbeef6b97ca1b169dc6f3c0a6d57396a09785f4a4de5853ba7a53cf92636d25a3e1d7af183b7b94b93a2aa4821aa5e9b684d1f756fde036cdc666c40fcefe65fe6be29af71440517e1f9fb3039c3394d0c3989d6f75a7675a659c568f8255080d9dcccb42f7243cf2ba1d317d432a584f095bc2ef9e394b1be16055e3a0feee66c4f0dc78854f13fbfb814ba001fa99a454dfa97684c37d71eff1959ce05b455ac3f80b960c824e2b39d985c9cf8b2d25d5c51252c547c29060b9e7e78eb53b0492f0aef0c6839c7850c95bf68038c02c5cacd6f7f43c0db065b0296ea1c313e0cec92a87edcaeb3ae4a2f51ee169d 15 | -------------------------------------------------------------------------------- /fdroid_repos/briar.xml: -------------------------------------------------------------------------------- 1 | 2 | Briar Project Repo 3 | 4 | https://briarproject.org/fdroid/repo 5 | 6 | This is a repository of apps to be used with FDroid. Applications in this repository are official binaries built by the original application developers. 7 | 8 | 20000 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308202d5308201bda0030201020204018cf0a4300d06092a864886f70d01010b0500301b31193017060355040a1310627269617270726f6a6563742e6f7267301e170d3137303732353134303630325a170d3232303732343134303630325a301b31193017060355040a1310627269617270726f6a6563742e6f726730820122300d06092a864886f70d01010105000382010f003082010a0282010100912fbe5333e85dc38a1ac8eca5d10e7e084459b3ef3ea84e72ad67758b63add64345ab2a26fef0a5be41c68461a69d1ae9f8652a98c181765f551776d3bfbcd2cfd6bb1222140566afd1cae791714ef56d6d137191d971404bdf9d93935adb0222de2df8718a6c5584dde5607da1249509fb5ed3cf2d14a0ff2962e942d1985ad3d1cd479c149caf71c98b54647d2953fbf60019df588c649598616e12c7ef7cd58cbea2ec42e067923b79be33ae4079736e521f9b4df5c1f670fbd2b55f1e4c86fb46f47a98e11f49007c8c0a390f36d8d363edf305d81be5b04d082f8c0b3a756cbc19a0ae51e3f241560457827638d8af97ac66fcb1e274d3575af17932bd0203010001a321301f301d0603551d0e04160414d16614bba270ddbbe7dfd75da361bd4e24dc3413300d06092a864886f70d01010b05000382010100573c98ccf56d9ec6644705995db1d03806c087d4be4b25061d1ce144a72e2c14c86845e6847cede6bd0c469ce610153c0c144412c8ab0171342e40acd8562c8de8032e4eb9fc6803cad0e2fd6b4da3cf0ce4148376b0b7d57bb74f1b7c55954eb184a1392fae2231aabf9705a9eace7795c99b1cd7b2e796ffc58b422e1e80b9cdec20ce352e10974c64270856e1aecf9febb8199239625692bbebc0236ecaf03f57ed70cc13057a33cbf2bd7ffa46704f530b0acbc8a0a2a05cc322704e340123aa4277e11946b35ae8c9174b9fac97e0c1207c6194856016202c94f1678a6f9911073bd46e513692274592a989d16181e02b423e89050b2704c7575b5d31f1 15 | -------------------------------------------------------------------------------- /fdroid_repos/cake_labs.xml: -------------------------------------------------------------------------------- 1 | 2 | Cake Labs 3 | 4 | https://fdroid.cakelabs.com 5 | 6 | Official F-Droid repository for Cake Labs applications, including Cake Wallet and Monero.com by Cake Wallet. 7 | 8 | 20001 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308204ed308202d5a00302010202046632efa1300d06092a864886f70d01010b050030263110300e060355040b1307462d44726f696431123010060355040313096c6f63616c686f73743020170d3233303733313137313831335a180f32303530313231363137313831335a30263110300e060355040b1307462d44726f696431123010060355040313096c6f63616c686f737430820222300d06092a864886f70d01010105000382020f003082020a028202010096b0c7328881b29d932bec22a4cdf57f00b7256277e6307d97162a4ab7b6d6d28c5554fb8c348c3e70f83ac3295a673ef1d2fd4215373c07939d84ff7ec9b483e3f80faffec0076df71d4fdbfd3305df9d6fdffee183b2c7c1d1e05389c6099081bba2f5707aa76bce1e4866d23804ef6775a8bedec0ec0dad99d9e04f4610d595e7835198653e3dc74beb18f2b7070635d5091f6d299188264f10ae592725b0511475cef87dcf513766fa9444f56dd419b74fbb8138fc6aae3b86fe3faf71a7cf9aee3d0e5fe95e5d2633c056197624b001e1eeb1a92f9519c5592f52afb2507dbb6f5fe568e80d7df72552d42d04ca7d82a96e890ab5e6a874abd35943f2023e83cebca8139c5b956902f477a6ee73de5e79bf3e71b16618451612926dfb14eefa243e947ae7e41b48de16a9cfa86248f22518efa869432a819893d0076c34dcb3fda97eaf8be0804f11e5fc321fc40f20acc0f78bac92f9dcc09722e5b819f9183a68720c3238804d8cb074ba213e0cd105b3d706018c445b4cd74ad3a73983e6f7a838f87ed8e46dedca362c2e9fe9e94ea304ce012ba345c0f00c4ad87dbc7874d638f6f6ef7c03d329f0ef4b17bb4f302b95750b771cbc9cb41f934a1826b1fc7e67ba55362874069553ebd6f994585ba495e8b1aa48ac1eb78fa48b5a79d3c47654c8632ec1ed8c7773b1e9d969060a796472776fc237e767f330e3950203010001a321301f301d0603551d0e04160414c7a9146010ce304ade605f6248dbecbebb2d8434300d06092a864886f70d01010b05000382020100773aa365b06d4391d2b7b28195e8dc0a0295d16d81ac1f8f12246646f05245bf8823de9bac219b3a27c5ce01ba554bc819020c9b7aa1cfb4bf7a24082465611466f60e821fd1c3d85c40a1addecaae8df5fa92a7910b40f0ef50b3f74798883d629d19e2f694fa5dadd67782aed6b09bd5ca6997df2ed316057e30beaf13d9874db15fffc2ed9eae7b4646138eb852b2da559dd71bf043476598ed84f4b565e61614b1e819fa40e647969d3cb1db959a9694f9d682af0ec75c61f525427faec310ce03080cdf7bcb23d49083cc82f105325ca2d5466eda5dfa493dfb73b695919d98bbf11c41cf38daf5b9ffc506b7bce1f91e62a0da4336378863b7d4134907ce391fffbaa6fec95e113005b904f793093100ad372633fd9680f40ca98c57d57938c1246e00879ab1bcbff28e0e929d8e4183d25a462cbf5d34d5327fcb43d6bdcf553469a2144934039eba6342af7ae2d65d8e22a0c5a14ede3dedf1efab29a1a5bbcac82bff92f078cc11646a78aa700071e595ae6fd2f98b1fba83f9f43ad8cd8ca6028190cbe61b58472c1fc41a730551a8fa1a1946df8cf8e28ccbb240a99d17bb0d8c15fd0bd74ad4e566b1daa2465b5d09f6ff5bb06c9f9cb76ff261820b14591c07353370a89d3fd304aa972d945e68df86a0f6e241231948c23e198f85296e755e97b27b2459094ffcc0ef7aad438fb11e714dac5882216cd39772 15 | -------------------------------------------------------------------------------- /fdroid_repos/calyx.xml: -------------------------------------------------------------------------------- 1 | 2 | The Calyx Institute F-Droid repo (testing) 3 | 4 | https://calyxos.gitlab.io/calyx-fdroid-repo/fdroid/repo 5 | 6 | This is a copy of the Calyx Institute F-Droid repository for test purposes. It is a repository of apps to be used with CalyxOS. Applications in this repository are either official binaries built from the source by the developers of calyxos.org using the tools on https://gitlab.com/u/fdroid 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 30820503308202eba003020102020451af9e01300d06092a864886f70d01010b050030323110300e060355040b1307462d44726f6964311e301c060355040313156c6f63616c686f73742e6c6f63616c646f6d61696e301e170d3139303832393233303435335a170d3437303131343233303435335a30323110300e060355040b1307462d44726f6964311e301c060355040313156c6f63616c686f73742e6c6f63616c646f6d61696e30820222300d06092a864886f70d01010105000382020f003082020a0282020100da473e72cf0e202dd31ea6e229f8957eb8c2491b3c99a654f9430da509117fce3a7a9aa75b0203375fd9aefd62243b8c05e0bc2c07d414b51c7f626ea3fb9c17ccbba293f694117827f3f1b02c1bb81cbda4e352c2f0e126348ddda247b053a3c310ba6bad0f15bfe27362a4f445ffc296e8e9f3e749729b0c22393cb3449fc33575a0d2798ba171abe6537b7dcce48be2b02d97ccbb918790b63443800e48762cc691dc5b68a532c2c83c14aecde41f56d2a4309651d6216c85d172057cedabc5f5290850bb0160a346f860b4e472c3eefed9c5c5f66f8485bdcd5da19acabfe9389ece8ed6a485ad9982de69a1d937ef394becf0815b42d8e88c948973500e5e35bb3760cb92f6516521e046faf8bc223ef625c4575ca5edff58459879dd658291de027ecc387a11c4c1fa1982f44684c5c05b7dc3969625437be3cecc4a3406a29a0bedd6e51e569348c91e621dcbb415d0d3dba2fb07316c0070f8822362bcea7911e2105cc04a06e493ce3e1560a9a00ec0d44b753c5c36dc95ff95976029aae140ab56304f7e5891d755099c3deb8f5b1ee662aaadc3fe7fab74c0175a509ce28de7072268bf598329d389f27623a4677645394c9cc2a8391fa9bd09b3570fe0e258bee1e8029d7916603e20c6972c6a7bfda2c26f691e84639874cd3aafb368ba51a4ce038ce84a945f6d604e6af3ede5da58040972e053ad28c3d2890203010001a321301f301d0603551d0e041604142bf6de20fa9e51b8bce0dd4b3497699fdd07af64300d06092a864886f70d01010b050003820201000ca2c66797928e49b17813dceeea4fb64dbd675960756d85775b198754bef8bafc872f6f2ee594e4bef6b9c57ce701a95425a6eae7102e77ad4cc251e9bfb56087a8ac14b175938560a9e8419587563c55c29e584fde5899b9c80aa3b8e9cbede188df19cd81e642594185569c0966e022fe7a1f5d193f76df1bd21c304f19bff4e31c8aeeb986939b275bcf6d0ff7f69af6230a7b5c96b6b1535e01eddc1d47b53d6aeac53c3dd7505b39bd8233c55bdadd42d64991e4ee941f435c88d193dbe91630bb1504836ffc9b7099ac782b1ddb9ec244363bd4cd7db34be2ad47b06dbb96ffcf316ce0f063b62bec781ad9d1059e8ef5913c9baa02db8f6b95932dc0d2e827e6e7f534069c6ae2e620b8149e4b6e9b6275f8a9ffea2b61799bb08bf98c9d347aa0f0382b04a70f2a5b448531e39a2341c06388e9c449037903b1544e050a382bd8694a245bfe64d25c9f7e119ddd2ecf7b641a11bcbd9f064a7fcfc77ac5635284ed058c95cfd401963b2cbf55d1c7382c052b1772e87bff1906ea871fa6627e08797cce9b38abc97325934ab0c090571e6b069e18f5c333333548ac83ef19e307e2433b6f02b3e7328cc3de0765df93ef3250b6e430d485da66694737888b8e0f19a70b380dc37f6f7d8cad02ba514e611d734609b3166a584c06e5635b6367e5c992b1eb26221eb8f2a644ef0752f1a2a38dfa310ac6ba4fe01bfb 15 | -------------------------------------------------------------------------------- /fdroid_repos/collabora.xml: -------------------------------------------------------------------------------- 1 | 2 | Collabora Office F-Droid Repo 3 | 4 | https://www.collaboraoffice.com/downloads/fdroid/repo 5 | 6 | Collabora Office is a text editor, spreadsheet and presentation program based on LibreOffice, the world's most popular Open Source office suite - and now it's on Android, enhancing your possibilities to work on mobile and for collaboration. This app is in active development, feedback and bug reports are very welcome. https://github.com/CollaboraOnline/online 7 | 8 | 19 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308203933082027ba00302010202045e03f075300d06092a864886f70d01010b0500307a310b3009060355040613024742311230100603550407130943616d62726964676531273025060355040a131e436f6c6c61626f72612050726f647563746976697479204c696d6974656431153013060355040b130c70726f647563746976697479311730150603550403130e546f6d617a2056616a6e6765726c301e170d3134313230383039323831305a170d3339313230323039323831305a307a310b3009060355040613024742311230100603550407130943616d62726964676531273025060355040a131e436f6c6c61626f72612050726f647563746976697479204c696d6974656431153013060355040b130c70726f647563746976697479311730150603550403130e546f6d617a2056616a6e6765726c30820122300d06092a864886f70d01010105000382010f003082010a0282010100919ac3bf8b77b5f1e98c82f9d6bbf4b46ef3a11935664b9201d2fe118f523fe3c6ff06b9c01c1c5b878fa38d5e7ed94e6205382d935d22c3eea6ad638d431ca85035794003b49447504a86129b07b4951fe0f28492d8e038471d961aff60f263adaa3f71f677f624fba5f5c9aa9240f9e3f04608d353218a575a1632649b032bdd7d1ccfe1eb2fa201402105839b00c4bb497c6dd71a982ffff3b8bf7b8681bdf9ad5658902b5cf184b6a34923054147726d3f0f5b6c716d3c3478cd15fe9be418db191d078cb2e7a88cfcf498746b11f8e28e2388333918983994a55c8bb6b2150a213510d19e62fce1e068cddfcedf37e666a9aac6d70d0a2b7acb832964170203010001a321301f301d0603551d0e0416041442655d01c0a752095adcc213b21a3a1889491350300d06092a864886f70d01010b050003820101000311de47d75aeb6e30c83e2d6c174fd622ce236c5a418d4dacad15373b5c7aba68456424fc4bf6edb04799f85bcde6e3a336bd8136127d600ad0446fac1650395d52ecb64073bbfd765a7a008547e244691c72a1f830c848c552b5d6ba9bf7705229bd91c77c725b11e98e85e39bc36269ee48e4e469c81ac711afe890a2d4dea2b2ec56692968c7d6a98973d2c586373aa1e24e7792bd86bfd79276049c556f500075aa1b275f17d4ee7cd5f960488bd1f69f069d0e9d443d5d2bca3e0229248300f809b2f41bd5954ad6883efbe613f138481c2c998f69f9c5ff537fa6b1809df02995d2cd69b5f301696b780b3d3f2b04d57cdd29c53ddfb1e22752ff8c9d 15 | -------------------------------------------------------------------------------- /fdroid_repos/cromite.xml: -------------------------------------------------------------------------------- 1 | 2 | Cromite F-Droid repo 3 | 4 | https://www.cromite.org/fdroid/repo 5 | 6 | Official FDroid repo for Cromite. Cromite is a Chromium fork based on Bromite with built-in support for ad blocking and an eye for privacy. 7 | 8 | 20001 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308204f3308202dba0030201020204379cbc35300d06092a864886f70d01010b050030293110300e060355040b1307462d44726f6964311530130603550403130c6437656239323363623032653020170d3233303732313039343030335a180f32303530313230363039343030335a30293110300e060355040b1307462d44726f6964311530130603550403130c64376562393233636230326530820222300d06092a864886f70d01010105000382020f003082020a028202010097a897fcae759e9b983d0491f29eb0d1945c15d63930c877141388b51315d6c77b3c222b2af96b16da4b90a9492e85d1673a19bae220a9927193b081342f6849a2867345718e992824dd1511f20afe7ed9f39b1514a5b5153a4371685e82fd0ebe29bd291bc1bbff7c543fb3041d68a979a66b929584e105542c5d8dbcf21273fdc5b46f220f671de41966a3098f8c7dbbf3c98659572c760d8b835b03d67b55485b7361a4a1b04784363f7d1b69bb2566fca9e75fe31e7799b46c76e7623203173270619f78c037a7aa41edd3e7c659b493fc4d499a5f901ddbba7b80b10efa85a0b5ebb1b1e771530b788b68ad48777b1b2dbe9ab9103e5f61a04f86a4dc0c88dd9e07ab81c6a618f607923d9b4eacf2d601a8eecd721c5e312129644f8548af5c5f22db815d4401343fda87479b9173d5e982579abc535589721ffff155f369a5afc77b5e40a0475a12f214531b204a40a5f70c0a6797cc509f7ef7169da54fc1aee791b791f2cb9bb82130fadf6c0a3604e8b0e0e57c559c3350f6bd4e7c33fcb8a4ae79296caa77a31c93a7431ef7f991f822240b68bc033066204d751f0f9ef09fc23250ab4d5a4d5cdccdaed35b333f31d510d0ecbd9164aa9314285d323aae2ae09d650d32c92be6345d01f9cdd9c7e1ccae56c1104296aeae4987b8c22d28a67df6b4f4ec6275f02dd72c6653165101902485d479b19ae797b886f10203010001a321301f301d0603551d0e04160414ec214e4bcdd4f2c16b80807218de8baefa16768a300d06092a864886f70d01010b0500038202010013d67b0da34c5f83df028df38ed4a81de07864fceef98b926dd952063730172f0fb5ac338920d0a063ee3dca599287fd6c07bb3cd0b6e0e5c1e6d57a23da66d7ac24251f51eb116d5b7bce8b07f4318b68c81386a6e87a3f6afb86c055843e034095fca384cbf85d7de4a1379cd9e52db7dc0bdcd8bf6748dd5aba23c26700035a4ec3fd65d0329782114f53964df0fcb3a4da19505e51d918e966392b949cc916a347627d58dd5ac87a446aa2f5db579395c8d42d7b820d476f6f69d3ff7b3c15f444b92d019312d7b49e99d3c7e7548353e391fa143e944b4fbfb1bfb0cba020c695bee5de9e683f04c491eeb5c0407216622799624c0332d108b89bd70a51b3f9cb876d337ad1fe90ebae37c0f4e2a2940ba666eeea1ad2250762aa56d679d3b95b776cb5ef0ca297e38fa987dcef9cc77540297b4535e1a2851be87c8924906ff84ba29e41f1059187967e64dc6164d30beabbcdb73857c43eb9b8bcd31cb5cae345a65fc8009db05c408377ef4a50574f0bc25e9409719c8236d67dec26d3d284b0ba9dda83c28800a32a700eb6e42c4c007f67ade1dc7d5e7ab8bd28ce3850303e3bb792dbc9cd02551f8e3342366a0c4f0047790431f89c6752faeebdce5d423ea71547a704166d0042ccda4424f5def13aba0ad88790a3c40704edb994776df3aa077edfb37cc6586c7f898b34ad6691b465aca62708976d3edd0a5c 15 | -------------------------------------------------------------------------------- /fdroid_repos/cryptomator.xml: -------------------------------------------------------------------------------- 1 | 2 | Cryptomator F-Droid Repo 3 | 4 | https://static.cryptomator.org/android/fdroid/repo 5 | 6 | This is the official repository for the Cryptomator Android app. 7 | 8 | 20002 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 3082033f30820227a00302010202042a870a87300d06092a864886f70d01010b05003050310b3009060355040613024445311f301d060355040813164e6f727468205268696e652d576573747068616c6961310d300b06035504071304426f6e6e3111300f060355040a1308536b796d61746963301e170d3137303930353131323333345a170d3432303833303131323333345a3050310b3009060355040613024445311f301d060355040813164e6f727468205268696e652d576573747068616c6961310d300b06035504071304426f6e6e3111300f060355040a1308536b796d6174696330820122300d06092a864886f70d01010105000382010f003082010a028201010090f3e4951483d27184e7b7abb8aea3e8ca98656e2de26150c86971b5d5b437f112a3f4b24b6b5726e091d8d4ebc623dea159fe5ebd1ceb01596fb479c619f7ccc76b85566eb064b32fccbc20cbaadadcfeec2c2d99b5a48e2f2a63d2c10642863bd4eec403ba113b1d5e4c57815c9e7712f7f106feb6986b5696f73c495fbeb7c9b5c66de73f40519cab1ef0e9f9caff64842041913d6dba9cc6868d083080580666c06c080ab13bc25920e43ea66efba21923d58ba376acfebfe90365e8227b1e080217879565c6e22de48d313e62471ea1f930eef13caa413753bb640a44c46417f6d18c41d1ec2d1b2143b2a6e5f76be6e8392f8baa5d3e440bc201756d5d0203010001a321301f301d0603551d0e04160414972510fb16ae0e2f8d407bd7b514697b3144e6b7300d06092a864886f70d01010b050003820101007cae30b40331e7ae0fa8054f1d83a732db7c25adcccba56120071f5ac6272afc5ad0dafd376e08d4b467118b6ae2a8b0c2547df851059ab99bb4932a6c742dda49400179192dc1c90161bd7c7182fa68666971b96fdcf9450d404def909c5caf6662d0ee30de7d14448900a0a4ee37f2d055f655592a9c4a2d823fff54eaa90ed77d306f7a3f7630900711648d8ea8de838df9adf3b10bcfe37909b449b913d7eada837bb7db0883f3161e50545079505f2986ffa82aa6c733507627797cbb1da3608296875419a3e8f472928bf84569b754ce1384037c8691153a8ac7a70d42eff93cd9e73fe75509de6e55ed51cc58f6ea62510d2a436869f1036b6e282a2f 15 | -------------------------------------------------------------------------------- /fdroid_repos/ember.xml: -------------------------------------------------------------------------------- 1 | 2 | Ember's F-Droid Repo 3 | 4 | https://fdroid.heartshine.xyz/repo 5 | 6 | A simple binary repo for a few miscellaneous apps I like. These apks are sourced from the developers. 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308205433082032ba00302010202042575ae17300d06092a864886f70d01010b050030523110300e060355040b1307462d44726f6964313e303c06035504031335696e7374616e63652d312e75732d65617374312d622e632e7374726f6e672d7a65706879722d3232343531382e696e7465726e616c301e170d3138313230343139303230305a170d3436303432313139303230305a30523110300e060355040b1307462d44726f6964313e303c06035504031335696e7374616e63652d312e75732d65617374312d622e632e7374726f6e672d7a65706879722d3232343531382e696e7465726e616c30820222300d06092a864886f70d01010105000382020f003082020a02820201009adb86acefc6dcf3adab3d10491d881a252d67bf0254a1a5eff08a978c21262699b36efaec57c81cc174fbc17f648724fed3423e04ed5fe2cec4f63914339ccf16a9d28040f3fcc8ffde7125190ba743cc6e332cbef75d24f3ddf07e7742b8e7f39aeaa0fc086a99db59af40f285693477ace623c6f4cf234b9d6d3d87b480794fed9d1468fffa795b962e6d5d552acaa638cfadf255206db9eff36897794a2496a3f0f3588ba44acfb841c27f34becdfb471cbe9add0a7b9b0a0b0708a6bc36dfcf177ec73c1a695be085f455e2b71731c20dfb0c62f1cf8a3f912747f3124bd08c523552cada859b91b09cda8b20f71846a3692478ff388e7fa5957c8c20f274c846315c5afc5b5d176ad25347d33882c4739254ae288edb4367c431d96ca044f31e61b6cc262f6bc3bca199117bc53d84d0c89c9dfb47b5344a1a5ee5bb869edab56c8bc5978f22e50025567e3a0bc07176759d00b4760a598f127735c84bbc2877bcd85575b122663f58ff8d67f245bf5995b980515dd58812cbc28b601da5ea01bd7808797f909b73a3ce7c5a07166a2ceabbbc98749e809f5c1116ecb52b0bb726e2b2b6db7c54c2b0259a4e91db0997c852668cabd16ad0685fbfaf3e942d81cd4551ab4062fe4b661cf435bc3b6299313235f8fef45b88395ccca984961785af3869d79ff877a929c13363bd9fc164a0c30a9d053575bd03cb9ff8170203010001a321301f301d0603551d0e04160414922dd005b7b45c83bb0408998748623a61e619f1300d06092a864886f70d01010b0500038202010081ef34a5ac017de560e76f30d95977a5eaedb1ab6e2f636d5a4a7870dbc5da90c3539de70d412db09299ba8c6d935c386814545f455cecf616363f1fc92a75901f2443f295725a63b73631897e6491586da131e62f2a9f8c898e85e723e1c44787b9763eb8d8b8200d776ff913ba3251507acea168e6647e65e4576514f5e174645497abdd954cf11af0beac3740a75bb1b38ff1eb6c6c0eb9ca8314fdf2f065a67a78a0da5117c8121665a5daf35decc500652a2bba6815b690ce08ba4238f4da53e0c33db1b03f47ab5fc69c21cfdab7ecfc33230d88ce6df397a037748ba25cb0ea45246991f940547d3cb31daf7be18d15611a90201b19a751a33182800bff04a3b32c61abb01f631ae698fb97b31456d46fc5a10394a00923ccc10ea01dcfd1c4d28b8fd104021026acaa56f26e7102a73cb13e674a6baa1bad7771b9a06397a7104566dc148050ae04bae50a1af109470f2827a2727e4b7ba9446c864618f8c979774965820c43a88e5fd91882f7f05991204f3c35c7eeff51cb88e49974c0750634fb5208f6fc2f3c0e7bf9f1cf030d7fc2f5f52b5f8cfd478d5bdbe21ccc459c7d1a08d824b34f21d6807310deb461bb1726219bf2fec77498482324eadf8d564a0d25ff0771f831e0e8e0c4a82f838704bc6da068c5bfd94892edac2acf9657bf3a43ec42ed1790fe7e02c1b83de21ba874b81fe9fa131ca3158fc2 15 | -------------------------------------------------------------------------------- /fdroid_repos/fdroid-ff.yml: -------------------------------------------------------------------------------- 1 | 2 | rfc2822/fdroid-ff 3 | 4 | https://rfc2822.gitlab.io/fdroid-firefox/fdroid/repo 5 | 6 | Unofficial F-Droid repository for various apps, including Firefox, Kiwix and Signal 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308204f5308202dda0030201020204102c096b300d06092a864886f70d01010b0500302b3110300e060355040a130772666332383232311730150603550403130e6664726f69642d66697265666f78301e170d3137303831363134343630305a170d3435303130313134343630305a302b3110300e060355040a130772666332383232311730150603550403130e6664726f69642d66697265666f7830820222300d06092a864886f70d01010105000382020f003082020a0282020100adcc24743d1e72743270cabcd92b13d5c6b5492305df0699c517c740847efd728b1b0c044c21edf4ba172c896cb9c706f8aed54828e79326e18e8e1d5dde740249c0f62ade2e67a02681347eb6a186d8b5338340ef67bf1464ea65367540addb65406e1259e34abeaa624ab4cfeb919bcfa19a1b7635e10679f8395ceada3af0943c07963deac85161b5c95769c5d507c2e6d7c822f5fa707f91fb6541709756e32474080050fa9b1977ac315ca57ee3080fa9a249025af83d469918484a619980318f68f6fbd5a7e7bbaf31ac35f29e9a3c56d648406b79941254c53b28e8f43b2f9239ba94c6f8b41d7479a06182fd3896479cedb0e9a9182f01cfdbaa845b4d5c8755ce21558011e94bfc39a9ec86d8ab4dfb73ca02d07d4ed62f54081b3a748bf7474d0fece0948e05e7ed890d41a5bdcdf1e83ca42db8741906a1e5c74439f752802dc8686d6e1bdbb3a6d59b15411db1f26dfaf1801665051ca836f03c98c358cd5b6f608e3724b74a100efee72dfb74daee398103116e1ba215ba265f7e5cc572414f5f2751d22892fb8bb0301617abbd60335ec771ec9b29425aa8a312b4da4246ebaf416302e1d03a52110d9b0f5068afb6ffa1330a50c8ca810996aa8e6078d7b76e8039d24df0f7da86096645f9bdf9daaf68bc2a55653f201e2571a3d4df2366a1adcc6e63d45ffb8e304eb47582b1914f4d1633f745c0f022470203010001a321301f301d0603551d0e0416041462a5d649fbdf8a5ca9702f47659508625267d473300d06092a864886f70d01010b0500038202010088ae257502abf819e0b8aaf7811958c6d3d2fa806c780781f5d6b288a505d361233d2f9c85594d2d9a3edcd4333c15c59e7c15a549f4c2512172a68bba2652348843113c913af19e0104e05bd456e89f02928281cd9bc1c2a75f349f27a70f61884f37e5abb391774c02be0c78968c7d31c713cf00eb78185378edc785b66b53ec908c2fe9635da3deed2dcfce45e4d16df885d97eb9b116ce0c23c15e6f006c7f92c32b0baa659a4b5f95839cd69058030a938c38c3776876af2ba5df372fade4e9195d6f5b3d39abe58c8fd895e42ed677174d436130b95d55a89c0dd11035092116c0ca15c008f17c28a2b5f7ff3f5612cbc1c379f315368c3c2bf269087664fbed12dcadd15369b4c91de6392328a53d07c28d292bb673960ecc03f02d9d5e6bcc97cfc242f7a0eb882bd820480558b34f981508df788a7f9cb9a1354a88e1c4e5303532ea87b6f538ce70cbef21aa6bc7971522a44908112b42ee9bdebcd9c30e5d28e3095ef01dad4ea7e9a9a45a2b1b39a9df779289c7d3689ec96c6f55bc86f33800fcb94f1319fff643e68ad0b72d79959aeca3d5dfa5465a083a40bec02244a825791ecbb3cf3bc6032ab69181a904b321bd2cc1073febb4821275783ddd0e154c78087b797c39794ed063633513029484d95b69a94dbaa12cf00fad8ac3b29ae216e2fef194e46df6f4daf36c2fecc2269ee156e5138ad1ad70a1 15 | -------------------------------------------------------------------------------- /fdroid_repos/futo_org.xml: -------------------------------------------------------------------------------- 1 | 2 | FUTO F-Droid Repo 3 | 4 | https://app.futo.org/fdroid/repo 5 | 6 | Software created by FUTO 7 | 8 | 20002 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 3082056f30820357a00302010202085a18b82ef76eea53300d06092a864886f70d01010b050030653110300e060355040b1307462d44726f69643151304f06035504031348312e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e6970362e617270613020170d3233303932393137323335385a180f32303531303231343137323335385a30653110300e060355040b1307462d44726f69643151304f06035504031348312e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e302e6970362e6172706130820222300d06092a864886f70d01010105000382020f003082020a02820201009201f575173acaf38cb3d66e737d92ae707cac70678938074828350e766499527c4589edd26a963246af98b07eca17faedd2faef9fd76b655e774174c75a5c2e171c69bd71bba24ab69292f321459465b95234d45b4ee3ceaf08399b4183eca4303cdb80bdb78679033af96b21d730d23c77ee6b2778dde9ab897bd5a7ef5076461a02f1b2425893b313d760b844c6f74ea30a3325e5a63dfbd7077a75a4460bc15af5d8e2b030b56605fff7ef6369448ee082997ad2b795a6a71423c6c92111da3ed671854bde3669cdf5d2f1cb679d770d16b271cfcd9c222b545ca2c823daeb7ac76ea8a4855b60b917f9b79037749c57c86b102e51c835dff6f9e10fdeb7912288995adafdf397c4e464b20bc990434d25586e26b419f4a73eddc54801a06bbf09a773344e88d79878ed4e6aa981343d7a4a6821b350ae00dd021e59ff629462dc3ab0242bda3c3f96fbebb1f8ede48b76e5ab050d82cccf00a632bddcca7a41144f77ad69af8c5c623afa9ecb5c6d9b37becaa8f53f53cd3951b26238258c2ad465d2192cf1229248dfae53853861c0deb710069a0cd5b8220acf7e1d4dd29a83ebc62f305845949c7e6ea1782a0a09cfbcceaeda4b9fb0e34df981b45b348665f8ccb916fe9dc38851622c672ede5d76f54a2ac9edc0eb14ac4835a4c2577386edfe1e4c26d26f462f48c92b2351798724fcaef88f5aa652505a3bec110203010001a321301f301d0603551d0e0416041471616f43f09f76af34297b90939748a702a51fdc300d06092a864886f70d01010b05000382020100401f1ce0552d752d0c2d05b4678508bf3cc552f865c12bb618ff18e9b6eda7daf7da3e6bfdb725565c904b7838281c3de7578aa32be9fa9ae244ed3b03d15a66f67f531f94eacc23c2d22a6a8837d1af0add9a655527c3e463fb9aff9658e3014fc964184bc2e4101e6f9d99cee7cd4be5d1673b00bfeb0165a5eab6df06c7d33a1543231e765332739d15240fbd5fc0b9d67b0d1c7ed4e42b99b2c450b2480f65c0fcb0b4d544442462e7c306a559e907a0f0f1daffb82b4a0c64876a743cf52c9ba855158b1ef18f75e1ccd186c2291c078c9e3289c4c0a5f1fb0c7deeb3fef494912c5c219d498f06c64f6cde5fb386ea2e0a494c653d20ea9c493c18e5e0cd2340d4eab21069b08041d0cfae3c5f84f42e959b32c8d69b5262f69fdbdadb021d4096900d6b6e92c501b33055afa3b095735d422992152e27b46f7686ee81cea476f3c21ff8a882f68952fbc836a203c118cd76994535674622e3e84f84336143c173db76de1f249cf3933daa623cfaa9857b1b125b37d1846b1c88225d4a07366e81ae9f18a2f57c8ee1624ecddcd84cf7516c7787e5cb039e286c6ee473588f0bbb74e7327b125fdb356a11dee60a8daae7c6218e7b630a037f89e258d897502a3f182494e751b0a8b272c4b2b977dff5bfa6a09544ef06f568bf848deb76c713d5cfe8bb992518159bdf85f7c3b9104e4247cbea2ac8dc8fa464d64f40 15 | -------------------------------------------------------------------------------- /fdroid_repos/ironfox.xml: -------------------------------------------------------------------------------- 1 | 2 | IronFox OSS 3 | 4 | https://fdroid.ironfoxoss.org/fdroid/repo 5 | 6 | This is a repository of apps from IronFox OSS to be used with F-Droid. Applications in this repository are official binaries built by IronFox OSS. 7 | 8 | 20002 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308205833082035ea003020102020900e39a309b73055a5d300d06092a864886f70d01010c05003063310b300906035504061302494e310b3009060355040813024d48310d300b0603550407130450756e653110300e060355040a130749726f6e466f783110300e060355040b130749726f6e466f78311430120603550403130b416b617368205961646176301e170d3235303130313039303433375a170d3439313232363039303433375a3063310b300906035504061302494e310b3009060355040813024d48310d300b0603550407130450756e653110300e060355040a130749726f6e466f783110300e060355040b130749726f6e466f78311430120603550403130b416b6173682059616461763082022e300d06092a864886f70d01010105000382021b00308202160282020d0c9a0c66a02a2a2892c43ec380e045348b5742e482a2f5939c2c7676a6e2e41347ead28ff23153f569033a4187a103d7b1ac683b37058496506775439a674bfc9ee8550af45107e2158c500c5867c02ba0da448f8709d62172b8e13b6955193ee1d4bcbda937315137ee95d01304268d07423001919926e9cb38e5e40d567260febf45287b8c494b46e1a92d82abe14a0b8aecc47219c0d6acc7664b15fa8d6abe3bb92542cd8bfe4b5b5642b9b4b4c24509b0cf6bddfee90328a1a542c808a2660392aaf4b34f2087e6c743dc3364f193f4302ef3b997620ed34722ac25e7a1117cd39b022d0cad3117c0a944f5b1c3c0c7e5d97fe087a6b7fb17edb5c262d3a9260850ab79cea1d7915e2965dec9b19ea81e92a328c3db7bc397495c7b3f42affefbcaeda46e0496b3b571f1833b13eac3a93f236dea55aebbd42e6814e0f7bc53e0135091e806008198c643823d871e22fc27c40df40005ec4ccf8cc8ddb55d2424d9ee3610c97d792989354efc1132ac02d7015ec8d535b937324b3dd1a024ae1f3b8a10626d8394f80e42184c03c344a32c4b0a58aee443a70389c0e313a066316ccac378217391a9a0a9478ae80f9456469640aaed6075ff0cec8c0ecea78353d1f4161cdf3500b37daad727eba2ba930c65240207d82a47da30cdd566168831e98b0220104c68b879300b5d8462f5fb619e4b6409b7c9caf4c0ed45920ec107374f60773df7db6d22a90203010001a321301f301d0603551d0e0416041490c61cdb14dbdf5881b9f453422a7bfa26673aad300d06092a864886f70d01010c05000382020e0000d2da29a0b07cb84f306ed4717ab280bddccf3fc38936df79cd63e979e0b8bb287403e6af594ceed6a00aa79a1535c6b18d44f047a637950fa2be14f046ce6527fd8d42fa45b936d6fdf1fa23ba3e4c01cea02c9c7193a7aff2dfccba8b1425c528efe11aecdef9270011a8c8244afc30097c3c50e4c608cfa53da28f0fc3a730820b301b3d3a71c7317a286f134e59d876c93f8ca7ec4cdbd2a1e8627f8b377a7c22977050dc7123641a09e8fcae06cd45392fea6bef04cca32400917df6a70a03be696c436698b0c1c81dc0f47492ddaa9d9312ae9180d7c3f6b62f46d1edaca06fbb3c0659a983984390d2bc3c3f88276aa43b8d0b7bab760247fb9ad90b5bae012a7c8924c9dad6b550989461b01b4fe979887eeeb53cd6c09309444ecc8066491d3a8aed8b53cfd3c63c717d02d5bd34599c9806e0f8dc14efc46fdeac270b2213f1c5e1ca5b39dad230a57463dfc7c2f986036c18fed520804285d57ce68c1f4487ccda94b2ee17e8aa23fc147e3cab194e805d448f6b10e40b9dc649647d7b321c7197f7a11bfddc54b39ae9be21b7a701d1dc7db79e0a6b69f0473d4f50d5c8a2fc24716778b2cf7e1f406eb993c9334e180cd94a828214baffa8b99e627a7900925bde9490c6cb6c1ec713fcee94148c420793a4c5c225f965ce551968a4df0746b6d5f8c9cc7aa76cba93484c4a96a763f51c5c8610c35f7dab09f613ea0582e3c127c866135abe 15 | -------------------------------------------------------------------------------- /fdroid_repos/izzysoft.xml: -------------------------------------------------------------------------------- 1 | 2 | IzzyOnDroid F-Droid Repo 3 | 4 | https://apt.izzysoft.de/fdroid/repo 5 | 6 | This is a repository of apps to be used with F-Droid. Applications in this repository are official binaries built by the original application developers, taken from their resp. repositories (mostly Github). At this moment I cannot give guarantees on regular updates for all of them, though most are checked multiple times a week. 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308204e1308202c9a003020102020454c60934300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b060355040313046e65626f301e170d3136303331303230313634325a170d3433303732373230313634325a30213110300e060355040b1307462d44726f6964310d300b060355040313046e65626f30820222300d06092a864886f70d01010105000382020f003082020a0282020100ac59258ca2e9c216af14d58cb53adb13658480aed5ebc1f59bfc474f0f67c0efe9d58304d0cbda2897bd3283e7afe15512f32743ee243f4b9bba5a017806bc5c3441c905df37d00d3cf77b012af33ee4033b7e8d686277043bcb28241a3fe9f6ebfd72f305a928e300edf554ffaa139d85b5c9282aa8f1a82ff74caea2c13006dbeae8aac9ff44fa4c9122808b90c304db8b9e6ddecdbfbf5ce4ed0115cf1ba2bc6a4d6211765553df9b650db69155448aec4b0aaf59d19712aca3010a0d96eb02ed84e90c16162272af32fe909a5acde37d78fba500994f50c1ec5afa528945a7567567560a9fbafbabd68190c5c13f9a53f39a72734bd8de43c06b21a5cecf2747e6a1879352c49ee29fa092c26ca495baac69eddb614941e27b6a27fb3fb74cbdfe5822bfc266130c1f723a7ab91ed3d6c5261d31fc80ab82b7caa2727120522e65863af436a438c05039e1e099faae4d6170baa10fc9bb7bf101e2b4c9769e693eb7e4e3eebd47bfbfe0069c24a8b1ef72d8fe6549202490cff7b0f36c458b8192fe58f984839290d69639abb15fe1ef2925eb491627f2eefbd13225b925a7bbfc0fb4d95a3fb43599c172037e599639b4f86c4eabc173013776a854e146dfacf424cbae4254f9806ecd79d092f5e67a2f00c98ad64c0bfbeaff117fe4c62685e2e75e2ef507325d05f866510c20006a6c01e8e25d75bd42a0d5397b73eb0203010001a321301f301d0603551d0e0416041417f4fd41b0aa3f4fa981423a123f6f6016e3ce80300d06092a864886f70d01010b050003820201008d5d93cbb48fde9df566d75c54a8da2f29e9ae1bac2ed2436a0f165730244ac9e471b473674bc68717c34e30c29ce5ffa027fa12a7eb2f45b036db0cca79238262ba84f6ec8ffddcfe2b398c0a6aa33d117f83996b3bece96b1ea6f8066c395e5021c2b5fe1638c7ac146cda6ef2e4a836bd9c968ed76c51cc0b09caa4b1a79d5d10b3829804db992a70feb9a76535bc04631193abee9c9d7ebfb07ad464542f65744e76d92c5aeb3beb96dbb0b3d746845cbfa2b12c6da31863ea4a0d664dc5974d5b808c1be52a5e595ed181d86feeff4dc82bc8ee3c11ff807a811322931e804df1d90b5b813dd9ce81f3d8dd7d1bb2994901fe1c1004673f53c7b60cdbc2f914ce0718fbfc8e89b443091f71ecb9f169d558c3818bb1db714a47025154eb974600ca54e29933a87a4080910eee05dcc34de7048fa95b1128d8910b18b5957f2e745de00decd2434af455b24aa3e53de889e37919212a6adb3f4088baec6cc9f3e21b812593605fba0394355bd994f21ceaba861aae29244f5113d4291fdddedbef091e63885ebf318c6e12d338fa9555783643a19181c2cc935307fcee5e6dabf8dd6e19a92b29dbc529d3ef170916fb7b2d9dbf95a358ac7c0204b6e6a416b59441c49c41d6f78b1de63eb8b10c516a5952a20eb0c595cfa21530350c5adde74d815918deb870a9e7750fcb4dc50538fd591006434cbbb001cc2ae1fe11 15 | -------------------------------------------------------------------------------- /fdroid_repos/nailyk.xml: -------------------------------------------------------------------------------- 1 | 2 | nailyk's repository 3 | 4 | https://releases.nailyk.fr/repo 5 | 6 | This repository is managed by nailyk (nailyk-fr github nick / nailyk on mastodon) to keep some app up to date, provide upgrade on some unmaintained official fdroid repo All apps are reported as binary but are built from sources ( https://github.com/nailyk-fr/jenkins_scripts/tree/fdroid ). It is caused by a workaround to build easily, outside of fdroid, then import the apks. 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308205bc308203a4a003020102020900aa399ebdb1ead8f0300d06092a864886f70d01010b0500307e310b3009060355040613024652310f300d06035504080c064672616e636531123010060355040a0c096e61696c796b2e667231123010060355040b0c096e61696c796b2e66723112301006035504030c096e61696c796b2e66723122302006092a864886f70d01090116136e61696c796b5f6361406e61696c796b2e6672301e170d3233303332383130323535385a170d3334303331303130323535385a304031193017060355040a0c106664726f69642e6e61696c796b2e66723123302106035504030c1a6664726f6964206e61696c796b2773207265706f7369746f727930820222300d06092a864886f70d01010105000382020f003082020a0282020100b95c1ce4e4c6c635ca23704de92624c91ad2491a9e31a0663e2260d5f11e09cc10df36300f2aa2834eec1ca5835e7fcc0cc18bdd404e712e97637f3fb5f92a0b20abcd683cdc613dbe005ccfacf6ac783b13b8b4304c57376f1a8f65a5638c996ac5de4be20919934fb0a651364bfc5a8ebe833f10927ccc02479927d774ac2bbd3c8e1731e3069268e70d1035c3026360dfbde4121726f2e35b8b0b3842fdf18e08cd0e72bfe27e502e09dafcacdb59cd359c0c4f1b6dfd7699269a69996d8f138a0ec34128b6ee57220253aeb6a97c4b39680cd5d5ee41748307e68b46928df623370eff6c6d8cf02a2939dd3e262ce711c3f4a4026d66e432ecec6a399a9bc2ca110dcb0cdc35860dda7954611b194b9244ab56fe75395c88cec59c070938a28d71540b9b7cebc6ea6f6da960c1f8c201d9c3afcb5694d7cfe54c1069574f939ad3cce68aa673dc88daa1ea23c4e466a0aed3c0c2615ee211f4f5097736a277956d60d913eaa83688e99362374b3228bf971f13cd53ba20e8665f0ad815b128847ec7980d7f4e38cefaed9ce820a13532de865d29d1a795808a6dafa24776f45a2e6897c17618297b0189ff60b6a83824172f61c117c6e1a094483c3ba8dc37f2b89b226f1f8a39dcad876b0990133437c2db4f0a4d5e683712494a3805bf13c3ad3527e37d789d792cb9de045aef53b8066af04960d7a8697592c7d2cab70203010001a37b307930090603551d1304023000302c06096086480186f842010d041f161d4f70656e53534c2047656e657261746564204365727469666963617465301d0603551d0e04160414ddc6b43aff8268588523d3f870c4870c57a5af1a301f0603551d23041830168014e0064098528487fd76c94f455584c3a61c61dd16300d06092a864886f70d01010b050003820201007066a8813dd93e70bc452413bfd4be5bd06e247954a06fca9331925dd639ebc41445bea101359ddb591ebc960f0b652649fc6f63d3ddb455550f9b2b813a64f1fcce5920d6e5713954767e54660a47bda5dc78b8727b08e1d7b40f48b077ac77b6cac3499b911f517007a98c187af3fab43eb0246eca7a171c8b4c200e1feba98ff958407e3e185d97896d9dd3e75514b42e5f91880ddc5b6937fb24a010f7bd488e8103d52c4214dd32f9aa69a363e39878a155d75e7267df016290a62606fc17679bf46902282b2d1565f01c46787b150635faadfb38d49a7fc6f5b8bb47bd3091a84b903234055e2c08338af74d3c3e6a0abe8b38f755a35b5277f9cb275f07e0d5fc68a7e017da83c09af3a51f7d74f09a793338c3ee40b21a28167e78973c73526c7c346d634a356f5aab0ca18bdae8ddc473455c558908bfa12d6641258bf53196b13df9a748fbe61cb8c7e361f817b1719f737d0d773210f9ca6651b69d2f08e47eb8111b49f3653f22cabf39713b14519fdedc656e352964ba184949d31b7676dbee021160429ac68c4736bc7b20f4b876c03f0ea8c01f0eadae043dea37d1027755b4d01967eb292e19ea794b9ba1902f6ea697adc2cb83f47854b69d8273f5b42d63398d24bfc479ce8b0b2d8129a066843401614c05bcb06cc1dbd9a8037b46fa690b04807e53855034d42747a4ed2545e71faa24969d0d282a51 15 | -------------------------------------------------------------------------------- /fdroid_repos/nanolx.xml: -------------------------------------------------------------------------------- 1 | 2 | Nanolx F-Droid Repo 3 | 4 | https://www.nanolx.org/fdroid/repo 5 | 6 | This is the companion repository for https://www.gitlab.com/Nanolx/NanoDroid containing mainly Phonesky (in-app purchase) and MPV player 7 | 8 | 20000 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308203853082026da00302010202040fb85baf300d06092a864886f70d01010b05003073310b3009060355040613024445310f300d0603550408130642617965726e3112301006035504070c094ec3bc726e62657267310f300d060355040a13064e616e6f6c78310f300d060355040b13064e616e6f6c78311d301b060355040313144368726973746f7068657220427261747573656b301e170d3137303631343139303333375a170d3434313033303139303333375a3073310b3009060355040613024445310f300d0603550408130642617965726e3112301006035504070c094ec3bc726e62657267310f300d060355040a13064e616e6f6c78310f300d060355040b13064e616e6f6c78311d301b060355040313144368726973746f7068657220427261747573656b30820122300d06092a864886f70d01010105000382010f003082010a0282010100889b4a575d2f53ea588ffc210a9213927ff87a4f28001c680296e7187f2d995924339a745b55860cf3f81bba62a75713076cf96841a82ecfe077a5936c873702efe9adb59518acf757582b19dad4be1d7dafe8c7f4c108ab3d910361876646945404da66ee32a98a6eacf4ae54bcbebdbf9d5dad93f07c448428dddba0e6e96bc2574522c6afd86b16557fabc94f2b4d649bd711a8955725fcee3c010acf726e7c930a10727659aff8015909de0be1ae126fb55b9752a5fd04ec2fd8324e9fa62eaa9f061caa7feb6a354539ff5ee88a2e7c047efefb2dddfc808594d55e556822983b113c5174e8bc714679d3e9681ac3614e22d1ccaa46fbbb0e150711df3b0203010001a321301f301d0603551d0e04160414f3b13478f427fc6a1e84075e83a98569ffdc890b300d06092a864886f70d01010b0500038201010077bcb9fb869057dd570dca8ee483d2bdc3da88f0ac50294fc5ed32b3b052c9caf86a3340ba0b075e6362a83605df8d196c371524a5eb3ab09940834f773d8190dc16c58eb5dc151082032bbcb15234952b8e5b79a26e0ea4d67ba0d5305651762d9b2d808c65759792205d7b266d5220f72229fa2095332fe3f7575d69424e4d1404b8310e386c4cf4efca6f81baf40f3ac01affaa60b7ba95fb283633fe8a537541e816d41dda1d4abf8c6579593b213f7fde6f51a50a0f513149236ab14d1ec07675187553473556ec33b7da6019d9d6e432c607b83e148ff202d64c41a93f431932a133e02cd726a03fa83e54d8b678c045a4b04de5e18925a78809759354 15 | -------------------------------------------------------------------------------- /fdroid_repos/nethunter.xml: -------------------------------------------------------------------------------- 1 | 2 | Kali NetHunter App Store 3 | 4 | https://store.nethunter.com/repo 5 | 6 | This is the official Kali NetHunter App Store. Applications in this repository are official binaries built by the original application developers. 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308203333082021ba0030201020204610670e1300d06092a864886f70d01010b0500304a314830460603550403133f73746f72652e6e657468756e7465722e636f6d204f553d4b616c69204e657448756e746572204f3d4f6666656e7369766520536563757269747920433d5553301e170d3139303631333138343634315a170d3436313032393138343634315a304a314830460603550403133f73746f72652e6e657468756e7465722e636f6d204f553d4b616c69204e657448756e746572204f3d4f6666656e7369766520536563757269747920433d555330820122300d06092a864886f70d01010105000382010f003082010a028201010097b1108d01c994892fad7a76c82b868e448339b6ae8560c9a12946a5473e3baa4b1d9057d91eaec3e29bc9e1c88307bbfa0731e844e1864c3cfb9f0bff457b41a4b633e3e4cb848cc6e9442a2e32bd663843c64849895fc089411f6e386a57f6be528930166cf86ce5fa9b702fc88dbfec9f0b1f8ac117107d72ee8c0dc4b458de2d6c08ef1aca190ead4bc812acd9bd8ec53f571a4bb566b0da98a326ff5e538165fa7551261b42be67f4282b676b8504e70f233f479c86d75011bb5aebab7e6d8150b7c318aa617020e96730fe160595c6340cca744a8fb672e842c7bc6fa5e64c50ff0ae2b074bc252150a87d28cdfb137d2a002ab55ca00a47acaf6c3e550203010001a321301f301d0603551d0e04160414bd991dda9bb78aeadcaa4358e7cf74bfc69d9ed8300d06092a864886f70d01010b050003820101000f5454f4743c347f3afb30281aa3ec9cba61a659b2356b26fffd32b9aaa59c22fbd70acad41049abf70efd9d872692b5a2dd3166bd38546fe7b55ba3cd703cb71155735dbf11aa75b8be2c541b25ff99c5a0a5a7332edaff0c67575670d6c00b3e4dd6e9b7eeea36f9a549bb9abdaabd31068ef71c2fbd64cc15b0995d0b73b69dbb342d9df727ec55992b97f6860e2aa7404f2aa96130c58c8a88098551df9e9e942af76700eb3b14ef81788473ccbfdaa9fd86acf7d9d8e81788ff5933538910bcce936525f8853d799ed8e80f93d6c69cd2d6decf21fd9e87bc0a64e6a2589c443ffc55b80c938f73a0bf4f4aac27006e3d45614934db118b5f668a411420 15 | -------------------------------------------------------------------------------- /fdroid_repos/pirata.xml: -------------------------------------------------------------------------------- 1 | 2 | PartidoPirata 3 | 4 | https://fdroid.partidopirata.com.ar/fdroid/repo 5 | 6 | Repositorio de F-Droid pirata P) - Apps: Signal, Wire, OpenArchive, HabitApp 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308204ff308202e7a003020102020430cc9748300d06092a864886f70d01010b050030303110300e060355040b1307462d44726f6964311c301a060355040313136d61726d6974652e6e6176656e2e6c69627265301e170d3138303732303137313731345a170d3435313230353137313731345a30303110300e060355040b1307462d44726f6964311c301a060355040313136d61726d6974652e6e6176656e2e6c6962726530820222300d06092a864886f70d01010105000382020f003082020a0282020100b395e660245c19b7aeff2fafc8f0f2a58899ad91752ca6e2cb5abe8162c7e2939f87380e0a8c8218d0cdc6d736361008b40203ce6fd9a3d6bcc378a6e8c8beaed6fbb1c59010bbc2d7b2affff0f2c13fe11d4a99c9f77d61f89c5476e3527b62468393d943221d8b9edb570a63a5dfbc8430ea0c4796680e986ceb5f591adc4d275ae896a5001caae6fec348995f61f71d65a8b7ce04f9a7dc8e940ad0818d6cb2e562430f538875d8a8c0faa1eee6fca4baa4e4cbe504359efb26b4365345e2be35f83a4c70220d604617c40b20e2e36dc3571ec4696d6ee1907a4a82c951082f09e4091c44e3f400a1758850811525f8fdfe89db7667ba03b735311a2f7b09b79671d1ef2abca687dea7762b210e76c5f93f8392120277bf428f5b1a52ac0b682e6b3cc0f50838adacc61bb65378450a8e78661a3ae61dcc5f35886e352fbfa0e53950b9da42a2aada42245e47c68b1dd923b9e653627921d98979a38cbc05ca96b24da13781a5d390f218b62bfeae5900d344aa697f71f3401954af32acb25408ccbf6f65a518491a1e2bef766808f310b7292e25a1dd7c73436b30340f9998a7ced9e60896522e518d7615108e090c553aa1b6dbe7eedae027f1371813d99c3d7e5ede0bf01a56794b31ef4316e1dae243ba66d3f1876673af6f352073e0a84ff0a4c715a210d0394b3c374c53be7b8944b4ae8319db4d76b9820fb6755f0203010001a321301f301d0603551d0e041604143a99cc4d3fdaab2c2166f613fee5d1e08b0d3822300d06092a864886f70d01010b0500038202010012fbb5278c301a49cc5f2efd9bd9c95ae08afeb003cf3bfbdc25a5836641a83400a1f7dedc7bfce59143f5a78b590c52a0c6972fda887a6a7681a7093285bc5923a02c4c06a60987c4c5b82b0bc5edc0e9c47a02b696c95695d89904713eafb7ef9cff7404506cec077258541774cd9b42d58e4064886d029fd0fb303a013f696dde7fd99708052a64b56bee53e6bb25d9aec2c3c02e464e7b7d329b918b6b804d5969d0dd6ad097a891a90860c04c28a92962334a0a3dfb0cfa7c5cbf9c017e778bf59a90c65be551241d56115231bd1fcfb4d7a9a63ab238f7591b308c226d7adc9455360e86735dab2aec450fca90f276f392def93c42f31e266c9fb242ccd60430cdabc039ead783cc7647b428e1e187a7e4d3651874dedc0caa5bbe039cd401bb0dca79988b48f8e9b67ef6a5577a547baad036e118a06c43eb3bb7fabf4548b09734497695e993dffde303ec504f0d864a300092fbf2b4e1237c47087300c7752d41bd2c129d30f56d5deb58b67cf1e0091f0b18940c22c449d059b48cfd874b77eef6a258fe59d9fb5cfbc50045fb79d833ea11402418e13b3030c48b15a25495d4363daa02d209ad7275d37602e4434aad56896f49e175678103b88a38db8e7d165e6da71f8b6d6db97fe5f95179cd3da4c126e4dfeb2432205b598fd3196d2e03ebd7cecf4f9e70c739874d7d823c70851a7b4a269e9ff4adeca5c2 15 | -------------------------------------------------------------------------------- /fdroid_repos/rakshazi.xml: -------------------------------------------------------------------------------- 1 | 2 | Rakshazi F-Droid 3 | 4 | https://fdroid.rakshazi.me/repo 5 | 6 | FOSS apps, not included in main F-Droid repo. Source: https://gitlab.com/rakshazi/fdroid 7 | 8 | 1 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 308204f1308202d9a00302010202040a1d7b73300d06092a864886f70d01010b050030293110300e060355040b1307462d44726f6964311530130603550403130c393239346163343631613633301e170d3139303630383037313334305a170d3436313032343037313334305a30293110300e060355040b1307462d44726f6964311530130603550403130c39323934616334363161363330820222300d06092a864886f70d01010105000382020f003082020a0282020100981b26ad88cd74b191cc6dafd1fefb879f07c1b08705a95d368af56444292c531dcd77fc1020e3a707dd1cd70e869bdfac60bca9b177235f62fcb4b7aac30a50c355f571bbc5e6fd7b76b709ca7e337a6ee7a59d559fa84aba0322f0d79dac7316588cfa64b4924405a0dadfe7d79c31a378330f53bb2a61013063abdedd3c0e250083a98ae98a7ad38c718294448710666845cbd88c11dcc21b6f2f581f2b0d053e38301909fbd40364c1a899a921e1bccb3a39f489a075ddd715dbc44a6209c11335c422fcb59eee9cbe7c12f06203406b639afa9c9dbae61e080551704e910865f1e76563461a00b31687cdca937c8506fa34056ed57e070468486f7ffe8b9f2b7905ed327ce79395e4a7b43e9005f4fcc76f7f61629457fc69ea8cf463aaaeaa9fe5198f0f067222a716937beb63b3c74d2ea71e77672021dc54ca0ed08b977ede73d2da8b8f54e54e10250d823bacc2b3d4d722c8c1935cdf073ba8bc0f49cc9c04a78bcece817a83065d652a47e171aaa9a0f7e316fe3188c8070b8b06defac39a3596a5c525fb7cdb59f29e5a0f441f8fe4058447c95ec28b1a22c444a5f229349afd11cbc5aa48bcf2669a41f4d402a54746afe97e373b2206e75e0ece2fc6405323a183743477e0a99019b51f0693935622d012f59cddb85f23204d756a32cfc5ede2957b27f2466957778949ad679739cdeabdd9557be12765df370203010001a321301f301d0603551d0e041604144956483edebc73c2896799334fbc301583da70b3300d06092a864886f70d01010b0500038202010081a51700374c3d2421c9390ae907207d9eadae220e17aacb86b9c3459169c2d00a355adc54be454b6d800ddb230f43a93ae9717462cde3b85e06006e691f34025aeba13cffd1b66ec25b0bf748114a8db3e6895e42ce10ce50c7632f9e626c9d98ed2d224c2cea2b316b6f0258e83a7e84285464d6bbb13c5a3809b4c109929c615b1e6ffb082c0e52dade75f64cff17ab6b0570a35a4e0be4dd334bd91b476d80b94afda921755719da08f3e8b9ae5eda61518f6273bff776bcfe5adcec69f290f12ceb7092db1ec76234f285a37155cae2c0f48564289a05c8a448803ffafb3fefa1ac9ed4f817e4447eb6625c61b7a818cdfb61f0ec2f6bab41c2659e0018b747f768cafb56b1b17231c6c3c2811604f1e2208681e2fed8c41b1689ac6ff57d9999ce030ff90162d00d19d5376ca79837d237a8fa52748854d9b41b98c8443d1ada41c2913dc52e7ad61a066d889b5a516611145bc6cdb3175399adc5baaa0fdaa4cd2522f1b5159968284a40fccc7a2befe123de475179236e25bd8188b13263302e5341dd25f2aac24a09570f1d21b01c875dd0fd9f8e9697c3cd6e0aadaffabf24822ba6239e1e10e610ebfe1bd3120e0b21cb88f5cec0cf2e37198e6f4d8433e7fecff4126403dbb572a5949d21890d6a8c03d13fa2cbc093e2cc4a985dab95ffb3b42252f7de40ef31f8db33a256df1ee33935268a4221ad1ba65f52 15 | -------------------------------------------------------------------------------- /fdroid_repos/threema.xml: -------------------------------------------------------------------------------- 1 | 2 | Threema F-Droid Repo 3 | 4 | https://releases.threema.ch/fdroid/repo 5 | 6 | Threema's official F-Droid repository 7 | 8 | 20001 9 | 10 | 0 11 | 12 | ignore 13 | 14 | 3082057f30820367a00302010202141cc47d63211e9d26eff209c8801a59ec0ef296ef300d06092a864886f70d01010b0500304f3129302706035504030c2054687265656d6120462d44726f6964205265706f205369676e696e67204b657931153013060355040a0c0c54687265656d6120476d6248310b3009060355040613024348301e170d3232303631353132333133305a170d3439313033313132333133305a304f3129302706035504030c2054687265656d6120462d44726f6964205265706f205369676e696e67204b657931153013060355040a0c0c54687265656d6120476d6248310b300906035504061302434830820222300d06092a864886f70d01010105000382020f003082020a0282020100c4d66c1277621c692a2c1fc13f9bfd0042faf0866f4bfe494dde669ab01f3b3beef2a9fb2cf0acac6f994d6b4d0f75c5fa5c1e71ece929a2968d560514c3dae6a1d25abf28909efa829df1700ac52fb9ec9103a74d477bd4a7350edc03f1a8747c66c6f9f2ec5be98d05fdd1b51863dbef899723c75dbead0bb39cc263244bd222ce03dd8636d635c13e1959d13bc702d903b79b8b815fdc3774193069568d487a1ef15c7e51bcd7f77763831643ef64b450c7b44302f1a511b0257342fb7ce24a2055c2c06029c53f2749d4693430585e7727410552f584d4d2766a43ea1bc4984d71c9a29a59cf08c16e063ae1f185e5ae9978578c1ca10657ea4315edf13fdfb163961fc935333fba9da95e932060aa1cb20f030da98c6722e3b5d03a833d47ee0f9e2d91b23f9cf1799b674ad6f3746f255275fe182959fc18c1128c6475bce1536edb02b32e4fbeb1ea8dc196b5a3338e256ce7c11bb84b234a2a84c08dd40038996bf5ea550e53c05ab1067a4c6ff82671961c3b2b31a506158e4203a92299b17ffd595270b6693e0ea72b8547a7dbdceaaa1055386c7c4d22e46a5244d04955cd18dfec43df33d830d5b81455220eb07df497be0eecd60aecef0a52eb50405eb853e8d6c067133829081a20f2660587eea37817241dc1f965e0ee7ce6711ddbb2417dea9379921f2bd8ae9fad55839d506e4641b82393011d324133f30203010001a3533051301d0603551d0e04160414826a64c3a52fbfd507f23f1b44cef0f018b77cff301f0603551d23041830168014826a64c3a52fbfd507f23f1b44cef0f018b77cff300f0603551d130101ff040530030101ff300d06092a864886f70d01010b050003820201002d7245e62bda2a4c3c9ad5d8d664f81f6bec3fac8f8311463c3806864e25a975e1eb1ff76f602e3685783a5acc79d313a0e5f93284bc44bd6752f3672440e70495cb01f20d342ce4a2f9ae5e29fe7693d2977de7163ed85556508bae0bc02dbd18e6ffc366b338ccef9f1eb847f378f0477a2a2f9cc7f18cff75212e8292f58ee90a4a105e3e1980c6d072864069e6e1958978c859cbf13298873c33cbdd433599f8394d25a47aee5812caf46203b1b93e8d765e665ee22ff2f51edf82a9317e3b971ea94950c52ee91686ce528a9012776b64bbd19325b333658e15146f709678f5a1f6edb6127256d5a098c14b098b57c23b29f714c1279b21d017a4050239bbc24604933941c3e61374bbf4416ffb02ba0b628f9d9be224e40db05cb1938f84a2de9fae335b546abe229fb0706b7d4a25f045c898e8732b12a6bee252982f2f52150348a9289ccefeccb4c852441b9db946749e1a65421e992a498d0dcee0d557519e032f912c064723db0b7034827a5e380b5ab3f271648809c8060b866dd089be336b1b2546d13db2854a30aedc33b5bbb3d8feaf1293fb0b29d8f97d69ee438c65d3c47ab2199300d156a0a213969d25e447e5639f2daa08cf2fb723e74bd8a909e47b6db84c7c3c4d43b52a8241a1165be2a6762c9db0cd5adb9358da14e63d5aedb2ac3da21abd03e6f7fb1aac570edff763abd01e13cb5c3f134c42 15 | -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A10/packages/apps/Dialer: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Dialer -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A11/packages/apps/Dialer/java/com/android/dialer/callrecord/res/values/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 6 | 4 7 | 8 | -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A11/packages/apps/Settings/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Call recording support 7 | 8 | 9 | Disable call recording restrictions 10 | If activated call recording limitations per country will be disabled 11 | YOU are responsible for checking whether call recording is legal in your country before overriding the default restrictions with this setting!\nSee: https://axpos.org/r 12 | 13 | 14 | -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A12/packages/apps/Dialer: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Dialer -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A13/packages/apps/Dialer: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Dialer -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A13/packages/apps/Settings: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Settings -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A14/packages/apps/Dialer: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Dialer -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A14/packages/apps/Settings: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Settings -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A15/packages/apps/Dialer: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Dialer -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A15/packages/apps/Settings: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Settings -------------------------------------------------------------------------------- /overlays/call-rec/lineage/A9/packages/apps/Dialer: -------------------------------------------------------------------------------- 1 | ../../../A11/packages/apps/Dialer -------------------------------------------------------------------------------- /overlays/gestures/frameworks/base/core/res/res/values/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | com.android.launcher3/com.android.quickstep.RecentsActivity 9 | 10 | 11 | -------------------------------------------------------------------------------- /overlays/orr_installsrc/lineage/A10: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /overlays/orr_installsrc/lineage/A11/packages/apps/Settings/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | App Installation Check (EXPERIMENTAL) 7 | 8 | 9 | Intercept App installation check 10 | If activated all Apps will report as installed by Google Play.\nREQUIRES: \"Allow signature spoofing\" 11 | Several Apps are checking the installation source, i.e. if they are installed by Google Play or not.\nSee https://axpos.org/s for details.\n\nWARNING:\nENABLING THIS SETTING IS HIGHLY EXPERIMENTAL!\nREAD THE GUIDE BEFORE ENABLING:\nhttps://axpos.org/s 12 | 13 | 14 | -------------------------------------------------------------------------------- /overlays/orr_installsrc/lineage/A12: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /overlays/orr_installsrc/lineage/A13: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /overlays/orr_installsrc/lineage/A14: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /overlays/orr_installsrc/lineage/A15: -------------------------------------------------------------------------------- 1 | A11 -------------------------------------------------------------------------------- /overlays/sigspoof/frameworks/base/core/res/res/values/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | com.android.location.fused 10 | 11 | com.google.android.gms 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /overlays/sigspoof/frameworks/base/core/res/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Spoof package signature 6 | 7 | Allows applications to impersonate another application (known as \"signature spoofing\"). 8 | 9 | Spoof package signature 10 | 11 | impersonate another application (\"signature spoofing\") 12 | 13 | 14 | -------------------------------------------------------------------------------- /overlays/sigspoof/packages/apps/Settings/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Signature spoofing support 7 | 8 | 9 | Allow signature spoofing 10 | If disabled, any previously granted signature spoofing permissions remain in place, but no longer have any effect 11 | Allows applications to impersonate another application (known as \"signature spoofing\").\n\nLegitimate applications include microG or Phonesky (Google Play Store for microG).\n\nThis option is a global ON/OFF setting, i.e. applications must explicitly request signature spoofing, or it must be manually enabled within each App\'s \"Permission\" screen (this permission can also be revoked there). 12 | 13 | 14 | -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- 1 | # curl_x64_static 2 | 3 | as compiling a fully static curl does not work for me the current curl release is a prebuilt one (see next) 4 | 5 | ## prebuilt binaries 6 | 7 | https://github.com/moparisthebest/static-curl/releases 8 | 9 | ## build instructions 10 | 11 | warning: the following does not work on Ubuntu 18.04 12 | 13 | ~~~ 14 | cd /tmp/ 15 | git clone https://github.com/curl/curl.git 16 | cd curl 17 | git checkout 18 | autoreconf -fi 19 | 20 | # gcc is apparantly incapable of building a static binary, even gcc -static helloworld.c ends up linked to libc, instead of solving, use clang 21 | export CC=clang 22 | 23 | LDFLAGS="-static" PKG_CONFIG="pkg-config --static" ./configure --disable-shared --enable-static --disable-ldap --enable-ipv6 --enable-unix-sockets --with-openssl --enable-ares 24 | make -j14 V=1 LDFLAGS="-static -all-static" 25 | strip src/curl 26 | ~~~ 27 | 28 | test 1: `file src/curl` 29 | 30 | ~~~ 31 | src/curl: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=88e042a04e9326ec7d8669d8c17b457c6679ecfa, with debug_info, not stripped 32 | 33 | -> must be: "statically linked" 34 | ~~~ 35 | 36 | test 2: `ldd src/curl` 37 | ~~~ 38 | not a dynamic executable <- important 39 | ~~~ 40 | 41 | finish: `cp src/curl -> /tools/curl_x64_static` 42 | -------------------------------------------------------------------------------- /tools/curl_x64_static: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/tools/curl_x64_static -------------------------------------------------------------------------------- /tools/get-signature.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # SPDX-FileCopyrightText: (c) 2025 ale5000 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | # shellcheck enable=all 6 | # shellcheck disable=SC3043 # In POSIX sh, local is undefined 7 | 8 | export SCRIPT_NAME='Get signature' 9 | export SCRIPT_VERSION='0.0.3' 10 | 11 | get_cert_sha256() 12 | { 13 | local _cert_sha256 14 | 15 | test -n "${APKSIGNER_PATH-}" || APKSIGNER_PATH="$(command -v 'apksigner')" || APKSIGNER_PATH="$(command -v 'apksigner.bat')" || : 16 | 17 | if test -n "${APKSIGNER_PATH-}"; then 18 | _cert_sha256="$("${APKSIGNER_PATH:?}" verify --min-sdk-version 24 --print-certs -- "${1:?}" | grep -m 1 -F -e 'certificate SHA-256 digest:' | cut -d ':' -f '2-' -s | tr -d -- ' ' | tr -- '[:lower:]' '[:upper:]' | sed -e 's/../&:/g;s/:$//')" || _cert_sha256='' 19 | elif command 1> /dev/null -v 'keytool'; then 20 | _cert_sha256="$(keytool -printcert -jarfile "${1:?}" | grep -m 1 -F -e 'SHA256:' | cut -d ':' -f '2-' -s | tr -d -- ' ')" || _cert_sha256='' 21 | fi 22 | 23 | if test -n "${_cert_sha256?}"; then 24 | printf '%s\n' "sha256-cert-digest=\"${_cert_sha256:?}\"" 25 | else 26 | return 1 27 | fi 28 | } 29 | 30 | get_cert_sha256 "${@}" 31 | -------------------------------------------------------------------------------- /tools/get_latest_apkname.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | ############################################################################### 3 | # 4 | # about: fetch latest f-droid repo info and parse it for a given apk 5 | # returns: most current apk filename 6 | # 7 | # author: steadfasterX 8 | # copyright: 2021 - steadfasterX 9 | # 10 | ############################################################################### 11 | 12 | import re 13 | import xml.etree.ElementTree as ET 14 | import requests 15 | import argparse 16 | 17 | xml_file = '/tmp/repoinfo.xml' 18 | 19 | parser = argparse.ArgumentParser(description='Parsing a F-Droid repo xml to get the latest version of an APK') 20 | parser.add_argument('--repourl', "-repourl", required=True, 21 | help='The F-Droid full URI (index.xml must be found within that path)') 22 | parser.add_argument('--apkname', "-apkname", required=True, 23 | help='The filename of the APK') 24 | args = parser.parse_args() 25 | 26 | def getXML(xmluri): 27 | xmlget = requests.get(xmluri, headers={'User-Agent': 'Mozilla/5.0'}) 28 | with open(xml_file, 'wb') as f: 29 | f.write(xmlget.content) 30 | 31 | def parseXML(xmlfile, apkname): 32 | tree = ET.parse(xmlfile) 33 | root = tree.getroot() 34 | apkversions = [] 35 | lver = 0 36 | 37 | for item in root.findall('./application/package'): 38 | rep_item = apkname.replace('LATEST', '.*') 39 | re_item = re.compile(rep_item) 40 | for app in item.iter('apkname'): 41 | if bool(re_item.match(app.text)) == True: 42 | #print(app.text) 43 | for v in item.iter('versioncode'): 44 | ver = int(v.text) 45 | #print(ver) 46 | if ver > lver: 47 | lver = ver 48 | latest_apk = apkname.replace('LATEST', str(lver)) 49 | return latest_apk 50 | 51 | def main(): 52 | getXML(args.repourl + "/index.xml") 53 | parsed_apk = parseXML(xml_file, args.apkname) 54 | print(parsed_apk) 55 | 56 | if __name__ == "__main__": 57 | main() 58 | -------------------------------------------------------------------------------- /wiki/.placeholder: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiki/sigspoof/.placeholder: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /wiki/sigspoof/01-devoption-onoff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/01-devoption-onoff.png -------------------------------------------------------------------------------- /wiki/sigspoof/02-privacy-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/02-privacy-manager.png -------------------------------------------------------------------------------- /wiki/sigspoof/03-privacy-manager-sigspoof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/03-privacy-manager-sigspoof.png -------------------------------------------------------------------------------- /wiki/sigspoof/04-privacy-manager-allapps-before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/04-privacy-manager-allapps-before.png -------------------------------------------------------------------------------- /wiki/sigspoof/05-microg-request-permission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/05-microg-request-permission.png -------------------------------------------------------------------------------- /wiki/sigspoof/06-microg-after-allow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/06-microg-after-allow.png -------------------------------------------------------------------------------- /wiki/sigspoof/07-app-permission-manual-enablement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/07-app-permission-manual-enablement.png -------------------------------------------------------------------------------- /wiki/sigspoof/08-privacy-manager-allapps-after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/08-privacy-manager-allapps-after.png -------------------------------------------------------------------------------- /wiki/sigspoof/09-microg-when-devoption-disabled-again.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfX-android/android_vendor_extendrom/483d53ccaf59745084cc65401aaed8c946a5af1d/wiki/sigspoof/09-microg-when-devoption-disabled-again.png --------------------------------------------------------------------------------