15.1: Much more work on rebase

This commit is contained in:
Tad 2018-02-12 03:43:26 -05:00
parent 3739cfbaa2
commit 96edc2acc6
32 changed files with 2774 additions and 53 deletions

View File

@ -39,7 +39,6 @@
<remove-project name="LineageOS/scripts" />
<remove-project name="LineageOS/slackbot" />
<remove-project name="LineageOS/www" />
<remove-project name="platform/cts" />
<remove-project name="platform/hardware/intel/audio_media" />
<remove-project name="platform/hardware/intel/bootstub" />
<remove-project name="platform/hardware/intel/common/bd_prov" />
@ -112,16 +111,16 @@
<project path="device/google/sailfish" name="LineageOS/android_device_google_sailfish" remote="github" />
<project path="kernel/google/marlin" name="LineageOS/android_kernel_google_marlin" remote="github" />
<!-- HTC One (m8) -->
<!-- HTC One (m8)
<project path="device/htc/m8" name="LineageOS/android_device_htc_m8" remote="github" />
<project path="device/htc/m8-common" name="LineageOS/android_device_htc_m8-common" remote="github" />
<project path="device/htc/msm8974-common" name="LineageOS/android_device_htc_msm8974-common" remote="github" />
<project path="kernel/htc/msm8974" name="LineageOS/android_kernel_htc_msm8974" remote="github" />
<project path="kernel/htc/msm8974" name="LineageOS/android_kernel_htc_msm8974" remote="github" />-->
<!-- HTC One (m9) -->
<!-- HTC One (m9)
<project path="device/htc/himaul" name="LineageOS/android_device_htc_himaul" remote="github" />
<project path="device/htc/hima-common" name="LineageOS/android_device_htc_hima-common" remote="github" />
<project path="kernel/htc/msm8994" name="LineageOS/android_kernel_htc_msm8994" remote="github" />
<project path="kernel/htc/msm8994" name="LineageOS/android_kernel_htc_msm8994" remote="github" />-->
<!-- LG G2 (d802) -->
<project path="device/lge/g2-common" name="LineageOS/android_device_lge_g2-common" remote="github" />

View File

@ -0,0 +1,33 @@
#
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Install a shim for Fennec DOS
# Once a user runs F-Droid for the first time, it'll update and install the real Fennec DOS
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := FennecDOS
LOCAL_MODULE_CLASS := APPS
LOCAL_MULTILIB := both
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_OVERRIDES_PACKAGES := Jelly
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := prebuilt/Fennec_DOS-Shim.apk
include $(BUILD_PREBUILT)

View File

@ -0,0 +1,103 @@
From de2ba147b18528eda7ee943865f8569823fbf3f9 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Wed, 23 Nov 2016 16:04:50 -0500
Subject: [PATCH] Add optional automated signing
Change-Id: If5a888f12764c4928f5efbb2fda78f76fb445a2a
---
core/Makefile | 43 +++++++++++++++++++++++++++++++++++++------
1 file changed, 37 insertions(+), 6 deletions(-)
diff --git a/core/Makefile b/core/Makefile
index 1d6bff0..d65fd27 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -418,6 +418,11 @@ ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
DEFAULT_KEY_CERT_PAIR := $(OTA_PACKAGE_SIGNING_KEY)
endif
+ifneq ($(SIGNING_KEY_DIR),)
+ KEY_CERT_DIR := $(SIGNING_KEY_DIR)
+ DEFAULT_KEY_CERT_PAIR := $(SIGNING_KEY_DIR)/releasekey
+endif
+
# Rules that need to be present for the all targets, even
# if they don't do anything.
.PHONY: systemimage
@@ -1030,11 +1035,15 @@ endif
# substitute other keys for this one.
OTA_PUBLIC_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE).x509.pem
-ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
- OTA_PUBLIC_KEYS := $(OTA_PACKAGE_SIGNING_KEY).x509.pem
- PRODUCT_EXTRA_RECOVERY_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
+ifneq ($(SIGNING_KEY_DIR),)
+ OTA_PUBLIC_KEYS := $(SIGNING_KEY_DIR)/releasekey.x509.pem
+ PRODUCT_EXTRA_RECOVERY_KEYS += $(SIGNING_KEY_DIR)/extra
+else
+ ifneq ($(OTA_PACKAGE_SIGNING_KEY),)
+ OTA_PUBLIC_KEYS := $(OTA_PACKAGE_SIGNING_KEY).x509.pem
+ PRODUCT_EXTRA_RECOVERY_KEYS := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
+ endif
endif
-
# Generate a file containing the keys that will be read by the
# recovery binary.
RECOVERY_INSTALL_OTA_KEYS := \
@@ -1818,6 +1827,13 @@ $(BUILT_TARGET_FILES_PACKAGE): intermediates := $(intermediates)
$(BUILT_TARGET_FILES_PACKAGE): \
zip_root := $(intermediates)/$(name)
+SIGNED_TARGET_FILES_PACKAGE := $(intermediates)/signed-$(name).zip
+MAYBE_SIGNED_TARGET_FILES_PACKAGE := $(BUILT_TARGET_FILES_PACKAGE)
+
+ifneq ($(SIGNING_KEY_DIR),)
+ MAYBE_SIGNED_TARGET_FILES_PACKAGE := $(SIGNED_TARGET_FILES_PACKAGE)
+endif
+
# $(1): Directory to copy
# $(2): Location to copy it to
# The "ls -A" is to prevent "acp s/* d" from failing if s is empty.
@@ -2182,6 +2198,12 @@ else
OTA_FROM_TARGET_SCRIPT := $(TARGET_RELEASETOOL_OTA_FROM_TARGET_SCRIPT)
endif
+ifeq ($(TARGET_RELEASETOOL_SIGN_TARGET_SCRIPT),)
+ SIGN_TARGET_SCRIPT := ./build/tools/releasetools/sign_target_files_apks
+else
+ SIGN_TARGET_SCRIPT := $(TARGET_RELEASETOOL_SIGN_TARGET_SCRIPT)
+endif
+
ifeq ($(WITH_GMS),true)
$(INTERNAL_OTA_PACKAGE_TARGET): backuptool := false
else
@@ -2209,7 +2231,16 @@ ifneq ($(BLOCK_BASED_OTA),false)
$(INTERNAL_OTA_PACKAGE_TARGET): block_based := --block
endif
-$(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE)
+$(SIGNED_TARGET_FILES_PACKAGE): $(BUILT_TARGET_FILES_PACKAGE) $(DISTTOOLS)
+ @echo "$(SIGN_TARGET_SCRIPT)" > $(PRODUCT_OUT)/sign_script_path
+ @echo -e ${CL_YLW}"Sign target files:"${CL_RST}" $@"
+ $(hide) $(SIGN_TARGET_SCRIPT) \
+ -d $(KEY_CERT_DIR) \
+ -o \
+ $(BUILT_TARGET_FILES_PACKAGE) \
+ $(SIGNED_TARGET_FILES_PACKAGE)
+
+$(INTERNAL_OTA_PACKAGE_TARGET): $(MAYBE_SIGNED_TARGET_FILES_PACKAGE) $(DISTTOOLS)
@echo "$(OTA_FROM_TARGET_SCRIPT)" > $(PRODUCT_OUT)/ota_script_path
@echo "$(override_device)" > $(PRODUCT_OUT)/ota_override_device
@echo "Package OTA: $@"
@@ -2221,7 +2252,7 @@ $(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE)
--backup=$(backuptool) \
--override_device=$(override_device) $(override_prop) \
$(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
- $(BUILT_TARGET_FILES_PACKAGE) $@
+ $(MAYBE_SIGNED_TARGET_FILES_PACKAGE) $@
CM_TARGET_PACKAGE := $(PRODUCT_OUT)/cm-$(CM_VERSION).zip
--
2.9.3

View File

@ -0,0 +1,516 @@
From b1299e6d90dba5f03c40ee07c9917187dae5aad4 Mon Sep 17 00:00:00 2001
From: JustArchi <JustArchi@JustArchi.net>
Date: Fri, 19 Jan 2018 03:29:47 -0500
Subject: [PATCH] JustArchi's ArchiDroid Optimizations V4.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
_ _ _ ____ _ _
/ \ _ __ ___| |__ (_) _ \ _ __ ___ (_) __| |
/ _ \ | '__/ __| '_ \| | | | | '__/ _ \| |/ _` |
/ ___ \| | | (__| | | | | |_| | | | (_) | | (_| |
/_/ \_\_| \___|_| |_|_|____/|_| \___/|_|\__,_|
Copyright (C) 2015 Łukasz "JustArchi" Domeradzki
----------------------------------------------------------------------------------------------------------------
This is the squashed commit of countless hours spent on trying to optimize Android to the maximum and push it to the limits.
Please give proper credit if you decide to cherry-pick this commit. It includes countless number of full builds and tests, almost 200 hours (KK), and additional 100 hours (LP) spent on compiling and testing
----------------------------------------------------------------------------------------------------------------
WARNING! These modifcations are pretty DANGEROUS and may cause problems during compiling or running. You may also need to implement some fixes on your own.
----------------------------------------------------------------------------------------------------------------
Pre-requirements:
- GCC 4.8+, both androideabi and armeabi. Fortunately for us, Lollipop already uses GCC 4.8, but it's in outdated versions and has some internal compiler errors with O3 flags this commit applies. Therefore, I suggest:
1. UBERTC 4.9 arm-linux-androideabi -> https://github.com/ArchiDroid/Toolchain/tree/uber-4.9-arm-linux-androideabi
2. ArchiToolchain 4.9 arm-eabi -> https://github.com/ArchiDroid/Toolchain/tree/architoolchain-4.9-arm-linux-gnueabi-generic
(Please notice that ArchiToolchain is available in many variants, you may want to select the one that suits you best, e.g. Cortex A9 onex)
- (Optional) Target user, instead of userdebug. You should build with user variant instead of userdebug, as user variant in general pre-optimizes some parts and disables additional debug modules, i.e. dalvik debugging, procmem/procrank binaries and so.
This can be done by multiple ways, e.g. using proper lunch command (i.e. lunching cm_i9300-user instead of cm_i9300-userdebug) or "brunch device user", such as "brunch i9300 user", if your android_build includes my CM commit -> https://github.com/CyanogenMod/android_build/commit/73db70d928f4a7af1d4a0a255327c6ff5d8ffbc9
----------------------------------------------------------------------------------------------------------------
Important notes:
- This commit has been tested on up-to-date CM-12.1 (Android 5.1.1) and suggested toolchains mentioned above. Other ROMs and toolchains may, or may not, work out of the box with it.
- You can ask for help in such cases in the XDA thread linked on the bottom of the commit.
- You're applying these optimizations at your own risk, I highly suggest to understand what each of the flag does, and not trying to blindly "apply them all" and hope for the best. Also, due to various hacks and issues in various trees and devices, I can't assure you that what works for me, will also work for you.
- Fortunately for you, my test device is Samsung Galaxy S3 with the nightmare Exynos4 SoC, so it's likely that it should work for major of the (better done) devices.
- As pointed in pre-requirements, stock AOSP toolchains are outdated and have many internal compiler errors. This commit probably can work on stock AOSP toolchains, but you'll need to get rid of some flags that are causing those errors on AOSP toolchains (e.g. -O3 for thumb)
- Due to O3 optimization, code is significantly larger and may cause problems with oversized images especially for older devices. For example, I couldn't apply O3 because building TWRP recovery failed due to the fact that it didn't fit on recovery's block in my device. In such case you have two options. You can use my little hack that ignored recovery size, so compiler doesn't yell about that (but you obviously can't flash such images), or you need to go back either to O2 or Os (for thumb), up to you.
----------------------------------------------------------------------------------------------------------------
Important changes:
- Optimized for speed yet more all instructions - ARM and THUMB (-O3)
- Optimized for speed also parts which are compiled with Clang (-O3)
- Turned off all debugging code (lack of -g)
- Eliminated redundant loads that come after stores to the same memory location, both partial and full redundancies (-fgcse-las)
- Ran a store motion pass after global common subexpression elimination. This pass attempts to move stores out of loops (-fgcse-sm)
- Enabled the identity transformation for graphite. For every SCoP we generate the polyhedral representation and transform it back to gimple. We can then check the costs or benefits of the GIMPLE -> GRAPHITE -> GIMPLE transformation. Some minimal optimizations are also performed by the code generator ISL, like index splitting and dead code elimination in loops (-fgraphite -fgraphite-identity)
- Performed interprocedural pointer analysis and interprocedural modification and reference analysis (-fipa-pta)
- Performed induction variable optimizations (strength reduction, induction variable merging and induction variable elimination) on trees (-fivopts)
- Didn't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions (-fomit-frame-pointer)
- Attempted to avoid false dependencies in scheduled code by making use of registers left over after register allocation. This optimization most benefits processors with lots of registers (-frename-registers)
- Tried to reduce the number of symbolic address calculations by using shared “anchor” symbols to address nearby objects. This transformation can help to reduce the number of GOT entries and GOT accesses on some targets (-fsection-anchors)
- Performed tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other optimizations to do a better job (-ftracer)
- Performed loop invariant motion on trees. It also moved operands of conditions that are invariant out of the loop, so that we can use just trivial invariantness analysis in loop unswitching. The pass also includes store motion (-ftree-loop-im)
- Created a canonical counter for number of iterations in loops for which determining number of iterations requires complicated analysis. Later optimizations then may determine the number easily (-ftree-loop-ivcanon)
- Assumed that loop indices do not overflow, and that loops with nontrivial exit condition are not infinite. This enables a wider range of loop optimizations even if the loop optimizer itself cannot prove that these assumptions are valid (-funsafe-loop-optimizations)
- Moved branches with loop invariant conditions out of the loop (-funswitch-loops)
- Constructed webs as commonly used for register allocation purposes and assigned each web individual pseudo register. This allows the register allocation pass to operate on pseudos directly, but also strengthens several other optimization passes, such as CSE, loop optimizer and trivial dead code remover (-fweb)
- Sorted the common symbols by alignment in descending order. This is to prevent gaps between symbols due to alignment constraints (-Wl,--sort-common)
----------------------------------------------------------------------------------------------------------------
For more information, support, troubleshooting and discussion about my optimizations, please refer to my thread on XDA -> http://forum.xda-developers.com/showthread.php?t=2754997
Change-Id: Ic57c5d9d18b8f8c1efd81505d0c297bc975c547f
---
core/Makefile | 3 +
core/archidroid.mk | 125 ++++++++++++++++++++++++++++++++++++++
core/clang/config.mk | 8 +++
core/combo/TARGET_linux-arm.mk | 14 ++++-
core/combo/TARGET_linux-arm64.mk | 11 +++-
core/combo/TARGET_linux-mips.mk | 12 +++-
core/combo/TARGET_linux-mips64.mk | 12 +++-
core/combo/TARGET_linux-x86.mk | 10 ++-
core/combo/TARGET_linux-x86_64.mk | 10 ++-
core/combo/select.mk | 5 +-
10 files changed, 199 insertions(+), 11 deletions(-)
create mode 100644 core/archidroid.mk
diff --git a/core/Makefile b/core/Makefile
index 3fb424733..ab43549b8 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1,5 +1,8 @@
# Put some miscellaneous rules here
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
# HACK: clear LOCAL_PATH from including last build target before calling
# intermedites-dir-for
LOCAL_PATH := $(BUILD_SYSTEM)
diff --git a/core/archidroid.mk b/core/archidroid.mk
new file mode 100644
index 000000000..b1ff91578
--- /dev/null
+++ b/core/archidroid.mk
@@ -0,0 +1,125 @@
+# _ _ _ ____ _ _
+# / \ _ __ ___| |__ (_) _ \ _ __ ___ (_) __| |
+# / _ \ | '__/ __| '_ \| | | | | '__/ _ \| |/ _` |
+# / ___ \| | | (__| | | | | |_| | | | (_) | | (_| |
+# /_/ \_\_| \___|_| |_|_|____/|_| \___/|_|\__,_|
+#
+# Copyright 2015-2016 Łukasz "JustArchi" Domeradzki
+# Contact: JustArchi@JustArchi.net
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#######################
+### GENERAL SECTION ###
+#######################
+
+# General optimization level
+ARCHIDROID_GCC_CFLAGS_OPTI := -O3
+
+# General optimization level of target ARM compiled with GCC. Default: -O2
+ARCHIDROID_GCC_CFLAGS_ARM := $(ARCHIDROID_GCC_CFLAGS_OPTI)
+
+# General optimization level of target THUMB compiled with GCC. Default: -Os
+ARCHIDROID_GCC_CFLAGS_THUMB := $(ARCHIDROID_GCC_CFLAGS_OPTI)
+
+# Additional flags passed to all C targets compiled with GCC
+ARCHIDROID_GCC_CFLAGS := $(ARCHIDROID_GCC_CFLAGS_OPTI) -pipe -fgcse-las -fgcse-sm -fipa-pta -fivopts -fomit-frame-pointer -frename-registers -fsection-anchors -ftree-loop-im -ftree-loop-ivcanon -ftree-vectorize -funsafe-loop-optimizations -funswitch-loops -fweb
+
+# We also need to disable some warnings to not abort the build - those warning are not critical
+ARCHIDROID_GCC_CFLAGS += -Wno-error=array-bounds -Wno-error=clobbered -Wno-error=maybe-uninitialized -Wno-error=parentheses -Wno-error=strict-overflow -Wno-error=unused-variable
+
+# Flags passed to linker (ld) of all C and C++ targets
+ARCHIDROID_GCC_LDFLAGS := -Wl,-O3 -Wl,--as-needed -Wl,--gc-sections -Wl,--relax -Wl,--sort-common
+
+
+# Flags below are applied to specific targets only, use them if your flag is not compatible for both compilers
+
+# We use GCC 4.9 for arm-linux-androideabi, so we don't have any extra flags for it
+ARCHIDROID_GCC_CFLAGS_32 :=
+
+# We use GCC 4.9 for aarch64-linux-android, so we don't have any extra flags for it
+ARCHIDROID_GCC_CFLAGS_64 :=
+
+############################
+### EXPERIMENTAL SECTION ###
+############################
+
+# Flags in this section are highly experimental
+# Current setup is based on proposed androideabi toolchain
+# Results with other toolchains may vary
+# Be careful when changing options in this section
+
+# These flags should work in general, but it's likely that the generated code might be in fact slower than without them
+# I suggest to not enable them globally, but they're here for you in case you want to benchmark the OS with and without them
+# ARCHIDROID_GCC_CFLAGS += -ftracer -funroll-loops
+
+# These flags may cause ICEs in some compilers, but work fine in other ones, test carefully
+# ARCHIDROID_GCC_CFLAGS += -fgraphite -fgraphite-identity
+
+# The following flags (-floop) require that your GCC has been configured --with-isl
+# Additionally, applying any of them will most likely cause ICE in your compiler, so they're disabled
+# ARCHIDROID_GCC_CFLAGS += -floop-block -floop-interchange -floop-nest-optimize -floop-parallelize-all -floop-strip-mine
+
+# These flags have been disabled because of assembler errors
+# ARCHIDROID_GCC_CFLAGS += -fmodulo-sched -fmodulo-sched-allow-regmoves
+
+####################
+### MISC SECTION ###
+####################
+
+# Flags passed to GCC preprocessor for C and C++
+ARCHIDROID_GCC_CPPFLAGS := $(ARCHIDROID_GCC_CFLAGS)
+
+#####################
+### CLANG SECTION ###
+#####################
+
+# Flags passed to all C targets compiled with CLANG
+ARCHIDROID_CLANG_CFLAGS := -O3 -Qunused-arguments -Wno-unknown-warning-option
+
+# Flags passed to CLANG preprocessor for C and C++
+ARCHIDROID_CLANG_CPPFLAGS := $(ARCHIDROID_CLANG_CFLAGS)
+
+# Flags passed to linker (ld) of all C and C++ targets compiled with CLANG
+ARCHIDROID_CLANG_LDFLAGS := $(ARCHIDROID_GCC_LDFLAGS)
+
+# Flags that are used by GCC, but are unknown to CLANG. If you get "argument unused during compilation" error, add the flag here
+ARCHIDROID_CLANG_UNKNOWN_FLAGS := \
+ -mvectorize-with-neon-double \
+ -mvectorize-with-neon-quad \
+ -fgcse-after-reload \
+ -fgcse-las \
+ -fgcse-sm \
+ -fgraphite \
+ -fgraphite-identity \
+ -fipa-pta \
+ -fivopts \
+ -floop-block \
+ -floop-interchange \
+ -floop-nest-optimize \
+ -floop-parallelize-all \
+ -ftree-parallelize-loops=2 \
+ -ftree-parallelize-loops=4 \
+ -ftree-parallelize-loops=8 \
+ -ftree-parallelize-loops=16 \
+ -floop-strip-mine \
+ -fmodulo-sched \
+ -fmodulo-sched-allow-regmoves \
+ -frerun-cse-after-loop \
+ -frename-registers \
+ -fsection-anchors \
+ -ftracer \
+ -ftree-loop-im \
+ -ftree-loop-ivcanon \
+ -funsafe-loop-optimizations \
+ -fweb
diff --git a/core/clang/config.mk b/core/clang/config.mk
index 6cc344637..af6ec2328 100644
--- a/core/clang/config.mk
+++ b/core/clang/config.mk
@@ -1,5 +1,8 @@
## Clang configurations.
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
LLVM_PREBUILTS_PATH := $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin
LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_PATH)/../lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/
@@ -28,6 +31,10 @@ CLANG_CONFIG_EXTRA_CONLYFLAGS := -std=gnu99
CLANG_CONFIG_EXTRA_CPPFLAGS :=
CLANG_CONFIG_EXTRA_LDFLAGS :=
+CLANG_CONFIG_EXTRA_CFLAGS += $(ARCHIDROID_CLANG_CFLAGS)
+CLANG_CONFIG_EXTRA_CPPFLAGS += $(ARCHIDROID_CLANG_CPPFLAGS)
+CLANG_CONFIG_EXTRA_LDFLAGS += $(ARCHIDROID_CLANG_LDFLAGS)
+
CLANG_CONFIG_EXTRA_CFLAGS += \
-D__compiler_offsetof=__builtin_offsetof
@@ -64,6 +71,7 @@ CLANG_CONFIG_EXTRA_CFLAGS += \
endif
CLANG_CONFIG_UNKNOWN_CFLAGS := \
+ $(ARCHIDROID_CLANG_UNKNOWN_FLAGS) \
-finline-functions \
-finline-limit=64 \
-fno-canonical-system-headers \
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index 510aae52f..9d0ea1a1f 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -29,6 +29,10 @@
# include defines, and compiler settings for the given architecture
# version.
#
+
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
ifeq ($(strip $(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)),)
TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT := armv5te
endif
@@ -71,14 +75,14 @@ endef
$(combo_2nd_arch_prefix)TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
-$(combo_2nd_arch_prefix)TARGET_arm_CFLAGS := -O2 \
+$(combo_2nd_arch_prefix)TARGET_arm_CFLAGS := $(ARCHIDROID_GCC_CFLAGS_ARM) \
-fomit-frame-pointer \
-fstrict-aliasing \
-funswitch-loops
# Modules can choose to compile some source as thumb.
$(combo_2nd_arch_prefix)TARGET_thumb_CFLAGS := -mthumb \
- -Os \
+ $(ARCHIDROID_GCC_CFLAGS_THUMB) \
-fomit-frame-pointer \
-fno-strict-aliasing
@@ -148,12 +152,16 @@ $(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
# More flags/options can be added here
$(combo_2nd_arch_prefix)TARGET_RELEASE_CFLAGS := \
-DNDEBUG \
- -g \
-Wstrict-aliasing=2 \
-fgcse-after-reload \
-frerun-cse-after-loop \
-frename-registers
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS_32)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += $(ARCHIDROID_GCC_CPPFLAGS)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_LDFLAGS += $(ARCHIDROID_GCC_LDFLAGS)
+
libc_root := bionic/libc
libm_root := bionic/libm
diff --git a/core/combo/TARGET_linux-arm64.mk b/core/combo/TARGET_linux-arm64.mk
index 6a1d8619f..bef38c2dd 100644
--- a/core/combo/TARGET_linux-arm64.mk
+++ b/core/combo/TARGET_linux-arm64.mk
@@ -29,6 +29,10 @@
# include defines, and compiler settings for the given architecture
# version.
#
+
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
ifeq ($(strip $(TARGET_ARCH_VARIANT)),)
TARGET_ARCH_VARIANT := armv8
endif
@@ -128,12 +132,17 @@ TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
# More flags/options can be added here
TARGET_RELEASE_CFLAGS := \
-DNDEBUG \
- -O2 -g \
+ $(ARCHIDROID_GCC_CFLAGS_OPTI) \
-Wstrict-aliasing=2 \
-fgcse-after-reload \
-frerun-cse-after-loop \
-frename-registers
+TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS)
+TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS_64)
+TARGET_GLOBAL_CPPFLAGS += $(ARCHIDROID_GCC_CPPFLAGS)
+TARGET_GLOBAL_LDFLAGS += $(ARCHIDROID_GCC_LDFLAGS)
+
libc_root := bionic/libc
libm_root := bionic/libm
diff --git a/core/combo/TARGET_linux-mips.mk b/core/combo/TARGET_linux-mips.mk
index 186d88f25..39ee5ef4b 100644
--- a/core/combo/TARGET_linux-mips.mk
+++ b/core/combo/TARGET_linux-mips.mk
@@ -29,6 +29,10 @@
# include defines, and compiler settings for the given architecture
# version.
#
+
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
ifeq ($(strip $(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)),)
TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT := mips32r2-fp
endif
@@ -71,7 +75,7 @@ endef
$(combo_2nd_arch_prefix)TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
-TARGET_mips_CFLAGS := -O2 \
+TARGET_mips_CFLAGS := $(ARCHIDROID_GCC_CFLAGS_OPTI) \
-fomit-frame-pointer \
-fno-strict-aliasing \
-funswitch-loops
@@ -119,12 +123,16 @@ $(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
# More flags/options can be added here
$(combo_2nd_arch_prefix)TARGET_RELEASE_CFLAGS := \
-DNDEBUG \
- -g \
-Wstrict-aliasing=2 \
-fgcse-after-reload \
-frerun-cse-after-loop \
-frename-registers
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS_32)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += $(ARCHIDROID_GCC_CPPFLAGS)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_LDFLAGS += $(ARCHIDROID_GCC_LDFLAGS)
+
libc_root := bionic/libc
libm_root := bionic/libm
diff --git a/core/combo/TARGET_linux-mips64.mk b/core/combo/TARGET_linux-mips64.mk
index 3e1f61a0f..a59978afb 100644
--- a/core/combo/TARGET_linux-mips64.mk
+++ b/core/combo/TARGET_linux-mips64.mk
@@ -29,6 +29,10 @@
# include defines, and compiler settings for the given architecture
# version.
#
+
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
ifeq ($(strip $(TARGET_ARCH_VARIANT)),)
TARGET_ARCH_VARIANT := mips64r6
endif
@@ -71,7 +75,7 @@ endef
TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
-TARGET_mips_CFLAGS := -O2 \
+TARGET_mips_CFLAGS := $(ARCHIDROID_GCC_CFLAGS_OPTI) \
-fomit-frame-pointer \
-fno-strict-aliasing \
-funswitch-loops
@@ -125,12 +129,16 @@ TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
# More flags/options can be added here
TARGET_RELEASE_CFLAGS := \
-DNDEBUG \
- -g \
-Wstrict-aliasing=2 \
-fgcse-after-reload \
-frerun-cse-after-loop \
-frename-registers
+TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS)
+TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS_64)
+TARGET_GLOBAL_CPPFLAGS += $(ARCHIDROID_GCC_CPPFLAGS)
+TARGET_GLOBAL_LDFLAGS += $(ARCHIDROID_GCC_LDFLAGS)
+
libc_root := bionic/libc
libm_root := bionic/libm
diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk
index 558ec3b6b..7dd32e711 100644
--- a/core/combo/TARGET_linux-x86.mk
+++ b/core/combo/TARGET_linux-x86.mk
@@ -17,6 +17,9 @@
# Configuration for Linux on x86 as a target.
# Included by combo/select.mk
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
# Provide a default variant.
ifeq ($(strip $(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)),)
TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT := x86
@@ -73,6 +76,11 @@ endif
$(combo_2nd_arch_prefix)TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS_32)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += $(ARCHIDROID_GCC_CPPFLAGS)
+$(combo_2nd_arch_prefix)TARGET_GLOBAL_LDFLAGS += $(ARCHIDROID_GCC_LDFLAGS)
+
libc_root := bionic/libc
libm_root := bionic/libm
@@ -82,7 +90,7 @@ KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-x86 # x86 covers both x86
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += \
- -O2 \
+ $(ARCHIDROID_GCC_CFLAGS_OPTI) \
-Wa,--noexecstack \
-Werror=format-security \
-D_FORTIFY_SOURCE=2 \
diff --git a/core/combo/TARGET_linux-x86_64.mk b/core/combo/TARGET_linux-x86_64.mk
index 12166ec47..a96203bc2 100644
--- a/core/combo/TARGET_linux-x86_64.mk
+++ b/core/combo/TARGET_linux-x86_64.mk
@@ -17,6 +17,9 @@
# Configuration for Linux on x86_64 as a target.
# Included by combo/select.mk
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
# Provide a default variant.
ifeq ($(strip $(TARGET_ARCH_VARIANT)),)
TARGET_ARCH_VARIANT := x86_64
@@ -73,6 +76,11 @@ endif
TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
+TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS)
+TARGET_GLOBAL_CFLAGS += $(ARCHIDROID_GCC_CFLAGS_64)
+TARGET_GLOBAL_CPPFLAGS += $(ARCHIDROID_GCC_CPPFLAGS)
+TARGET_GLOBAL_LDFLAGS += $(ARCHIDROID_GCC_LDFLAGS)
+
libc_root := bionic/libc
libm_root := bionic/libm
@@ -82,7 +90,7 @@ KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-x86 # x86 covers both x86
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
TARGET_GLOBAL_CFLAGS += \
- -O2 \
+ $(ARCHIDROID_GCC_CFLAGS_OPTI) \
-Wa,--noexecstack \
-Werror=format-security \
-D_FORTIFY_SOURCE=2 \
diff --git a/core/combo/select.mk b/core/combo/select.mk
index 97d62c684..1eddc2219 100644
--- a/core/combo/select.mk
+++ b/core/combo/select.mk
@@ -21,6 +21,9 @@
# combo_2nd_arch_prefix -- it's defined if this is loaded for the 2nd arch.
#
+# ArchiDroid
+include $(BUILD_SYSTEM)/archidroid.mk
+
# Build a target string like "linux-arm" or "darwin-x86".
combo_os_arch := $($(combo_target)OS)-$($(combo_target)$(combo_2nd_arch_prefix)ARCH)
@@ -34,7 +37,7 @@ $(combo_var_prefix)AR := $(AR)
$(combo_var_prefix)STRIP := $(STRIP)
$(combo_var_prefix)GLOBAL_CFLAGS := -fno-exceptions -Wno-multichar $(BOARD_GLOBAL_CFLAGS)
-$(combo_var_prefix)RELEASE_CFLAGS := -O2 -g -fno-strict-aliasing $(BOARD_RELEASE_CFLAGS)
+$(combo_var_prefix)RELEASE_CFLAGS := $(ARCHIDROID_GCC_CFLAGS_OPTI) -fno-strict-aliasing $(BOARD_RELEASE_CFLAGS)
$(combo_var_prefix)GLOBAL_CPPFLAGS := $(BOARD_GLOBAL_CPPFLAGS)
$(combo_var_prefix)GLOBAL_LDFLAGS :=
$(combo_var_prefix)GLOBAL_ARFLAGS := crsPD
--
2.16.0

View File

@ -0,0 +1,34 @@
From 41c2cb884b69e04e2e7a6404b580aafc4b2ceba7 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 02:41:09 -0500
Subject: [PATCH] TEMPORARY fix camera not working on user builds
Change-Id: I61e8c78bfd70be7c157c049dac201de21749d4a2
---
common/mediaserver.te | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/common/mediaserver.te b/common/mediaserver.te
index 1108551..6b92565 100755
--- a/common/mediaserver.te
+++ b/common/mediaserver.te
@@ -13,12 +13,10 @@ binder_call(mediaserver, rild)
#qmux_socket(mediaserver)
allow mediaserver camera_data_file:sock_file w_file_perms;
-userdebug_or_eng(`
- allow mediaserver camera_data_file:dir rw_dir_perms;
- allow mediaserver camera_data_file:file create_file_perms;
- # Access to audio
- allow mediaserver qti_debugfs:file rw_file_perms;
-')
+allow mediaserver camera_data_file:dir rw_dir_perms;
+allow mediaserver camera_data_file:file create_file_perms;
+# Access to audio
+allow mediaserver qti_debugfs:file rw_file_perms;
r_dir_file(mediaserver, sysfs_esoc)
#allow mediaserver system_app_data_file:file rw_file_perms;
--
2.16.1

View File

@ -0,0 +1,222 @@
From 78c9088dabac1c042567faa3196dfd21fae900ef Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 21 Oct 2017 11:53:09 -0400
Subject: [PATCH] Reduced Resolution Feature 2/2
Change-Id: If92489ee9dc119acdeeb8f05f0d70970eef55817
---
core/java/android/os/IPowerManager.aidl | 3 +
core/java/android/os/PowerManager.java | 32 ++++++++
core/java/android/os/PowerManagerInternal.java | 2 +
.../android/server/power/PowerManagerService.java | 85 ++++++++++++++++++++++
4 files changed, 122 insertions(+)
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 26eb7f169a0..d6051d0db74 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -75,4 +75,7 @@ interface IPowerManager
void setKeyboardLight(boolean on, int key);
void wakeUpWithProximityCheck(long time, String reason, String opPackageName);
+
+ boolean isReducedResolution();
+ boolean setReducedResolution(boolean mode);
}
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 5c8effec0ed..8c1d2fdf65b 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -988,6 +988,38 @@ public final class PowerManager {
}
}
+ /**
+ * Returns true if the WindowManager is running at a reduced resolution
+ *
+ * @return Returns true if WindowManager is set to a reduced resolution, else false.
+ *
+ * @hide
+ */
+ public boolean isReducedResolution() {
+ try {
+ return mService.isReducedResolution();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Set the reduced resolution mode
+ *
+ * @return True if the set was allowed.
+ *
+ * @see #isReducedResolution()
+ *
+ * @hide
+ */
+ public boolean setReducedResolution(boolean mode) {
+ try {
+ return mService.setReducedResolution(mode);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
/**
* Returns true if the device is currently in idle mode. This happens when a device
* has been sitting unused and unmoving for a sufficiently long period of time, so that
diff --git a/core/java/android/os/PowerManagerInternal.java b/core/java/android/os/PowerManagerInternal.java
index bbafb5662cd..e0c71a044a5 100644
--- a/core/java/android/os/PowerManagerInternal.java
+++ b/core/java/android/os/PowerManagerInternal.java
@@ -173,6 +173,8 @@ public abstract class PowerManagerInternal {
public abstract boolean setPowerSaveMode(boolean mode);
+ public abstract boolean setReducedResolution(boolean mode);
+
public abstract void setFeature(int featureId, int data);
public abstract int getFeature(int featureId);
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 55d0809ee4e..33cb0a93bb7 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -29,6 +29,7 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.ContentObserver;
+import android.graphics.Point;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
@@ -49,6 +50,7 @@ import android.os.PowerManager;
import android.os.PowerManagerInternal;
import android.os.Process;
import android.os.RemoteException;
+import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
@@ -67,6 +69,7 @@ import android.util.Slog;
import android.util.SparseIntArray;
import android.util.TimeUtils;
import android.view.Display;
+import android.view.IWindowManager;
import android.view.WindowManagerPolicy;
import com.android.internal.app.IAppOpsService;
@@ -203,6 +206,7 @@ public final class PowerManagerService extends SystemService
private final Context mContext;
private final ServiceThread mHandlerThread;
private final PowerManagerHandler mHandler;
+ private IWindowManager mWm;
private LightsManager mLightsManager;
private BatteryManagerInternal mBatteryManagerInternal;
@@ -2658,6 +2662,60 @@ public final class PowerManagerService extends SystemService
}
}
+ private boolean isReducedResolutionInternal() {
+ synchronized (mLock) {
+ try {
+ Point initialSize = new Point();
+ Point baseSize = new Point();
+
+ mWm = IWindowManager.Stub.asInterface(ServiceManager.checkService(
+ Context.WINDOW_SERVICE));
+
+ mWm.getInitialDisplaySize(Display.DEFAULT_DISPLAY, initialSize);
+ mWm.getBaseDisplaySize(Display.DEFAULT_DISPLAY, baseSize);
+
+ return !initialSize.equals(baseSize);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ }
+
+ private boolean setReducedResolutionInternal(boolean mode) {
+ synchronized (mLock) {
+ try {
+ mWm = IWindowManager.Stub.asInterface(ServiceManager.checkService(
+ Context.WINDOW_SERVICE));
+ if (mode) {
+ Point initialSize = new Point();
+ mWm.getInitialDisplaySize(Display.DEFAULT_DISPLAY, initialSize);
+
+ Point newSize;
+
+ if (initialSize.x == 1440 && initialSize.y == 2560) {//16:9
+ newSize = new Point(1080, 1920);//.75
+ } else if(initialSize.x == 1200 && initialSize.y == 1920) {//16:10
+ newSize = new Point(900, 1440);//.75
+ } else if(initialSize.x == 1080 && initialSize.y == 1920) {//16:9
+ newSize = new Point(720, 1280);//.50
+ } else if(initialSize.x == 768 && initialSize.y == 1280) {//5:3
+ newSize = new Point(576, 960);//.75
+ } else {
+ return false;
+ }
+
+ mWm.setForcedDisplaySize(Display.DEFAULT_DISPLAY, newSize.x, newSize.y);
+ return isReducedResolutionInternal();
+ } else {
+ mWm.clearForcedDisplaySize(Display.DEFAULT_DISPLAY);
+ return !isReducedResolutionInternal();
+ }
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ }
+
boolean isDeviceIdleModeInternal() {
synchronized (mLock) {
return mDeviceIdleMode;
@@ -3833,6 +3891,28 @@ public final class PowerManagerService extends SystemService
}
}
+ @Override // Binder call
+ public boolean isReducedResolution() {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return isReducedResolutionInternal();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ @Override // Binder call
+ public boolean setReducedResolution(boolean mode) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.DEVICE_POWER, null);
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ return setReducedResolutionInternal(mode);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
@Override // Binder call
public boolean isDeviceIdleMode() {
final long ident = Binder.clearCallingIdentity();
@@ -4214,6 +4294,11 @@ public final class PowerManagerService extends SystemService
return setLowPowerModeInternal(mode);
}
+ @Override
+ public boolean setReducedResolution(boolean mode) {
+ return setReducedResolutionInternal(mode);
+ }
+
@Override
public int getFeature(int featureId) {
return nativeGetFeature(featureId);
--
2.14.2

View File

@ -0,0 +1,102 @@
commit 4e9d677b35b9656c22c922c9abca4107ab95c9b4
Author: Bernhard Rosenkränzer <bero@lindev.ch>
Date: Tue Aug 29 00:34:27 2017 +0200
Add permission to allow an APK to fake a signature.
This is needed by GmsCore (https://microg.org/) to pretend
the existence of the official Play Services to applications calling
Google APIs.
Forward-ported from https://github.com/microg/android_packages_apps_GmsCore/blob/master/patches/android_frameworks_base-N.patch
Change-Id: I603fd09200432f7e1bf997072188cdfa6da1594f
Signed-off-by: Bernhard Rosenkränzer <bero@lindev.ch>
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 794d4f8b78b..b3189077256 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -2075,6 +2075,13 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
+ <!-- @hide Allows an application to change the package signature as
+ seen by applications -->
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_fakePackageSignature"
+ android:description="@string/permdesc_fakePackageSignature" />
+
<!-- @deprecated No longer useful, see
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 3613acf44aa..d1636c862c5 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1385,6 +1385,8 @@
<string-array name="config_locationProviderPackageNames" translatable="false">
<!-- The standard AOSP fused location provider -->
<item>com.android.location.fused</item>
+ <!-- The (faked) microg fused location provider (a free reimplementation) -->
+ <item>com.google.android.gms</item>
</string-array>
<!-- This string array can be overriden to enable test location providers initially. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 3eebe7eb68d..7405386cd49 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -764,6 +764,10 @@
<!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Legitimate uses include an emulator pretending to be what it emulates. Grant this permission with caution only!</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_statusBar">disable or modify status bar</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index f36b762c5e9..048a057d39c 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3571,8 +3571,9 @@ public class PackageManagerService extends IPackageManager.Stub
flags |= MATCH_ANY_USER;
}
- PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags,
- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId);
+ PackageInfo packageInfo = mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags,
+ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId),
+ permissions);
if (packageInfo == null) {
return null;
@@ -3584,6 +3585,24 @@ public class PackageManagerService extends IPackageManager.Stub
return packageInfo;
}
+ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi,
+ Set<String> permissions) {
+ try {
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")
+ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1
+ && p.mAppMetaData != null) {
+ String sig = p.mAppMetaData.getString("fake-signature");
+ if (sig != null) {
+ pi.signatures = new Signature[] {new Signature(sig)};
+ }
+ }
+ } catch (Throwable t) {
+ // We should never die because of any failures, this is system code!
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
+ }
+ return pi;
+ }
+
@Override
public void checkPackageStartable(String packageName, int userId) {
final int callingUid = Binder.getCallingUid();

View File

@ -0,0 +1,26 @@
From c018c699ddaf7f9b76cf9f11cc4dc4308054cc0b Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 02:55:55 -0500
Subject: [PATCH] Harden signature spoofing
Change-Id: I86f35690710612f23ffce9067e1fd4d58b9fba6f
---
core/res/AndroidManifest.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 653caaca2a6..7f547dd07ac 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -2152,7 +2152,7 @@
<!-- @hide Allows an application to change the package signature as
seen by applications -->
<permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
- android:protectionLevel="dangerous"
+ android:protectionLevel="signature"
android:label="@string/permlab_fakePackageSignature"
android:description="@string/permdesc_fakePackageSignature" />
--
2.16.1

View File

@ -0,0 +1,43 @@
From 050ab097e1cc3253af8926342371b6025d1ea162 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 02:52:08 -0500
Subject: [PATCH] Change fallback DNS servers to OpenNIC AnyCast
Change-Id: Ib0e3f665be73e5b87d6e4da24f73190a17e334d9
---
core/res/res/values/config.xml | 2 +-
packages/SettingsLib/res/values/strings.xml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 3ce8959a983..00548fbc2f6 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1651,7 +1651,7 @@
<bool name="config_bluetooth_default_profiles">true</bool>
<!-- IP address of the dns server to use if nobody else suggests one -->
- <string name="config_default_dns_server" translatable="false">8.8.8.8</string>
+ <string name="config_default_dns_server" translatable="false">185.121.177.177</string>
<!-- The default mobile provisioning apn. Empty by default, maybe overridden by
an mcc/mnc specific config.xml -->
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index bd884a3c972..ee4db8723a4 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -921,9 +921,9 @@
<!-- Hint text for the IP address -->
<string name="wifi_ip_address_hint" translatable="false">192.168.1.128</string>
<!-- Hint text for DNS -->
- <string name="wifi_dns1_hint" translatable="false">8.8.8.8</string>
+ <string name="wifi_dns1_hint" translatable="false">185.121.177.177</string>
<!-- Hint text for DNS -->
- <string name="wifi_dns2_hint" translatable="false">8.8.4.4</string>
+ <string name="wifi_dns2_hint" translatable="false">169.239.202.202</string>
<!-- Hint text for the gateway -->
<string name="wifi_gateway_hint" translatable="false">192.168.1.1</string>
<!-- Hint text for network prefix length -->
--
2.16.1

View File

@ -0,0 +1,37 @@
From 64922b794a4be1c5900c9e68030f972797366bb0 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 02:59:01 -0500
Subject: [PATCH] Fix calling after VoLTE is removed from devices that had it
previously enabled
Change-Id: I2417cac6313de8d5110106be23ec2048b4562561
---
src/java/com/android/ims/ImsManager.java | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 5319ea4..707fa4d 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -273,17 +273,7 @@ public class ImsManager {
* {@link #isEnhanced4gLteModeSettingEnabledByUserForSlot} instead.
*/
public static boolean isEnhanced4gLteModeSettingEnabledByUser(Context context) {
- // If user can't edit Enhanced 4G LTE Mode, it assumes Enhanced 4G LTE Mode is always true.
- // If user changes SIM from editable mode to uneditable mode, need to return true.
- if (!getBooleanCarrierConfig(context,
- CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL)) {
- return true;
- }
- int enabled = android.provider.Settings.Global.getInt(
- context.getContentResolver(),
- android.provider.Settings.Global.ENHANCED_4G_MODE_ENABLED,
- ImsConfig.FeatureValueConstants.ON);
- return (enabled == 1) ? true : false;
+ return false;
}
/**
--
2.16.1

View File

@ -0,0 +1,364 @@
<?xml version="1.0"?>
<profiles>
<active>1affb8e9-9f00-4a85-8126-5858d6817069</active>
<profile name="Out" uuid="88acad21-d6f7-47c7-bbb6-ccf93ab9a501">
<uuids/>
<profiletype>toggle</profiletype>
<statusbar>no</statusbar>
<screen-lock-mode>0</screen-lock-mode>
<expanded-desktop-mode>0</expanded-desktop-mode>
<doze-mode>2</doze-mode>
<notification-light-mode>1</notification-light-mode>
<airplaneModeDescriptor>
<value>0</value>
<override>true</override>
</airplaneModeDescriptor>
<brightnessDescriptor>
<value>154</value>
<override>true</override>
</brightnessDescriptor>
<ringModeDescriptor>
<value>normal</value>
<override>true</override>
</ringModeDescriptor>
<profileGroup uuid="a126d48a-aaef-47c4-baed-7f0e44aeffe5" default="true">
<sound>content://settings/system/notification_sound</sound>
<ringer>content://settings/system/ringtone</ringer>
<soundMode>DEFAULT</soundMode>
<ringerMode>DEFAULT</ringerMode>
<vibrateMode>DEFAULT</vibrateMode>
<lightsMode>DEFAULT</lightsMode>
</profileGroup>
<streamDescriptor>
<streamId>4</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>5</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>2</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>3</streamId>
<value>4</value>
<override>true</override>
</streamDescriptor>
<connectionDescriptor>
<connectionId>8</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>4</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>0</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>1</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>7</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>5</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>2</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>9</connectionId>
<value>9</value>
<override>true</override>
<subId>1</subId>
</connectionDescriptor>
</profile>
<profile name="Home" uuid="12935e06-b233-4093-b94c-06eb5fa73ed8">
<uuids/>
<profiletype>toggle</profiletype>
<statusbar>no</statusbar>
<screen-lock-mode>0</screen-lock-mode>
<expanded-desktop-mode>0</expanded-desktop-mode>
<doze-mode>2</doze-mode>
<notification-light-mode>1</notification-light-mode>
<airplaneModeDescriptor>
<value>0</value>
<override>true</override>
</airplaneModeDescriptor>
<brightnessDescriptor>
<value>103</value>
<override>true</override>
</brightnessDescriptor>
<ringModeDescriptor>
<value>normal</value>
<override>true</override>
</ringModeDescriptor>
<profileGroup uuid="a126d48a-aaef-47c4-baed-7f0e44aeffe5" default="true">
<sound>content://settings/system/notification_sound</sound>
<ringer>content://settings/system/ringtone</ringer>
<soundMode>DEFAULT</soundMode>
<ringerMode>DEFAULT</ringerMode>
<vibrateMode>DEFAULT</vibrateMode>
<lightsMode>DEFAULT</lightsMode>
</profileGroup>
<streamDescriptor>
<streamId>4</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>5</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>2</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>3</streamId>
<value>4</value>
<override>true</override>
</streamDescriptor>
<connectionDescriptor>
<connectionId>8</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>4</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>0</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>1</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>7</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>5</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>2</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>9</connectionId>
<value>9</value>
<override>true</override>
<subId>1</subId>
</connectionDescriptor>
</profile>
<profile name="Bed" uuid="ac1e7dbc-b785-431d-ba6c-b0bb221e8772">
<uuids/>
<profiletype>toggle</profiletype>
<statusbar>no</statusbar>
<screen-lock-mode>0</screen-lock-mode>
<expanded-desktop-mode>0</expanded-desktop-mode>
<doze-mode>2</doze-mode>
<notification-light-mode>2</notification-light-mode>
<airplaneModeDescriptor>
<value>0</value>
<override>true</override>
</airplaneModeDescriptor>
<brightnessDescriptor>
<value>51</value>
<override>true</override>
</brightnessDescriptor>
<ringModeDescriptor>
<value>normal</value>
<override>true</override>
</ringModeDescriptor>
<profileGroup uuid="a126d48a-aaef-47c4-baed-7f0e44aeffe5" default="true">
<sound>content://settings/system/notification_sound</sound>
<ringer>content://settings/system/ringtone</ringer>
<soundMode>DEFAULT</soundMode>
<ringerMode>DEFAULT</ringerMode>
<vibrateMode>DEFAULT</vibrateMode>
<lightsMode>DEFAULT</lightsMode>
</profileGroup>
<streamDescriptor>
<streamId>4</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>5</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>3</streamId>
<value>4</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>2</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<connectionDescriptor>
<connectionId>8</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>4</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>1</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>0</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>7</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>5</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>2</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>9</connectionId>
<value>9</value>
<override>true</override>
<subId>1</subId>
</connectionDescriptor>
</profile>
<profile name="Mixed" uuid="1affb8e9-9f00-4a85-8126-5858d6817069">
<uuids/>
<profiletype>toggle</profiletype>
<statusbar>no</statusbar>
<screen-lock-mode>0</screen-lock-mode>
<expanded-desktop-mode>0</expanded-desktop-mode>
<doze-mode>0</doze-mode>
<notification-light-mode>0</notification-light-mode>
<airplaneModeDescriptor>
<value>0</value>
<override>true</override>
</airplaneModeDescriptor>
<brightnessDescriptor>
<value>128</value>
<override>true</override>
</brightnessDescriptor>
<ringModeDescriptor>
<value>normal</value>
<override>true</override>
</ringModeDescriptor>
<profileGroup uuid="a126d48a-aaef-47c4-baed-7f0e44aeffe5" default="true">
<sound>content://settings/system/notification_sound</sound>
<ringer>content://settings/system/ringtone</ringer>
<soundMode>DEFAULT</soundMode>
<ringerMode>DEFAULT</ringerMode>
<vibrateMode>DEFAULT</vibrateMode>
<lightsMode>DEFAULT</lightsMode>
</profileGroup>
<streamDescriptor>
<streamId>4</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>5</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>3</streamId>
<value>4</value>
<override>true</override>
</streamDescriptor>
<streamDescriptor>
<streamId>2</streamId>
<value>5</value>
<override>true</override>
</streamDescriptor>
<connectionDescriptor>
<connectionId>8</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>4</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>1</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>0</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>7</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>5</connectionId>
<value>1</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>2</connectionId>
<value>0</value>
<override>true</override>
</connectionDescriptor>
<connectionDescriptor>
<connectionId>9</connectionId>
<value>9</value>
<override>true</override>
<subId>1</subId>
</connectionDescriptor>
</profile>
</profiles>

View File

@ -0,0 +1,28 @@
#Created from F-Droid's Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := DejaVu
LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := DejaVu
dejavu_root := $(LOCAL_PATH)
dejavu_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
dejavu_build := $(dejavu_root)/build
dejavu_apk := app/build/outputs/apk/release/app-release-unsigned.apk
$(dejavu_root)/$(dejavu_apk):
rm -Rf $(dejavu_build)
mkdir -p $(dejavu_out)
ln -sf $(dejavu_out) $(dejavu_build)
cd $(dejavu_root) && gradle assembleRelease
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := $(dejavu_apk)
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)

View File

@ -0,0 +1,21 @@
From 17d82df9831a6e5801203ffe3b0e1aba177f7b20 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Tue, 19 Jan 2016 19:24:47 -0500
Subject: [PATCH] mark as privileged app
---
Android.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/Android.mk b/Android.mk
index c6110a3..ce4e8cf 100644
--- a/Android.mk
+++ b/Android.mk
@@ -19,6 +19,7 @@ $(fdroid_root)/$(fdroid_dir)/$(fdroid_apk):
cd $(fdroid_root)/$(fdroid_dir) && gradle assembleRelease
LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
LOCAL_SRC_FILES := $(fdroid_dir)/$(fdroid_apk)
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

View File

@ -0,0 +1,194 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="default_repos">
<!-- name -->
<item>F-Droid</item>
<!-- address -->
<item>https://f-droid.org/repo</item>
<!-- description -->
<item>The official F-Droid repository. Applications in this repository are mostly built
directory from the source code. Some are official binaries built by the original
application developers - these will be replaced by source-built versions over time.
</item>
<!-- version -->
<item>18</item>
<!-- enabled -->
<item>1</item>
<!-- priority -->
<item>1</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef
</item>
<!-- name -->
<item>F-Droid Archive</item>
<!-- address -->
<item>https://f-droid.org/archive</item>
<!-- description -->
<item>The archive repository of the F-Droid client. This contains older versions of
applications from the main repository.
</item>
<!-- version -->
<item>18</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>2</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef
</item>
<!-- name -->
<item>Guardian Project</item>
<!-- address -->
<item>https://guardianproject.info/fdroid/repo</item>
<!-- description -->
<item>The official app repository of The Guardian Project. Applications in this repository
are official binaries build by the original application developers and signed by the
same key as the APKs that are released in the Google Play store.
</item>
<!-- version -->
<item>18</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>3</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f
</item>
<!-- name -->
<item>Guardian Project Archive</item>
<!-- address -->
<item>https://guardianproject.info/fdroid/archive</item>
<!-- description -->
<item>The official repository of The Guardian Project apps for use with F-Droid client. This
contains older versions of applications from the main repository.
</item>
<!-- version -->
<item>18</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>4</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f
</item>
<!-- name -->
<item>DivestOS Official</item>
<!-- address -->
<item>https://divestos.xyz/fdroid/official</item>
<!-- description -->
<item>This repository contains apps created by DivestOS and Spot Communications, Inc.
</item>
<!-- version -->
<item>18</item>
<!-- enabled -->
<item>1</item>
<!-- priority -->
<item>5</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308204f1308202d9a003020102020433292e76300d06092a864886f70d01010b050030293110300e060355040b1307462d44726f6964311530130603550403130c6469766573746f732e78797a301e170d3137313130343035313033315a170d3435303332323035313033315a30293110300e060355040b1307462d44726f6964311530130603550403130c6469766573746f732e78797a30820222300d06092a864886f70d01010105000382020f003082020a02820201009870537e4bc478299092496899371d21817ebf7ca2b745153e798812874d1a034f573809e4c88393cf3771c333819fa35929d9467829f482d09179c8378c5adab2c671d68112899df77295bd0f0937b21f0433359e563f1066cc4d9788e4acf70b5e17b6b022b0037f451e1fb614b0bad56683ef0a6765496029104d23856228ecc8865948d72377515e904fb41ca1a93547c5828852241bba558653684ebba1fb07fcdb7adebc8b87c9a9e9f0845f79c2d29436df08870be4f38743739ac07fa8b9e9b226b09e96b0ac3e4088a5acd1e8a92da7d557f7a48e8b43e87a56c1c670bb74fada55ada4f28ae1e8a4505ece3dba9fde03736346c30e0bf5c47a7e315df627949edf414df6ce9bedd63b96f8442e749043a1d8d710a2703764c82a814ec7e935074a0af60e18b180491b9fe961713c409e3d06a7f9c8460d6d2d94e7d7d97fd18104b7d8aad46846cb0e30d42d76aa6cfd44fde97a15d653423236a4d18af2294e82dc00bb157d3c31c0bc66069f74eaa4c846fc957940319256b8da29b6ac301fbec66b37040f362e35ca47bc8cad6a1dbe2ee8734060f3591f88af1bdcb7ce1fe64f6844e12c453619ac473102d683f3d64699c141ebd55b116ffde36e9c500de1861191ef8fecba9d5c37daccf2a31a9b0e9bc8df648a034263660338e7079ca0086c5dd8e3deccd53a30fdfacd27bc32048f7056c9f5ef3a83850203010001a321301f301d0603551d0e04160414b9274907964ebcacf534aaa2a8f9def8aa3f62f3300d06092a864886f70d01010b05000382020100139342695604ab1cbe49db9833999b2a4d9b6f2251ffaa4cc63e46664bb550170fa4cbee7fe63f69d59c88b868197b5b7ad880da071d16c3b9be9f5a492cad4dd847b8397ec79a78379fdf77f75ddf990ac61882772884baa78f5facabdd76c48ba379fc6998ff6d04f368d57ac21e258f64a198fbbea00194ed060007598c95d477cce4eb2432efb4396cd8e98b7766f7aad8919492119cb7ffcf9e613043fe5f4bb836c3a850f991371a6145dc2c2cb6b16bf7e70f7db9333cddac2430668e29e9e4f98b637fcc1761c54ea7c38c1e9af1550e3566661f45dc9d71fcbac77bf7346e9002fbc7c737bd147a2af31815fe0351e765cde22b9473b0db4f710a6cd769f1ac4b334cdb15d78beb3683b9488fe3b17c905f36fc2c5d5a1ff8d26dad74df0223d2ca489a286bbb7519d6b6aa514df7f7650475b77352da6ad05d6c7ffb3e2b8aab6a807dbd9235a87305f192e5aaa2e51fe39226f6a4e49355cc75e8cbdb919ffbcdc8c604d68a0043ac13d6f2471487ba8046c07893fcb32a32114ab0a369d1d0afca215e25f5e5de5c9a01608bbd287543210ca9bc7aaca7bb3ad2604cdd5b55aeb52d66dd63e02f4a8b2a1870744e411642d0e7964bf67509dbcd2ae096d94dede5fea99e494cf804c98fc76e4887136b57e4431ac41138b4030f443e1614cfec6d80e4fe58de93e43b15a1a0f385e4d9b714c4f3e9bba5391c75
</item>
<!-- name -->
<item>DivestOS Unofficial</item>
<!-- address -->
<item>https://divestos.xyz/fdroid/unofficial</item>
<!-- description -->
<item>This repository contains unofficial builds of open source apps that are not included in the official F-Droid repo or IzzySoft repo.
</item>
<!-- version -->
<item>18</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>6</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308204f1308202d9a00302010202045423ae35300d06092a864886f70d01010b050030293110300e060355040b1307462d44726f6964311530130603550403130c6469766573746f732e78797a301e170d3137313130343035323531385a170d3435303332323035323531385a30293110300e060355040b1307462d44726f6964311530130603550403130c6469766573746f732e78797a30820222300d06092a864886f70d01010105000382020f003082020a02820201009dfa645e5bb572bfe496416a4affe8f934aa49ec0fcdfc7f562c1c3359ec4c9119c3fb49909dd0e65de6165a893d0317d9deeb7d605808bf793477dc36096ece24bdfd03217767ca96ada5706452bbe31aa0eb2576fb7088ffb6707f4af414c702c5e7418bb80bcc12c2a549e9bb24bf65f2b62126acf65110fc3c6b6c8888d12c7b62d4c2c530ecffbcebd8337a3701f84db9c1090f90b09739ac9a5d17ac24c8d58e0ec6a3f3a2570ac3ad6ca2075a9393e64da78ea147ad3604ba70206cf92086260e6d8d5dea9d0770035af441df7b14c7d0e01e3a866d35b75f0ac61f9d80ab8b22617ec4816942b9316c9296689acb6f3389c34a35f93cfec9af87a340dcfb7da2464f8ad7baf7e192537ac2431dd1b0ab74c734c0d510c023fe462bbd2414e565b53fe5a89b25be7163867d235023cb75db2fe5fc5794b586dc897488ae182f208cbb8ae94d10d3aeb4b9cfbdeac13ec9c39baa6dbe1877077417b4dd6b65cabd73e173d9eb09fcc65e6483244e1d572678ac7f2bb019e11640fcc024deedbaf868347956304b8365faf3319121aa86b82d0ad6494dc6ca27709fd7abee2c1afa9ad146e26a87b120eaf7ba60ee98d972ce2b6909d9f98aa6dfaf913b3048927a0f099793f26d1785c0c318abf610d47e1e50d93438f6ab081945ef3118325a49bc245f9362d57f5c73d9bb8f429cfdd9e73abdcdb150781f4a2036970203010001a321301f301d0603551d0e04160414f0f410806f6d62967fa247cfe16a10586b043b9d300d06092a864886f70d01010b0500038202010063b9a8ad30d5e4cf2291eb14c6b4b1e4ecd364d4d1a3ddfd07d14612e7cac71f0188e27c316efc1a396869ff390d2e06aa5b4dc97763dab2dcc69099528de0a75e4d0c50404e4d3db6f6e1dadc8b397ec3099dee482dc6884ca74527389add861d5c54c20177e313f3a305638225be4aa9ca6e9d79230b49b34e1871e0f0626d7164ec5be1c85679f641a0c12a8bf3d0bd88d16432993340ca642051757ed2c47fd62931974838f28f923faa4a65bb7a44b3f3f3d913e1f6c23397ec99d0b344119a61ec300e04ad99aed5030f660a236695ca9ba7ee58ff3440fa968813b123d03d8bc056d5a635c4f2ba16a4df12f5bc0bbab5996961f8d8173e53138c5be7413eba7a8b6f2efb9c3c58a5c6da81629c3f7b143f97f72afb739e04c48bcb10cdbcde6b96d2f4e238022dc55111b7b46a2db9893de76fe86fe914b4deda57e7dc5bf20d2f870bf689aeb0c9f6dac00214da4cbd287098cca83467ca9b4ad8d54f0dc7ecbb79162d558e14825c3b7f0bf71d45df27dbba8fc922fd2d6cb05ab7b284c0e39f6c3aa1f66eff0ce675801f6eb42d5acb65f37f72fb01fcda6e4b5f1ef6289fa51b77deeab7041fe1b85bdc13135d7562a44110b9d56439abb8f7968105ce1afe6cdcb5c2a25b4831302ba1d6abc62aefc2318422710e0fc514121a2545b35d89b3999f2c456df037e34eebd8ff223e2118da3653120068ade17d3b
</item>
<!-- name -->
<item>IzzyOnDroid</item>
<!-- address -->
<item>https://apt.izzysoft.de/fdroid/repo</item>
<!-- description -->
<item>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.
</item>
<!-- version -->
<item>17</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>7</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308204e1308202c9a003020102020454c60934300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b060355040313046e65626f301e170d3136303331303230313634325a170d3433303732373230313634325a30213110300e060355040b1307462d44726f6964310d300b060355040313046e65626f30820222300d06092a864886f70d01010105000382020f003082020a0282020100ac59258ca2e9c216af14d58cb53adb13658480aed5ebc1f59bfc474f0f67c0efe9d58304d0cbda2897bd3283e7afe15512f32743ee243f4b9bba5a017806bc5c3441c905df37d00d3cf77b012af33ee4033b7e8d686277043bcb28241a3fe9f6ebfd72f305a928e300edf554ffaa139d85b5c9282aa8f1a82ff74caea2c13006dbeae8aac9ff44fa4c9122808b90c304db8b9e6ddecdbfbf5ce4ed0115cf1ba2bc6a4d6211765553df9b650db69155448aec4b0aaf59d19712aca3010a0d96eb02ed84e90c16162272af32fe909a5acde37d78fba500994f50c1ec5afa528945a7567567560a9fbafbabd68190c5c13f9a53f39a72734bd8de43c06b21a5cecf2747e6a1879352c49ee29fa092c26ca495baac69eddb614941e27b6a27fb3fb74cbdfe5822bfc266130c1f723a7ab91ed3d6c5261d31fc80ab82b7caa2727120522e65863af436a438c05039e1e099faae4d6170baa10fc9bb7bf101e2b4c9769e693eb7e4e3eebd47bfbfe0069c24a8b1ef72d8fe6549202490cff7b0f36c458b8192fe58f984839290d69639abb15fe1ef2925eb491627f2eefbd13225b925a7bbfc0fb4d95a3fb43599c172037e599639b4f86c4eabc173013776a854e146dfacf424cbae4254f9806ecd79d092f5e67a2f00c98ad64c0bfbeaff117fe4c62685e2e75e2ef507325d05f866510c20006a6c01e8e25d75bd42a0d5397b73eb0203010001a321301f301d0603551d0e0416041417f4fd41b0aa3f4fa981423a123f6f6016e3ce80300d06092a864886f70d01010b050003820201008d5d93cbb48fde9df566d75c54a8da2f29e9ae1bac2ed2436a0f165730244ac9e471b473674bc68717c34e30c29ce5ffa027fa12a7eb2f45b036db0cca79238262ba84f6ec8ffddcfe2b398c0a6aa33d117f83996b3bece96b1ea6f8066c395e5021c2b5fe1638c7ac146cda6ef2e4a836bd9c968ed76c51cc0b09caa4b1a79d5d10b3829804db992a70feb9a76535bc04631193abee9c9d7ebfb07ad464542f65744e76d92c5aeb3beb96dbb0b3d746845cbfa2b12c6da31863ea4a0d664dc5974d5b808c1be52a5e595ed181d86feeff4dc82bc8ee3c11ff807a811322931e804df1d90b5b813dd9ce81f3d8dd7d1bb2994901fe1c1004673f53c7b60cdbc2f914ce0718fbfc8e89b443091f71ecb9f169d558c3818bb1db714a47025154eb974600ca54e29933a87a4080910eee05dcc34de7048fa95b1128d8910b18b5957f2e745de00decd2434af455b24aa3e53de889e37919212a6adb3f4088baec6cc9f3e21b812593605fba0394355bd994f21ceaba861aae29244f5113d4291fdddedbef091e63885ebf318c6e12d338fa9555783643a19181c2cc935307fcee5e6dabf8dd6e19a92b29dbc529d3ef170916fb7b2d9dbf95a358ac7c0204b6e6a416b59441c49c41d6f78b1de63eb8b10c516a5952a20eb0c595cfa21530350c5adde74d815918deb870a9e7750fcb4dc50538fd591006434cbbb001cc2ae1fe11
</item>
<!-- name -->
<item>microG</item>
<!-- address -->
<item>https://microg.org/fdroid/repo</item>
<!-- description -->
<item>This is a repository of microG apps to be used with F-Droid. Applications in this repository are signed official binaries built by the microG Team from the corresponding source code.
</item>
<!-- version -->
<item>17</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>8</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308202ed308201d5a003020102020426ffa009300d06092a864886f70d01010b05003027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a656374301e170d3132313030363132303533325a170d3337303933303132303533325a3027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a65637430820122300d06092a864886f70d01010105000382010f003082010a02820101009a8d2a5336b0eaaad89ce447828c7753b157459b79e3215dc962ca48f58c2cd7650df67d2dd7bda0880c682791f32b35c504e43e77b43c3e4e541f86e35a8293a54fb46e6b16af54d3a4eda458f1a7c8bc1b7479861ca7043337180e40079d9cdccb7e051ada9b6c88c9ec635541e2ebf0842521c3024c826f6fd6db6fd117c74e859d5af4db04448965ab5469b71ce719939a06ef30580f50febf96c474a7d265bb63f86a822ff7b643de6b76e966a18553c2858416cf3309dd24278374bdd82b4404ef6f7f122cec93859351fc6e5ea947e3ceb9d67374fe970e593e5cd05c905e1d24f5a5484f4aadef766e498adf64f7cf04bddd602ae8137b6eea40722d0203010001a321301f301d0603551d0e04160414110b7aa9ebc840b20399f69a431f4dba6ac42a64300d06092a864886f70d01010b0500038201010007c32ad893349cf86952fb5a49cfdc9b13f5e3c800aece77b2e7e0e9c83e34052f140f357ec7e6f4b432dc1ed542218a14835acd2df2deea7efd3fd5e8f1c34e1fb39ec6a427c6e6f4178b609b369040ac1f8844b789f3694dc640de06e44b247afed11637173f36f5886170fafd74954049858c6096308fc93c1bc4dd5685fa7a1f982a422f2a3b36baa8c9500474cf2af91c39cbec1bc898d10194d368aa5e91f1137ec115087c31962d8f76cd120d28c249cf76f4c70f5baa08c70a7234ce4123be080cee789477401965cfe537b924ef36747e8caca62dfefdd1a6288dcb1c4fd2aaa6131a7ad254e9742022cfd597d2ca5c660ce9e41ff537e5a4041e37
</item>
<!-- name -->
<item>Briar Project</item>
<!-- address -->
<item>https://briarproject.org/fdroid/repo</item>
<!-- description -->
<item>This is a repository of apps to be used with FDroid. Applications in this repository are official binaries built by the original application developers.
</item>
<!-- version -->
<item>17</item>
<!-- enabled -->
<item>0</item>
<!-- priority -->
<item>9</item>
<!-- push requests -->
<item>ignore</item>
<!-- pubkey -->
<item>
308202d5308201bda0030201020204018cf0a4300d06092a864886f70d01010b0500301b31193017060355040a1310627269617270726f6a6563742e6f7267301e170d3137303732353134303630325a170d3232303732343134303630325a301b31193017060355040a1310627269617270726f6a6563742e6f726730820122300d06092a864886f70d01010105000382010f003082010a0282010100912fbe5333e85dc38a1ac8eca5d10e7e084459b3ef3ea84e72ad67758b63add64345ab2a26fef0a5be41c68461a69d1ae9f8652a98c181765f551776d3bfbcd2cfd6bb1222140566afd1cae791714ef56d6d137191d971404bdf9d93935adb0222de2df8718a6c5584dde5607da1249509fb5ed3cf2d14a0ff2962e942d1985ad3d1cd479c149caf71c98b54647d2953fbf60019df588c649598616e12c7ef7cd58cbea2ec42e067923b79be33ae4079736e521f9b4df5c1f670fbd2b55f1e4c86fb46f47a98e11f49007c8c0a390f36d8d363edf305d81be5b04d082f8c0b3a756cbc19a0ae51e3f241560457827638d8af97ac66fcb1e274d3575af17932bd0203010001a321301f301d0603551d0e04160414d16614bba270ddbbe7dfd75da361bd4e24dc3413300d06092a864886f70d01010b05000382010100573c98ccf56d9ec6644705995db1d03806c087d4be4b25061d1ce144a72e2c14c86845e6847cede6bd0c469ce610153c0c144412c8ab0171342e40acd8562c8de8032e4eb9fc6803cad0e2fd6b4da3cf0ce4148376b0b7d57bb74f1b7c55954eb184a1392fae2231aabf9705a9eace7795c99b1cd7b2e796ffc58b422e1e80b9cdec20ce352e10974c64270856e1aecf9febb8199239625692bbebc0236ecaf03f57ed70cc13057a33cbf2bd7ffa46704f530b0acbc8a0a2a05cc322704e340123aa4277e11946b35ae8c9174b9fac97e0c1207c6194856016202c94f1678a6f9911073bd46e513692274592a989d16181e02b423e89050b2704c7575b5d31f1
</item>
</string-array>
</resources>

View File

@ -0,0 +1,27 @@
From 77ca61398922d69a2b97dc3a0e4e149c40b5bbc1 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sun, 18 Dec 2016 19:01:10 -0500
Subject: [PATCH] Change to release key
---
app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java b/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java
index f42bbd8..ee22bb7 100644
--- a/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java
+++ b/app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java
@@ -31,8 +31,8 @@ import java.util.HashSet;
public class ClientWhitelist {
public static HashSet<Pair<String, String>> whitelist = new HashSet<>(Arrays.asList(
- // certificate SHA-256 of https//f-droid.org/FDroid.apk
- new Pair<>("org.fdroid.fdroid", "43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab")
+ //release-key
+ new Pair<>("org.fdroid.fdroid", "cb1ee2ec40d05ed678f42ae701cdfa29eea79d0e6d633276de230bf3494067c3")
));
}
--
2.9.3

View File

@ -0,0 +1,128 @@
From 192de0fd289b2d22f4258745370fd13d68107b71 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 03:10:11 -0500
Subject: [PATCH] Remove analytics
Change-Id: I9d1bcd4a6afa492bfc1e7a9e6f13875fda4353d2
---
AndroidManifest.xml | 25 -------------------------
proguard.flags | 1 -
res/values/config.xml | 3 ---
res/values/strings.xml | 22 ----------------------
res/xml/parts_catalog.xml | 5 -----
5 files changed, 56 deletions(-)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6e2cd9b..e4a0d26 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -207,31 +207,6 @@
android:resource="@string/style_summary" />
</activity-alias>
- <!-- Anonymous Statistics -->
- <receiver android:name=".lineagestats.ReportingServiceManager"
- android:enabled="true"
- android:exported="false"
- android:label="ReportingServiceManager">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED" />
- <action android:name="org.lineageos.lineageparts.action.TRIGGER_REPORT_METRICS" />
- </intent-filter>
- </receiver>
-
- <service android:label="ReportingService"
- android:enabled="true"
- android:exported="false"
- android:name=".lineagestats.ReportingService">
- </service>
-
- <service android:name=".lineagestats.StatsUploadJobService"
- android:permission="android.permission.BIND_JOB_SERVICE" />
-
- <service android:name=".lineagestats.ReportingService"
- android:label="ReportingService"
- android:enabled="true"
- android:exported="false" />
-
<!-- Weather settings -->
<activity-alias
android:name=".weather.WeatherServiceSettings"
diff --git a/proguard.flags b/proguard.flags
index 85e774a..db3507c 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -3,7 +3,6 @@
-keep class org.lineageos.lineageparts.*Picker
-keep class org.lineageos.lineageparts.*Settings
--keep class org.lineageos.lineageparts.lineagestats.*
-keep class org.lineageos.lineageparts.contributors.*
-keep class org.lineageos.lineageparts.hardware.*
-keep class org.lineageos.lineageparts.input.*
diff --git a/res/values/config.xml b/res/values/config.xml
index d49bab4..e510fdf 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -17,9 +17,6 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Metrics server endpoint -->
- <string name="stats_lineage_url">https://stats.lineageos.org/api/v1/stats</string>
-
<!-- When true, weather options will be displayed in settings dashboard -->
<bool name="config_showWeatherMenu">true</bool>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4f5b47b..173c133 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -537,28 +537,6 @@
<b>Total commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
<b>Last update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
- <!-- Anonymous Statistics #Lineage -->
- <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
- <string name="anonymous_statistics_title">LineageOS statistics</string>
- <string name="anonymous_statistics_summary">Help make LineageOS better by opting into anonymous statistics reporting</string>
- <string name="anonymous_statistics_warning_title">About</string>
- <string name="anonymous_statistics_warning">Opting into LineageOS Statistics will allow non-personal data to be submitted to the
- developers of LineageOS to track unique installations across devices. The information submitted includes an unique identifier,
- which does not compromise your privacy or personal data. The data is submitted during each boot.\n\nFor an example of the data that is submitted, tap on Preview Data.</string>
- <string name="enable_reporting_title">Enable reporting</string>
- <string name="preview_data_title">Preview data</string>
- <string name="view_stats_title">View stats</string>
- <string name="anonymous_learn_more">Learn more</string>
-
- <!-- Anonymous Statistics - Preview -->
- <string name="preview_id_title">Unique ID</string>
- <string name="preview_device_title">Device</string>
- <string name="preview_version_title">Version</string>
- <string name="preview_country_title">Country</string>
- <string name="preview_carrier_title">Carrier</string>
- <string name="stats_collection_title">Stats collection</string>
- <string name="stats_collection_summary">Allow installation metrics and device statistics to be collected</string>
-
<!-- Display : Rotation -->
<string name="accelerometer_title">Auto-rotate screen</string>
<string name="display_rotation_title">Rotation settings</string>
diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml
index db18231..440e1aa 100644
--- a/res/xml/parts_catalog.xml
+++ b/res/xml/parts_catalog.xml
@@ -74,11 +74,6 @@
android:fragment="org.lineageos.lineageparts.statusbar.StatusBarSettings"
lineage:xmlRes="@xml/status_bar_settings" />
- <part android:key="lineagestats"
- android:title="@string/anonymous_statistics_title"
- android:fragment="org.lineageos.lineageparts.lineagestats.AnonymousStats"
- lineage:xmlRes="@xml/anonymous_stats" />
-
<part android:key="power_menu"
android:title="@string/power_menu_title"
android:fragment="org.lineageos.lineageparts.input.PowerMenuActions"
--
2.16.1

View File

@ -0,0 +1,107 @@
From a1e8c666a77d575c8d78a0d1269b3d06a7cb5d41 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Sat, 21 Oct 2017 09:05:09 -0400
Subject: [PATCH] Reduced Resolution Feature 1/2
Change-Id: I925a23e61ebf3ce06dc78898952085d87ad10410
---
res/values/strings.xml | 3 +++
res/xml/perf_profile_settings.xml | 6 ++++++
.../cyanogenmod/cmparts/power/PerfProfileSettings.java | 17 +++++++++++++++++
3 files changed, 26 insertions(+)
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21b8b78..1fee482 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -576,6 +576,9 @@
<string name="power_save_category_title">Battery saving</string>
<string name="power_save_title">Extreme power saver</string>
<string name="power_save_summary">Restrict device performance and background activity to save power</string>
+ <string name="reduce_resolution_title">Reduce screen resolution</string>
+ <string name="reduce_resolution_summary">Lowers the screen resolution to save power</string>
+ <string name="reduce_resolution_fail_toast">Unable to set a lower screen resolution</string>
<string name="auto_power_save_title">Automatic power saver</string>
<string name="auto_power_save_summary_on">Automatically enable power save mode at %s battery</string>
<string name="auto_power_save_summary_off">Do not enable power save mode automatically</string>
diff --git a/res/xml/perf_profile_settings.xml b/res/xml/perf_profile_settings.xml
index 3585cb7..ce99c6c 100644
--- a/res/xml/perf_profile_settings.xml
+++ b/res/xml/perf_profile_settings.xml
@@ -34,6 +34,12 @@
android:title="@string/auto_power_save_title"
android:persistent="false" />
+ <SwitchPreference
+ android:key="reduce_resolution"
+ android:title="@string/reduce_resolution_title"
+ android:summary="@string/reduce_resolution_summary"
+ android:persistent="false" />
+
</PreferenceCategory>
<PreferenceCategory
diff --git a/src/org/cyanogenmod/cmparts/power/PerfProfileSettings.java b/src/org/cyanogenmod/cmparts/power/PerfProfileSettings.java
index ec2138d..5fdc8f1 100644
--- a/src/org/cyanogenmod/cmparts/power/PerfProfileSettings.java
+++ b/src/org/cyanogenmod/cmparts/power/PerfProfileSettings.java
@@ -56,11 +56,13 @@ public class PerfProfileSettings extends SettingsPreferenceFragment
private static final String KEY_PERF_PROFILE_CATEGORY = "perf_profile_category";
private static final String KEY_AUTO_POWER_SAVE = "auto_power_save";
private static final String KEY_POWER_SAVE = "power_save";
+ private static final String KEY_REDUCE_RESOLUTION = "reduce_resolution";
private static final String KEY_PER_APP_PROFILES = "app_perf_profiles_enabled";
private static final String KEY_PERF_SEEKBAR = "perf_seekbar";
private ListPreference mAutoPowerSavePref;
private SwitchPreference mPowerSavePref;
+ private SwitchPreference mReduceResolutionPref;
private SeekBarPreference mPerfSeekBar;
private StopMotionVectorDrawable mPerfDrawable;
@@ -90,6 +92,7 @@ public class PerfProfileSettings extends SettingsPreferenceFragment
mPerfSeekBar = (SeekBarPreference) findPreference(KEY_PERF_SEEKBAR);
mAutoPowerSavePref = (ListPreference) findPreference(KEY_AUTO_POWER_SAVE);
mPowerSavePref = (SwitchPreference) findPreference(KEY_POWER_SAVE);
+ mReduceResolutionPref = (SwitchPreference) findPreference(KEY_REDUCE_RESOLUTION);
mPerAppProfilesPref = (SwitchPreference) findPreference(KEY_PER_APP_PROFILES);
mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
@@ -124,6 +127,8 @@ public class PerfProfileSettings extends SettingsPreferenceFragment
updateAutoPowerSaveValue();
mAutoPowerSavePref.setOnPreferenceChangeListener(this);
mPowerSavePref.setOnPreferenceChangeListener(this);
+ mReduceResolutionPref.setOnPreferenceChangeListener(this);
+ updateReduceResolutionValue();
}
@@ -245,6 +250,14 @@ public class PerfProfileSettings extends SettingsPreferenceFragment
final int level = Integer.parseInt((String) newValue);
Global.putInt(getContentResolver(), Global.LOW_POWER_MODE_TRIGGER_LEVEL, level);
updateAutoPowerSaveSummary(level);
+ } else if (preference == mReduceResolutionPref) {
+ if (!mPowerManager.setReducedResolution((boolean) newValue)) {
+ // Don't just fail silently, inform the user as well
+ Toast.makeText(getActivity(),
+ R.string.reduce_resolution_fail_toast, Toast.LENGTH_SHORT).show();
+ return false;
+ }
+ updateReduceResolutionValue();
}
return true;
}
@@ -262,6 +275,10 @@ public class PerfProfileSettings extends SettingsPreferenceFragment
PartsUpdater.notifyChanged(getActivity(), getPreferenceScreen().getKey());
}
+ private void updateReduceResolutionValue() {
+ mReduceResolutionPref.setChecked(mPowerManager.isReducedResolution());
+ }
+
private void updateAutoPowerSaveValue() {
final int level = Global.getInt(
getContentResolver(), Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
--
2.14.2

View File

@ -0,0 +1,141 @@
From bc77347e083fec0197da88fd940d23896f2706aa Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Fri, 8 Dec 2017 03:07:24 -0500
Subject: [PATCH] PrivacyGuard: Allow control over more permissions
Change-Id: I46fae35ec2cf6fb560de89581d935cd023b25a86
---
.../android/settings/applications/AppOpsState.java | 60 +++++++++++++++-------
1 file changed, 42 insertions(+), 18 deletions(-)
diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java
index 6935d06931..0bcd690bcf 100644
--- a/src/com/android/settings/applications/AppOpsState.java
+++ b/src/com/android/settings/applications/AppOpsState.java
@@ -113,11 +113,11 @@ public class AppOpsState {
AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION },
new boolean[] { true,
true,
- false,
- false,
- false,
- false,
- false }
+ true,
+ true,
+ true,
+ true,
+ true }
);
public static final OpsTemplate PERSONAL_TEMPLATE = new OpsTemplate(
@@ -128,15 +128,27 @@ public class AppOpsState {
AppOpsManager.OP_READ_CALENDAR,
AppOpsManager.OP_WRITE_CALENDAR,
AppOpsManager.OP_READ_CLIPBOARD,
- AppOpsManager.OP_WRITE_CLIPBOARD },
+ AppOpsManager.OP_WRITE_CLIPBOARD,
+ AppOpsManager.OP_GET_USAGE_STATS,
+ AppOpsManager.OP_BODY_SENSORS,
+ AppOpsManager.OP_GET_ACCOUNTS,
+ AppOpsManager.OP_USE_FINGERPRINT,
+ AppOpsManager.OP_ADD_VOICEMAIL,
+ AppOpsManager.OP_WRITE_WALLPAPER },
new boolean[] { true,
true,
true,
true,
true,
true,
- false,
- false }
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true }
);
public static final OpsTemplate MESSAGING_TEMPLATE = new OpsTemplate(
@@ -148,8 +160,10 @@ public class AppOpsState {
AppOpsManager.OP_WRITE_SMS,
AppOpsManager.OP_SEND_SMS,
AppOpsManager.OP_READ_ICC_SMS,
- AppOpsManager.OP_WRITE_ICC_SMS },
+ AppOpsManager.OP_WRITE_ICC_SMS,
+ AppOpsManager.OP_READ_CELL_BROADCASTS },
new boolean[] { true,
+ true,
true,
true,
true,
@@ -175,7 +189,10 @@ public class AppOpsState {
AppOpsManager.OP_AUDIO_NOTIFICATION_VOLUME,
AppOpsManager.OP_AUDIO_BLUETOOTH_VOLUME,
AppOpsManager.OP_MUTE_MICROPHONE },
- new boolean[] { false,
+ new boolean[] { true,
+ true,
+ true,
+ true,
true,
true,
false,
@@ -185,10 +202,7 @@ public class AppOpsState {
false,
false,
false,
- false,
- false,
- false,
- false }
+ true }
);
public static final OpsTemplate DEVICE_TEMPLATE = new OpsTemplate(
@@ -205,8 +219,15 @@ public class AppOpsState {
AppOpsManager.OP_CHANGE_WIFI_STATE,
AppOpsManager.OP_BLUETOOTH_CHANGE,
AppOpsManager.OP_NFC_CHANGE,
- AppOpsManager.OP_DATA_CONNECT_CHANGE },
+ AppOpsManager.OP_DATA_CONNECT_CHANGE,
+ AppOpsManager.OP_PROCESS_OUTGOING_CALLS,
+ AppOpsManager.OP_USE_SIP,
+ AppOpsManager.OP_READ_PHONE_STATE,
+ AppOpsManager.OP_READ_EXTERNAL_STORAGE,
+ AppOpsManager.OP_WRITE_EXTERNAL_STORAGE },
new boolean[] { false,
+ true,
+ true,
true,
true,
true,
@@ -214,8 +235,11 @@ public class AppOpsState {
true,
false,
false,
- false,
- false,
+ true,
+ true,
+ true,
+ true,
+ true,
true,
true,
true,
@@ -224,7 +248,7 @@ public class AppOpsState {
public static final OpsTemplate RUN_IN_BACKGROUND_TEMPLATE = new OpsTemplate(
new int[] { AppOpsManager.OP_RUN_IN_BACKGROUND },
- new boolean[] { false }
+ new boolean[] { true }
);
public static final OpsTemplate BOOTUP_TEMPLATE = new OpsTemplate(
--
2.15.1

View File

@ -0,0 +1,30 @@
#Created from F-Droid's Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Silence
LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := Silence
silence_root := $(LOCAL_PATH)
silence_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
silence_build := $(silence_root)/build
silence_apk := build/outputs/apk/Silence-release-unsigned.apk
$(silence_root)/$(silence_apk):
rm -Rf $(silence_build)
mkdir -p $(silence_out)
ln -sf $(silence_out) $(silence_build)
cd $(silence_root) && git submodule update --recursive --init
cd $(silence_root) && gradle assembleRelease
LOCAL_CERTIFICATE := platform
LOCAL_OVERRIDES_PACKAGES := messaging
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := $(silence_apk)
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)

View File

@ -0,0 +1,34 @@
From 5655fa77da654b0a638670506d07137796bc3e07 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 16 Oct 2017 14:18:53 -0400
Subject: [PATCH] Switch to our update server
Change-Id: I1e247d3fb6c9f2878842c0d6957792bb773c494d
---
src/org/lineageos/updater/misc/Utils.java | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java
index e5cac4f..6555430 100644
--- a/src/org/lineageos/updater/misc/Utils.java
+++ b/src/org/lineageos/updater/misc/Utils.java
@@ -144,15 +144,10 @@ public class Utils {
}
public static String getServerURL(Context context) {
- String serverUrl = SystemProperties.get(Constants.PROP_UPDATER_URI);
- if (serverUrl.trim().isEmpty()) {
- serverUrl = context.getString(R.string.conf_update_server_url_def);
- }
String incrementalVersion = SystemProperties.get(Constants.PROP_BUILD_VERSION_INCREMENTAL);
String device = SystemProperties.get(Constants.PROP_NEXT_DEVICE,
SystemProperties.get(Constants.PROP_DEVICE));
- String type = SystemProperties.get(Constants.PROP_RELEASE_TYPE).toLowerCase(Locale.ROOT);
- return serverUrl + "/v1/" + device + "/" + type + "/" + incrementalVersion;
+ return "https://divestos.xyz/updater.php?base=LineageOS&device=" + device + "&inc=" + incrementalVersion;
}
public static void triggerUpdate(Context context, String downloadId) {
--
2.14.2

View File

@ -0,0 +1,93 @@
From 0b916be981f926661c9e24d5ab8ded29bc9be7e2 Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 29 May 2017 20:25:28 -0400
Subject: [PATCH] Remove voice input key
Change-Id: Ifb56c679d3a9b6c035fcdd4596ec0b3b5653bea8
---
java/res/values-sw430dp/config-per-form-factor.xml | 2 +-
java/res/values/config-per-form-factor.xml | 2 +-
java/res/xml/prefs_screen_preferences.xml | 2 +-
.../inputmethod/latin/settings/PreferencesSettingsFragment.java | 3 +--
java/src/com/android/inputmethod/latin/settings/SettingsValues.java | 6 ++----
5 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/java/res/values-sw430dp/config-per-form-factor.xml b/java/res/values-sw430dp/config-per-form-factor.xml
index 8868081c3..2199ab6b2 100644
--- a/java/res/values-sw430dp/config-per-form-factor.xml
+++ b/java/res/values-sw430dp/config-per-form-factor.xml
@@ -24,7 +24,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_key_preview_popup">true</bool>
<bool name="config_default_sound_enabled">false</bool>
- <bool name="config_enable_show_voice_key_option">true</bool>
+ <bool name="config_enable_show_voice_key_option">false</bool>
<bool name="config_key_selection_by_dragging_finger">true</bool>
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
false -->
diff --git a/java/res/values/config-per-form-factor.xml b/java/res/values/config-per-form-factor.xml
index 67fc75134..1bbf1640e 100644
--- a/java/res/values/config-per-form-factor.xml
+++ b/java/res/values/config-per-form-factor.xml
@@ -24,7 +24,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_key_preview_popup">true</bool>
<bool name="config_default_sound_enabled">false</bool>
- <bool name="config_enable_show_voice_key_option">true</bool>
+ <bool name="config_enable_show_voice_key_option">false</bool>
<bool name="config_key_selection_by_dragging_finger">true</bool>
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
false -->
diff --git a/java/res/xml/prefs_screen_preferences.xml b/java/res/xml/prefs_screen_preferences.xml
index 101edc855..540f9f6a6 100644
--- a/java/res/xml/prefs_screen_preferences.xml
+++ b/java/res/xml/prefs_screen_preferences.xml
@@ -48,6 +48,6 @@
<CheckBoxPreference
android:key="pref_voice_input_key"
android:title="@string/voice_input"
- android:defaultValue="true"
+ android:defaultValue="false"
android:persistent="true" />
</PreferenceScreen>
diff --git a/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java
index d9858e61f..cd513a47e 100644
--- a/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java
@@ -56,8 +56,7 @@ public final class PreferencesSettingsFragment extends SubScreenFragment {
// initialization method of these classes here. See {@link LatinIME#onCreate()}.
RichInputMethodManager.init(context);
- final boolean showVoiceKeyOption = res.getBoolean(
- R.bool.config_enable_show_voice_key_option);
+ final boolean showVoiceKeyOption = false;
if (!showVoiceKeyOption) {
removePreference(Settings.PREF_VOICE_INPUT_KEY);
}
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 918978949..4c8618234 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -137,9 +137,7 @@ public class SettingsValues {
mKeyPreviewPopupOn = Settings.readKeyPreviewPopupEnabled(prefs, res);
mSlidingKeyInputPreviewEnabled = prefs.getBoolean(
DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW, true);
- mShowsVoiceInputKey = needsToShowVoiceInputKey(prefs, res)
- && mInputAttributes.mShouldShowVoiceInputKey
- && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
+ mShowsVoiceInputKey = false;
mIncludesOtherImesInLanguageSwitchList = Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS
? prefs.getBoolean(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, false)
: true /* forcibly */;
@@ -368,7 +366,7 @@ public class SettingsValues {
.remove(Settings.PREF_VOICE_MODE_OBSOLETE)
.apply();
}
- return prefs.getBoolean(Settings.PREF_VOICE_INPUT_KEY, true);
+ return prefs.getBoolean(Settings.PREF_VOICE_INPUT_KEY, false);
}
public String dump() {
--
2.13.0

View File

@ -0,0 +1,159 @@
From 6362ef2c8317537d2fb1d879127565473fc262a4 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Mon, 12 Feb 2018 03:26:59 -0500
Subject: [PATCH] LTE only option
This is a modified version of thestinger's implementation in CopperheadOS from a time when the repo was/is still licensed under Apache2
https://github.com/CopperheadOS/platform_packages_services_Telephony/commit/567b8daca2d5d570e4eeecd548aa03c606ee9c18
Change-Id: I4efe2f408a23fe64dd570d8ebb304cc66b75244e
---
res/values/strings.xml | 16 ++++++++++++++++
src/com/android/phone/MobileNetworkSettings.java | 10 ++++++++--
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a5651571c..7bf60a8df 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -408,6 +408,8 @@
<string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary">Preferred network mode: CDMA/EvDo/GSM/WCDMA</string>
<!-- Mobile network settings, summary for preferred network mode LTE [CHAR LIMIT=100] -->
<string name="preferred_network_mode_lte_summary">Preferred network mode: LTE </string>
+ <!-- Mobile network settings, summary for preferred network mode LTE only [CHAR LIMIT=100] -->
+ <string name="preferred_network_mode_lte_only_summary">Preferred network mode: LTE only</string>
<!-- Mobile network settings, summary for preferred network mode GSM/WCDMA/LTE [CHAR LIMIT=100] -->
<string name="preferred_network_mode_lte_gsm_wcdma_summary">Preferred network mode: GSM/WCDMA/LTE</string>
<!-- Mobile network settings, summary for preferred network mode CDMA+LTE/EVDO[CHAR LIMIT=100] -->
@@ -695,7 +697,9 @@
<string name="multi_category_disable">Multi-category disabled</string>
<string name="network_lte">LTE (recommended)</string>
+ <string name="network_lte_only">LTE only</string>
<string name="network_4G">4G (recommended)</string>
+ <string name="network_4G_only">4G only</string>
<string name="network_3G" translatable="false">3G</string>
<string name="network_2G" translatable="false">2G</string>
<string name="network_1x" translatable="false">1x</string>
@@ -703,14 +707,17 @@
<string-array name="enabled_networks_except_gsm_choices" translatable="false">
<item>@string/network_lte</item>
+ <item>@string/network_lte_only</item>
<item>@string/network_3G</item>
</string-array>
<string-array name="enabled_networks_except_gsm_4g_choices" translatable="false">
<item>@string/network_4G</item>
+ <item>@string/network_4G_only</item>
<item>@string/network_3G</item>
</string-array>
<string-array name="enabled_networks_except_gsm_values" translatable="false">
<item>"9"</item>
+ <item>"11"</item>
<item>"0"</item>
</string-array>
@@ -732,28 +739,33 @@
<string-array name="enabled_networks_choices" translatable="false">
<item>@string/network_lte</item>
+ <item>@string/network_lte_only</item>
<item>@string/network_3G</item>
<item>@string/network_2G</item>
</string-array>
<string-array name="enabled_networks_4g_choices" translatable="false">
<item>@string/network_4G</item>
+ <item>@string/network_4G_only</item>
<item>@string/network_3G</item>
<item>@string/network_2G</item>
</string-array>
<string-array name="enabled_networks_values" translatable="false">
<item>"9"</item>
+ <item>"11"</item>
<item>"0"</item>
<item>"1"</item>
</string-array>
<string-array name="enabled_networks_cdma_choices" translatable="false">
<item>@string/network_lte</item>
+ <item>@string/network_lte_only</item>
<item>@string/network_3G</item>
<item>@string/network_1x</item>
<item>@string/network_global</item>
</string-array>
<string-array name="enabled_networks_cdma_values" translatable="false">
<item>"8"</item>
+ <item>"11"</item>
<item>"4"</item>
<item>"5"</item>
<item>"10"</item>
@@ -770,20 +782,24 @@
<string-array name="enabled_networks_cdma_only_lte_choices" translatable="false">
<item>@string/network_lte</item>
+ <item>@string/network_lte_only</item>
<item>@string/network_global</item>
</string-array>
<string-array name="enabled_networks_cdma_only_lte_values" translatable="false">
<item>"8"</item>
+ <item>"11"</item>
<item>"10"</item>
</string-array>
<string-array name="enabled_networks_tdscdma_choices" translatable="false">
<item>@string/network_lte</item>
+ <item>@string/network_lte_only</item>
<item>@string/network_3G</item>
<item>@string/network_2G</item>
</string-array>
<string-array name="enabled_networks_tdscdma_values" translatable="false">
<item>"22"</item>
+ <item>"11"</item>
<item>"18"</item>
<item>"1"</item>
</string-array>
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 0ea4702b4..5e4a28dcc 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -1105,6 +1105,7 @@ public class MobileNetworkSettings extends Activity {
switch (buttonNetworkMode) {
case Phone.NT_MODE_WCDMA_PREF:
case Phone.NT_MODE_GSM_ONLY:
+ case Phone.NT_MODE_LTE_ONLY:
case Phone.NT_MODE_WCDMA_ONLY:
case Phone.NT_MODE_GSM_UMTS:
case Phone.NT_MODE_CDMA:
@@ -1363,7 +1364,7 @@ public class MobileNetworkSettings extends Activity {
break;
case Phone.NT_MODE_LTE_ONLY:
mButtonPreferredNetworkMode.setSummary(
- R.string.preferred_network_mode_lte_summary);
+ R.string.preferred_network_mode_lte_only_summary);
break;
case Phone.NT_MODE_LTE_TDSCDMA_GSM:
mButtonPreferredNetworkMode.setSummary(
@@ -1463,7 +1464,6 @@ public class MobileNetworkSettings extends Activity {
controlGsmOptions(true);
break;
}
- case Phone.NT_MODE_LTE_ONLY:
case Phone.NT_MODE_LTE_WCDMA:
if (!mIsGlobalCdma) {
mButtonEnabledNetworks.setValue(
@@ -1476,6 +1476,12 @@ public class MobileNetworkSettings extends Activity {
mButtonEnabledNetworks.setSummary(R.string.network_global);
}
break;
+ case Phone.NT_MODE_LTE_ONLY:
+ mButtonEnabledNetworks.setValue(
+ Integer.toString(Phone.NT_MODE_LTE_ONLY));
+ mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
+ ? R.string.network_4G_only : R.string.network_lte_only);
+ break;
case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
if (isWorldMode()) {
mButtonEnabledNetworks.setSummary(
--
2.16.1

View File

@ -0,0 +1,48 @@
From 2e95e6719f4eebd292c691d2b4d4f5697477b191 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Mon, 12 Feb 2018 03:29:58 -0500
Subject: [PATCH] Harden mounts
Change-Id: Idd2da6d9989ec554ce5b0841781d323fdcd9eb87
---
init/init.cpp | 6 +++---
rootdir/init.rc | 1 +
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/init/init.cpp b/init/init.cpp
index 35fc442d0..b65686f93 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -1019,14 +1019,14 @@ int main(int argc, char** argv) {
mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755");
mkdir("/dev/pts", 0755);
mkdir("/dev/socket", 0755);
- mount("devpts", "/dev/pts", "devpts", 0, NULL);
+ mount("devpts", "/dev/pts", "devpts", MS_NOSUID|MS_NOEXEC, NULL);
#define MAKE_STR(x) __STRING(x)
- mount("proc", "/proc", "proc", 0, "hidepid=2,gid=" MAKE_STR(AID_READPROC));
+ mount("proc", "/proc", "proc", MS_NOSUID|MS_NODEV|MS_NOEXEC, "hidepid=2,gid=" MAKE_STR(AID_READPROC));
// Don't expose the raw commandline to unprivileged processes.
chmod("/proc/cmdline", 0440);
gid_t groups[] = { AID_READPROC };
setgroups(arraysize(groups), groups);
- mount("sysfs", "/sys", "sysfs", 0, NULL);
+ mount("sysfs", "/sys", "sysfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL);
mount("selinuxfs", "/sys/fs/selinux", "selinuxfs", 0, NULL);
mknod("/dev/kmsg", S_IFCHR | 0600, makedev(1, 11));
mknod("/dev/random", S_IFCHR | 0666, makedev(1, 8));
diff --git a/rootdir/init.rc b/rootdir/init.rc
index eca160771..8e2f5a124 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -124,6 +124,7 @@ on init
write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
write /proc/sys/kernel/sched_child_runs_first 0
+ write /proc/sys/kernel/dmesg_restrict 1
write /proc/sys/kernel/randomize_va_space 2
write /proc/sys/vm/mmap_min_addr 32768
write /proc/sys/net/ipv4/ping_group_range "0 2147483647"
--
2.16.1

View File

@ -0,0 +1,66 @@
From a740f4f2065a382f2466bac575327ad4ec3407dd Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 03:34:43 -0500
Subject: [PATCH] Build time variable for AES-256 encryption
Change-Id: I3c826025bf98a180ddd17f47e8bf9e13b5252f3d
---
Android.mk | 4 ++++
cryptfs.cpp | 11 +++++++++--
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/Android.mk b/Android.mk
index 29a7852..2962180 100644
--- a/Android.mk
+++ b/Android.mk
@@ -114,6 +114,10 @@ ifeq ($(TARGET_HW_DISK_ENCRYPTION),true)
vold_cflags += -DCONFIG_HW_DISK_ENCRYPTION
endif
+ifeq ($(TARGET_WANTS_STRONG_ENCRYPTION),true)
+LOCAL_CFLAGS += -DCONFIG_STRONG_ENCRYPTION
+endif
+
ifeq ($(TARGET_KERNEL_HAVE_EXFAT),true)
vold_cflags += -DCONFIG_KERNEL_HAVE_EXFAT
endif
diff --git a/cryptfs.cpp b/cryptfs.cpp
index f01929a..22ae3b6 100644
--- a/cryptfs.cpp
+++ b/cryptfs.cpp
@@ -75,9 +75,17 @@ extern "C" {
#define DM_CRYPT_BUF_SIZE 4096
+#ifdef CONFIG_STRONG_ENCRYPTION
+#define HASH_COUNT 6000
+#define KEY_LEN_BYTES 32
+#define IV_LEN_BYTES 32
+#define RSA_KEY_SIZE 4096
+#else
#define HASH_COUNT 2000
#define KEY_LEN_BYTES 16
#define IV_LEN_BYTES 16
+#define RSA_KEY_SIZE 2048
+#endif
#define KEY_IN_FOOTER "footer"
@@ -93,13 +101,12 @@ extern "C" {
#define TABLE_LOAD_RETRIES 10
-#define RSA_KEY_SIZE 2048
#define RSA_KEY_SIZE_BYTES (RSA_KEY_SIZE / 8)
#define RSA_EXPONENT 0x10001
#define KEYMASTER_CRYPTFS_RATE_LIMIT 1 // Maximum one try per second
#define RETRY_MOUNT_ATTEMPTS 10
-#define RETRY_MOUNT_DELAY_SECONDS 1
+#define RETRY_MOUNT_DELAY_SECONDS 3
static unsigned char saved_master_key[KEY_LEN_BYTES];
static char *saved_mount_point;
--
2.16.1

View File

@ -0,0 +1,27 @@
From 67c7c88735d0f0d9cb6bc7c4478bdb6c171eb40a Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 12 Feb 2018 03:38:10 -0500
Subject: [PATCH] SC Extras
Change-Id: I257d33a176d3b7741b0c85932704bac76cc0271c
---
config/common.mk | 3 +++
1 file changed, 3 insertions(+)
diff --git a/config/common.mk b/config/common.mk
index 10c6ec77..cfc5636a 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -103,6 +103,9 @@ ifeq ($(WITH_TWRP),true)
include vendor/lineage/config/twrp.mk
endif
+# SC Extras
+include vendor/cm/config/sce.mk
+
# Bootanimation
PRODUCT_PACKAGES += \
bootanimation.zip
--
2.16.1

View File

@ -0,0 +1,16 @@
FD_PREBUILTS_PATH := vendor/cm/firmware_deblobber
FD_INSTALL_OUT := $(PRODUCT_OUT)/firmware_deblobber/
FD_INSTALL_TARGET := $(PRODUCT_OUT)/firmware_deblobber-$(TARGET_ARCH).zip
$(FD_INSTALL_TARGET): $(ALL_MODULES.updater.BUILT)
$(hide) rm -rf $@ $(FD_INSTALL_OUT)
$(hide) mkdir -p $(FD_INSTALL_OUT)/META-INF/com/google/android/
$(hide) cp $(ALL_MODULES.updater.BUILT) $(FD_INSTALL_OUT)/META-INF/com/google/android/update-binary
$(hide) cp $(FD_PREBUILTS_PATH)/firmware_deblobber.sh $(FD_INSTALL_OUT)/
$(hide) cp $(FD_PREBUILTS_PATH)/updater-script $(FD_INSTALL_OUT)/META-INF/com/google/android/updater-script
$(hide) (cd $(FD_INSTALL_OUT) && zip -qr $@ *)
.PHONY: firmware_deblobber
firmware_deblobber: $(FD_INSTALL_TARGET)
@echo "Done: $(FD_INSTALL_TARGET)"

View File

@ -0,0 +1,90 @@
#!/sbin/sh
#Maintain "safe" parity with Deblob.sh
#Why so many lines? Why not make a fancy function? Because we'd rather not brick devices!
deleteBlob() {
rm -f /firmware/$1;
rm -f /firmware/image/$1;
}
deleteBlob alipay.b00
deleteBlob alipay.b01
deleteBlob alipay.b02
deleteBlob alipay.b03
deleteBlob alipay.b04
deleteBlob alipay.b05
deleteBlob alipay.b06
deleteBlob alipay.mdt
echo "Removed Alibaba AliPay firmware"
deleteBlob dxcprm.b00
deleteBlob dxcprm.b01
deleteBlob dxcprm.b02
deleteBlob dxcprm.b03
deleteBlob dxcprm.mdt
echo "Removed Discretix DRM (old) firmware"
deleteBlob dxhdcp2.b00
deleteBlob dxhdcp2.b01
deleteBlob dxhdcp2.b02
deleteBlob dxhdcp2.b03
deleteBlob dxhdcp2.mdt
echo "Removed Discretix DRM (new) firmware"
deleteBlob widevine.b00
deleteBlob widevine.b01
deleteBlob widevine.b02
deleteBlob widevine.b03
deleteBlob widevine.b04
deleteBlob widevine.b05
deleteBlob widevine.b06
deleteBlob widevine.mdt
echo "Removed Google Widevine DRM firmware"
deleteBlob tzwidevine.b00
deleteBlob tzwidevine.b01
deleteBlob tzwidevine.b02
deleteBlob tzwidevine.b03
deleteBlob tzwidevine.mdt
echo "Removed Google Widevine DRM (alternate 1) firmware"
deleteBlob tzwvcpybuf.b00
deleteBlob tzwvcpybuf.b01
deleteBlob tzwvcpybuf.b02
deleteBlob tzwvcpybuf.b03
deleteBlob tzwvcpybuf.mdt
echo "Removed Google Widevine DRM (alternate 2) firmware"
deleteBlob htc_drmprov.b00
deleteBlob htc_drmprov.b01
deleteBlob htc_drmprov.b02
deleteBlob htc_drmprov.b03
deleteBlob htc_drmprov.b04
deleteBlob htc_drmprov.b05
deleteBlob htc_drmprov.b06
deleteBlob htc_drmprov.mdt
echo "Removed HTC DRM firmware"
deleteBlob playread.b00
deleteBlob playread.b01
deleteBlob playread.b02
deleteBlob playread.b03
deleteBlob playread.mdt
echo "Removed Microsoft PlayReady DRM firmware"
deleteBlob hdcp1.b00
deleteBlob hdcp1.b01
deleteBlob hdcp1.b02
deleteBlob hdcp1.b03
deleteBlob hdcp1.b04
deleteBlob hdcp1.b05
deleteBlob hdcp1.b06
deleteBlob hdcp1.mdt
echo "Removed [Unknown 1] DRM firmware"
deleteBlob tzhdcp.b00
deleteBlob tzhdcp.b01
deleteBlob tzhdcp.b02
deleteBlob tzhdcp.b03
deleteBlob tzhdcp.mdt
echo "Removed [Unknown 2] DRM firmware"

View File

@ -0,0 +1,20 @@
ui_print("DivestOS Firmware Deblobber");
ui_print("Based off of LineageOS's AddonSU");
ifelse(is_mounted("/firmware"), unmount("/firmware"));
ifelse(!is_mounted("/firmware"), mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/modem", "/firmware", ""));
ifelse(!is_mounted("/firmware"), mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/modem", "/firmware", ""));
ifelse(!is_mounted("/firmware"), mount("ext4", "EMMC", "/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem", "/firmware", ""));
if is_mounted("/firmware") then
package_extract_file("firmware_deblobber.sh", "/tmp/firmware_deblobber.sh");
set_metadata("/tmp/firmware_deblobber.sh", "uid", 0, "gid", 0, "mode", 0755);
run_program("/tmp/firmware_deblobber.sh");
unmount("/firmware");
else
abort("Could not mount /firmware");
endif;
ui_print("Deblobbed!");
set_progress(1.000000);

View File

@ -0,0 +1,25 @@
# MicroG
PRODUCT_PACKAGES += \
GmsCore \
GsfProxy \
FakeStore
# UnifiedNLP Backends
PRODUCT_PACKAGES += \
DejaVu \
IchnaeaNlpBackend \
NominatimNlpBackend
# F-Droid
PRODUCT_PACKAGES += \
F-Droid \
FDroidPrivilegedExtension
# Browser
# XXX: THIS DOESN'T WORK
# This is a shim, it is intended that F-Droid will update on first run to the real version of Fennec DOS
# However it doesn't work for whatever reason
# and guess what? There is no documentation about updating system apps. Searching is useless and filled with spam.
# I'm sure Google Play Services does some special bullshit handling of system apps, but we're not allowed to know about that.
#PRODUCT_PACKAGES += \
# FennecDOS

View File

@ -21,7 +21,7 @@ startPatcher() {
export -f startPatcher;
patchAllKernels() {
startPatcher "";
startPatcher "kernel_fairphone_msm8974 kernel_google_marlin kernel_google_msm kernel_htc_flounder kernel_huawei_angler kernel_lge_bullhead kernel_lge_g3 kernel_lge_hammerhead kernel_lge_msm8974 kernel_nextbit_msm8992 kernel_oppo_msm8974 kernel_samsung_msm8974";
}
export -f patchAllKernels;
@ -57,6 +57,7 @@ export -f buildDevice;
buildAll() {
#Select devices are userdebug due to SELinux policy issues
#TODO: Add victara, griffin, athene, us997, us996, pme, t0lte, hlte
buildDevice d852
}
export -f buildAll;
@ -68,7 +69,7 @@ export -f buildAllN03;
patchWorkspace() {
source $scripts/Patch.sh;
source $scripts/Defaults.sh;
# source $scripts/Overclock.sh;
source $scripts/Overclock.sh;
source $scripts/Optimize.sh;
source $scripts/Rebrand.sh;
source $scripts/Theme.sh;

View File

@ -57,30 +57,23 @@ echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/a
#top dir
cp -r $patches"Fennec_DOS-Shim" $base"packages/apps/"; #Add a shim to install Fennec DOS without actually including the large APK
enterAndClear "bootable/recovery"
#patch -p1 < $patches"android_bootable_recovery/0001-Squash_Menus.patch"; #What's a back button?
enterAndClear "build"
#patch -p1 < $patches"android_build/0001-Automated_Build_Signing.patch" #Automated build signing. Disclaimer: From CopperheadOS 13.0
#patch -p1 < $patches"android_build/JustArchis_Optimizations-Rebased.patch" #JustArchi's Compiler Flags XXX: Breaks some devices, see buildAllN03()
enterAndClear "build/make"
patch -p1 < $patches"android_build/0001-Automated_Build_Signing.patch" #Automated build signing. Disclaimer: From CopperheadOS 13.0
patch -p1 < $patches"android_build/0002-JustArchis_Optimizations-Rebased.patch" #JustArchi's Compiler Flags XXX: Breaks some devices, see buildAllN03()
sed -i 's/messaging/Silence/' target/product/*.mk; #Replace AOSP Messaging app with Silence
enterAndClear "device/qcom/sepolicy"
#patch -p1 < $patches"android_device_qcom_sepolicy/0001-Camera_Fix.patch" #Fix camera on user builds
enterAndClear "external/sqlite"
#patch -p1 < $patches"android_external_sqlite/0001-Secure_Delete.patch" #Enable secure_delete by default. Disclaimer: From CopperheadOS 13.0
patch -p1 < $patches"android_device_qcom_sepolicy/0001-Camera_Fix.patch" #Fix camera on user builds
enterAndClear "frameworks/base"
#git revert 0326bb5e41219cf502727c3aa44ebf2daa19a5b3 #re-enable doze on devices without gms
#git revert https://review.lineageos.org/#/c/202875/ #re-enable doze on devices without gms
sed -i 's/DEFAULT_MAX_FILES = 1000;/DEFAULT_MAX_FILES = 0;/' services/core/java/com/android/server/DropBoxManagerService.java; #Disable DropBox
sed -i 's/com.android.messaging/org.smssecure.smssecure/' core/res/res/values/config.xml; #Change default SMS app to Silence
sed -i 's|db_default_journal_mode" translateble="false">PERSIST|db_default_journal_mode" translateble="false">TRUNCATE|' core/res/res/values/config.xml; #Mirror SQLite secure_delete
sed -i 's|config_permissionReviewRequired">false|config_permissionReviewRequired">true|' core/res/res/values/config.xml;
#patch -p1 < $patches"android_frameworks_base/0001-Reduced_Resolution.patch" #Allow reducing resolution to save power TODO: Add 800x480
#patch -p1 < $patches"android_frameworks_base/0003-Signature_Spoofing.patch" #Allow packages to spoof their signature (MicroG)
#patch -p1 < $patches"android_frameworks_base/0005-Harden_Sig_Spoofing.patch" #Restrict signature spoofing to system apps signed with the platform key
#patch -p1 < $patches"android_frameworks_base/0006-OpenNIC.patch" #Change fallback and tethering DNS servers to OpenNIC AnyCast
#patch -p1 < $patches"android_frameworks_base/0001-Reduced_Resolution.patch" #Allow reducing resolution to save power TODO: Rebase and add 800x480
patch -p1 < $patches"android_frameworks_base/0002-Signature_Spoofing.patch" #Allow packages to spoof their signature (MicroG)
patch -p1 < $patches"android_frameworks_base/0003-Harden_Sig_Spoofing.patch" #Restrict signature spoofing to system apps signed with the platform key
patch -p1 < $patches"android_frameworks_base/0004-OpenNIC.patch" #Change fallback and tethering DNS servers to OpenNIC AnyCast
rm -rf packages/PrintRecommendationService; #App that just creates popups to install proprietary print apps
rm core/res/res/values/config.xml.orig core/res/res/values/strings.xml.orig
@ -95,6 +88,10 @@ awk -i inplace '!/mPermissionReviewRequired = Build.PERMISSIONS_REVIEW_REQUIRED/
awk -i inplace '!/\|\| context.getResources\(\).getBoolean\(/' service/java/com/android/server/wifi/WifiServiceImpl.java;
awk -i inplace '!/com.android.internal.R.bool.config_permissionReviewRequired/' service/java/com/android/server/wifi/WifiServiceImpl.java;
enterAndClear "lineage-sdk"
awk -i inplace '!/WeatherManagerServiceBroker/' lineage/res/res/values/config.xml; #Disable Weather
cp $patches"android_lineage-sdk/profile_default.xml" lineage/res/res/xml/profile_default.xml; #Replace default profiles with *way* better ones
enterAndClear "packages/apps/DejaVu"
cp $patches"android_packages_apps_DejaVu/Android.mk" Android.mk #Add a build file
@ -128,67 +125,60 @@ sed -i 's/compileSdkVersion 23/compileSdkVersion 25/' build.gradle;
sed -i 's/buildToolsVersion "23.0.2"/buildToolsVersion "25.0.3"/' build.gradle;
enterAndClear "packages/apps/LineageParts"
rm -rf src/org/cyanogenmod/cmparts/cmstats/ res/xml/anonymous_stats.xml res/xml/preview_data.xml #Nuke part of CMStats
rm -rf src/org/lineageos/lineageparts/lineagestats/ res/xml/anonymous_stats.xml res/xml/preview_data.xml #Nuke part of CMStats
sed -i 's|config_showWeatherMenu">true|config_showWeatherMenu">false|' res/values/config.xml; #Disable Weather
#patch -p1 < $patches"android_packages_apps_CMParts/0001-Remove_Analytics.patch" #Remove the rest of CMStats
#patch -p1 < $patches"android_packages_apps_CMParts/0002-Reduced_Resolution.patch" #Allow reducing resolution to save power
patch -p1 < $patches"android_packages_apps_LineageParts/0001-Remove_Analytics.patch" #Remove the rest of CMStats
#patch -p1 < $patches"android_packages_apps_LineageParts/0002-Reduced_Resolution.patch" #Allow reducing resolution to save power #TODO: Rebase
enterAndClear "packages/apps/Settings"
git revert 7caa1b691a137ba1a49cb258d774679229ee2de5
sed -i 's/private int mPasswordMaxLength = 16;/private int mPasswordMaxLength = 48;/' src/com/android/settings/ChooseLockPassword.java; #Increase max password length
sed -i 's/private int mPasswordMaxLength = 16;/private int mPasswordMaxLength = 48;/' src/com/android/settings/password/ChooseLockPassword.java; #Increase max password length
sed -i 's/GSETTINGS_PROVIDER = "com.google.settings";/GSETTINGS_PROVIDER = "com.google.oQuae4av";/' src/com/android/settings/PrivacySettings.java; #MicroG doesn't support Backup, hide the options
#patch -p1 < $patches"android_packages_apps_Settings/0001-Privacy_Guard-More_Perms.patch" #Allow more control over various permissions via Privacy Guard
#patch -p1 < $patches"android_packages_apps_Settings/0001-Privacy_Guard-More_Perms.patch" #Allow more control over various permissions via Privacy Guard #TODO: Rebase
enterAndClear "packages/apps/SetupWizard"
#enterAndClear "packages/apps/SetupWizard"
#patch -p1 < $patches"android_packages_apps_SetupWizard/0001-Remove_Analytics.patch" #Remove the rest of CMStats
enterAndClear "packages/apps/Silence"
cp $patches"android_packages_apps_Silence/Android.mk" Android.mk #Add a build file
enterAndClear "packages/apps/Updater"
#patch -p1 < $patches"android_packages_apps_Updater/0001-Server.patch" #Switch to our server
patch -p1 < $patches"android_packages_apps_Updater/0001-Server.patch" #Switch to our server
enterAndClear "packages/apps/WallpaperPicker"
#rm res/drawable-nodpi/{*.png,*.jpg} res/values-nodpi/wallpapers.xml; #Remove old ones
#cp -r $dosWallpapers'Compressed/.' res/drawable-nodpi/; #Add ours
#cp -r $dosWallpapers"Thumbs/." res/drawable-nodpi/;
#cp $dosWallpapers"wallpapers.xml" res/values-nodpi/wallpapers.xml;
rm res/drawable-nodpi/{*.png,*.jpg} res/values-nodpi/wallpapers.xml; #Remove old ones
cp -r $dosWallpapers'Compressed/.' res/drawable-nodpi/; #Add ours
cp -r $dosWallpapers"Thumbs/." res/drawable-nodpi/;
cp $dosWallpapers"wallpapers.xml" res/values-nodpi/wallpapers.xml;
sed -i 's/req.touchEnabled = touchEnabled;/req.touchEnabled = true;/' src/com/android/wallpaperpicker/WallpaperCropActivity.java; #Allow scrolling
sed -i 's/mCropView.setTouchEnabled(req.touchEnabled);/mCropView.setTouchEnabled(true);/' src/com/android/wallpaperpicker/WallpaperCropActivity.java;
sed -i 's/WallpaperUtils.EXTRA_WALLPAPER_OFFSET, 0);/WallpaperUtils.EXTRA_WALLPAPER_OFFSET, 0.5f);/' src/com/android/wallpaperpicker/WallpaperPickerActivity.java; #Center aligned by default
enterAndClear "packages/inputmethods/LatinIME"
#patch -p1 < $patches"android_packages_inputmethods_LatinIME/0001-Voice.patch" #Remove voice input key
patch -p1 < $patches"android_packages_inputmethods_LatinIME/0001-Voice.patch" #Remove voice input key
enterAndClear "packages/services/Telephony"
#patch -p1 < $patches"android_packages_services_Telephony/0001-LTE_Only.patch" #LTE only preferred network mode choice. Disclaimer: From CopperheadOS before their LICENSE was added
patch -p1 < $patches"android_packages_services_Telephony/0001-LTE_Only.patch" #LTE only preferred network mode choice. Disclaimer: From CopperheadOS before their LICENSE was added
enterAndClear "system/core"
cat /tmp/ar/hosts >> rootdir/etc/hosts #Merge in our HOSTS file
#git revert 0217dddeb5c16903c13ff6c75213619b79ea622b d7aa1231b6a0631f506c0c23816f2cd81645b15f #Always update recovery
#patch -p1 < $patches"android_system_core/0001-Harden_Mounts.patch" #Harden mounts with nodev/noexec/nosuid. Disclaimer: From CopperheadOS 13.0
git revert a6a4ce8e9a6d63014047a447c6bb3ac1fa90b3f4 #Always update recovery
patch -p1 < $patches"android_system_core/0001-Harden_Mounts.patch" #Harden mounts with nodev/noexec/nosuid. Disclaimer: From CopperheadOS 13.0
enterAndClear "system/vold"
#patch -p1 < $patches"android_system_vold/0001-AES256.patch" #Add a variable for enabling AES-256 bit encryption
patch -p1 < $patches"android_system_vold/0001-AES256.patch" #Add a variable for enabling AES-256 bit encryption
enterAndClear "vendor/lineage"
#rm -rf overlay/common/vendor/cmsdk/packages #Remove analytics
awk -i inplace '!/50-cm.sh/' config/common.mk; #Make sure our hosts is always used
rm -rf overlay/common/vendor/lineage-sdk/packages #Remove analytics
awk -i inplace '!/50-lineage.sh/' config/common.mk; #Make sure our hosts is always used
patch -p1 < $patches"android_vendor_cm/0001-SCE.patch" #Include our extras such as MicroG and F-Droid
cp $patches"android_vendor_cm/sce.mk" config/sce.mk
cp $patches"android_vendor_cm/config.xml" overlay/common/vendor/cmsdk/cm/res/res/values/config.xml; #Per app performance profiles
cp -r $patches"android_vendor_cm/firmware_deblobber" .;
cp $patches"android_vendor_cm/firmware_deblobber.mk" build/tasks/firmware_deblobber.mk;
sed -i 's/CM_BUILDTYPE := UNOFFICIAL/CM_BUILDTYPE := dos/' config/common.mk; #Change buildtype
sed -i 's/LINEAGE_BUILDTYPE := UNOFFICIAL/LINEAGE_BUILDTYPE := dos/' config/common.mk; #Change buildtype
sed -i 's/messaging/Silence/' config/telephony.mk; #Replace AOSP Messaging app with Silence
sed -i 's/config_enableRecoveryUpdater">false/config_enableRecoveryUpdater">true/' overlay/common/packages/apps/Settings/res/values/config.xml; #Expose option to update recovery
#sed -i 's/mka bacon/mka bacon target-files-package dist/' build/envsetup.sh; #Create target-files for incrementals
enterAndClear "vendor/lineage-sdk"
awk -i inplace '!/WeatherManagerServiceBroker/' cm/res/res/values/config.xml; #Disable Weather
cp $patches"cm_platform_sdk/profile_default.xml" cm/res/res/xml/profile_default.xml; #Replace default profiles with *way* better ones
#patch -p1 < $patches"cm_platform_sdk/0001-Radio.patch" #Add a QS tile to control radio power
sed -i 's/shouldUseOptimizations(weight)/true/' cm/lib/main/java/org/cyanogenmod/platform/internal/PerformanceManagerService.java; #Per app performance profiles fix
#
#END OF ROM CHANGES
#
@ -196,10 +186,7 @@ sed -i 's/shouldUseOptimizations(weight)/true/' cm/lib/main/java/org/cyanogenmod
#
#START OF DEVICE CHANGES
#
enterAndClear "device/amazon/hdx-common"
echo "/dev/block/platform/msm_sdcc.1/by-name/misc /misc emmc defaults defaults" >> rootdir/etc/fstab.qcom; #Add the misc (mmcblk0p5) partition for recovery flags
enterAndClear "device/oneplus/bacon"
enterAndClear "device/oppo/msm8974-common"
sed -i "s/TZ.BF.2.0-2.0.0134/TZ.BF.2.0-2.0.0134|TZ.BF.2.0-2.0.0137/" board-info.txt; #Suport new TZ firmware https://review.lineageos.org/#/c/178999/
#enterAndClear "kernel/lge/g3"