5 Commits

Author SHA1 Message Date
LuK1337
f75de2aa2a Add wellbeing.xml 2025-02-03 20:58:13 +01:00
LuK1337
1c90e09131 md5 -> sha256 2025-02-03 20:58:13 +01:00
LuK1337
4d2aed7551 Regenerate makefiles 2024-10-04 14:10:01 +02:00
LuK1337
be925b67cc Move extra product priv-app permissions to privapp-permissions-mtg.xml 2024-10-04 13:52:01 +02:00
LuK1337
cecd93e3a5 Get rid of x86 support
Doesn't seem like x86 GMS exists anymore as it's not available as GSI
nor Android SDK image.
2024-10-04 10:35:21 +02:00
65 changed files with 746 additions and 1043 deletions

View File

@@ -1,89 +1,104 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/arm/setup-makefiles.sh
soong_namespace {
imports: ["vendor/gapps/common"],
}
android_app_import {
name: "GmsCore",
owner: "gapps",
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "Phonesky",
owner: "gapps",
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SetupWizard",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
overrides: ["Provision"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}
android_app_import {
name: "SpeechServicesByGoogle",
owner: "gapps",
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "talkback",
owner: "gapps",
apk: "proprietary/product/app/talkback/talkback.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
imports: [
"vendor/gapps/common",
],
}
cc_prebuilt_library_shared {
name: "libjni_latinimegoogle",
srcs: ["proprietary/product/lib/libjni_latinimegoogle.so"],
prefer: true,
product_specific: true,
name: "libjni_latinimegoogle",
owner: "gapps",
strip: {
none: true,
},
target: {
android_arm: {
srcs: ["proprietary/product/lib/libjni_latinimegoogle.so"],
shared_libs: ["libc", "libm", "libc++", "libdl", ],
},
},
compile_multilib: "32",
prefer: true,
product_specific: true,
}
android_app_import {
name: "GmsCore",
owner: "gapps",
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "Phonesky",
owner: "gapps",
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SpeechServicesByGoogle",
owner: "gapps",
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "talkback",
owner: "gapps",
apk: "proprietary/product/app/talkback/talkback.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SetupWizard",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
overrides: ["Provision"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}

9
arm/Android.mk Normal file
View File

@@ -0,0 +1,9 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm/setup-makefiles.sh
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_ARCH),arm)
endif

View File

@@ -1,2 +1,4 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm/setup-makefiles.sh

View File

@@ -1,20 +1,23 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm/setup-makefiles.sh
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
vendor/gapps/arm
PRODUCT_PACKAGES += \
libjni_latinimegoogle \
GmsCore \
Phonesky \
libjni_latinimegoogle
Phonesky
ifeq ($(TARGET_IS_GROUPER),)
PRODUCT_PACKAGES += \
SetupWizard \
SpeechServicesByGoogle \
talkback \
Velvet \
talkback
SetupWizard
endif
$(call inherit-product, vendor/gapps/common/common-vendor.mk)

View File

@@ -1,115 +1,134 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/arm64/setup-makefiles.sh
soong_namespace {
imports: ["vendor/gapps/common"],
}
android_app_import {
name: "GmsCore",
owner: "gapps",
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "MarkupGoogle_v2",
owner: "gapps",
apk: "proprietary/product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "Phonesky",
owner: "gapps",
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SetupWizard",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
overrides: ["Provision"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}
android_app_import {
name: "SpeechServicesByGoogle",
owner: "gapps",
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "VelvetTitan",
owner: "gapps",
apk: "proprietary/product/priv-app/VelvetTitan/VelvetTitan.apk",
overrides: ["Velvet"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "talkback",
owner: "gapps",
apk: "proprietary/product/app/talkback/talkback.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
imports: [
"vendor/gapps/common",
],
}
cc_prebuilt_library_shared {
name: "libjni_latinimegoogle",
srcs: ["proprietary/product/lib64/libjni_latinimegoogle.so"],
prefer: true,
product_specific: true,
name: "libjni_latinimegoogle",
owner: "gapps",
strip: {
none: true,
},
target: {
android_arm: {
srcs: ["proprietary/product/lib/libjni_latinimegoogle.so"],
shared_libs: ["libc", "libm", "libc++", "libdl", ],
},
android_arm64: {
srcs: ["proprietary/product/lib64/libjni_latinimegoogle.so"],
shared_libs: ["libc", "libm", "libc++", "libdl", ],
},
},
compile_multilib: "both",
prefer: true,
product_specific: true,
}
android_app_import {
name: "GmsCore",
owner: "gapps",
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "Phonesky",
owner: "gapps",
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "MarkupGoogle",
owner: "gapps",
apk: "proprietary/product/app/MarkupGoogle/MarkupGoogle.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "SpeechServicesByGoogle",
owner: "gapps",
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "talkback",
owner: "gapps",
apk: "proprietary/product/app/talkback/talkback.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "VelvetTitan",
owner: "gapps",
apk: "proprietary/product/priv-app/VelvetTitan/VelvetTitan.apk",
overrides: ["Velvet"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SetupWizard",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
overrides: ["Provision"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}

9
arm64/Android.mk Normal file
View File

@@ -0,0 +1,9 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm64/setup-makefiles.sh
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_ARCH),arm64)
endif

View File

@@ -1,2 +1,4 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm64/setup-makefiles.sh

View File

@@ -1,26 +1,28 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm64/setup-makefiles.sh
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
vendor/gapps/arm64
PRODUCT_PACKAGES += \
libjni_latinimegoogle \
GmsCore \
Phonesky \
libjni_latinimegoogle
Phonesky
ifeq ($(TARGET_IS_GROUPER),)
PRODUCT_PACKAGES += \
MarkupGoogle_v2 \
SetupWizard \
MarkupGoogle \
SpeechServicesByGoogle \
talkback \
Velvet \
talkback
SetupWizard
endif
ifneq ($(filter %tangorpro,$(TARGET_PRODUCT)),)
PRODUCT_PACKAGES += \
VelvetTitan
PRODUCT_PACKAGES += VelvetTitan
endif
$(call inherit-product, vendor/gapps/common/common-vendor.mk)

Binary file not shown.

View File

@@ -8,8 +8,8 @@
#
DATE=$(date -u +%Y%m%d_%H%M%S)
export GAPPS_TOP=$(realpath .)
ANDROIDV=16.0.0
SDKV=36
ANDROIDV=14.0.0
SDKV=34
GARCH=$1
CPUARCH=$GARCH
[ ! -z "$2" ] && CPUARCH=$2
@@ -93,10 +93,8 @@ function getsha256() {
if [ -x $(which sha256sum) ]; then
echo "sha256sum is installed, getting sha256..." >> $GLOG
echo "Getting sha256sum..."
pushd $OUT > /dev/null
GSHA256=$(sha256sum $BUILDZIP)
echo -e "$GSHA256" > $BUILDZIP.sha256sum
popd > /dev/null
GSHA256=$(sha256sum $OUT/$BUILDZIP)
echo -e "$GSHA256" > $OUT/$BUILDZIP.sha256sum
echo "sha256 exported at $OUT/$BUILDZIP.sha256sum"
return 0
else

View File

@@ -107,7 +107,7 @@ compute_apps_size() {
remove_big_optional_apps() {
ui_print "Low resource device detected, removing large extras"
rm -rf product/app/GoogleTTS
rm -rf product/app/MarkupGoogle_v2
rm -rf product/app/MarkupGoogle
rm -rf product/app/SpeechServicesByGoogle
rm -rf product/app/talkback
rm -rf product/priv-app/GoogleRestore

View File

@@ -1,11 +1,6 @@
FROM ubuntu:latest
MAINTAINER LuK1337 <priv.luk@gmail.com>
RUN <<EOF
apt update
apt -y install curl python3 python3-parse python3-requests unzip
curl --output aapt2.jar https://dl.google.com/android/maven2/com/android/tools/build/aapt2/8.12.0-alpha05-12782657/aapt2-8.12.0-alpha05-12782657-linux.jar
unzip -d /usr/bin aapt2.jar aapt2
rm aapt2.jar
EOF
RUN apt update
RUN apt -y install aapt python3 python3-pip
RUN pip install parse requests

View File

@@ -37,7 +37,7 @@ os.chdir(sys.path[0])
# Definitions for privileged permissions
ANDROID_MANIFEST_XML = \
'https://raw.githubusercontent.com/LineageOS/android_frameworks_base/lineage-23.0/core/res/AndroidManifest.xml'
'https://raw.githubusercontent.com/LineageOS/android_frameworks_base/lineage-21.0/core/res/AndroidManifest.xml'
ANDROID_XML_NS = '{http://schemas.android.com/apk/res/android}'
privileged_permissions = set()
privileged_permission_mask = {'privileged', 'signature'}
@@ -94,7 +94,7 @@ for partition in partitions:
# Definitions for parsing APKs
GLOB_APK_STR = '../*/proprietary/{}/priv-app/*/*.apk'
AAPT_CMD = ['aapt2', 'd', 'permissions']
AAPT_CMD = ['aapt', 'd', 'permissions']
# Extract requested privileged permissions from all priv-app APKs
for partition in partitions:
@@ -103,7 +103,8 @@ for partition in partitions:
# Loop over all the APKs in the partition we want
for apk in glob(GLOB_APK_STR.format(partition)):
# Run 'aapt d permissions' on APK
aapt_output = subprocess.check_output(AAPT_CMD + [apk]).decode(encoding='UTF-8')
aapt_output = subprocess.check_output(AAPT_CMD + [apk],
stderr=subprocess.STDOUT).decode(encoding='UTF-8')
lines = aapt_output.splitlines()
# Extract package name from the output
# Output looks like:

View File

@@ -1,237 +1,130 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/common/setup-makefiles.sh
soong_namespace {
imports: [
],
}
android_app_import {
name: "AndroidAutoStub",
owner: "gapps",
apk: "proprietary/product/priv-app/AndroidAutoStub/AndroidAutoStub.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
name: "GoogleCalendarSyncAdapter",
owner: "gapps",
apk: "proprietary/product/app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "GoogleCalendarSyncAdapter",
owner: "gapps",
apk: "proprietary/product/app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
name: "GoogleContactsSyncAdapter",
owner: "gapps",
apk: "proprietary/product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "GoogleContactsSyncAdapter",
owner: "gapps",
apk: "proprietary/product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
name: "PrebuiltExchange3Google",
owner: "gapps",
apk: "proprietary/product/app/PrebuiltExchange3Google/PrebuiltExchange3Google.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "GoogleFeedback",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/GoogleFeedback/GoogleFeedback.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
name: "AndroidAutoStub",
owner: "gapps",
apk: "proprietary/product/priv-app/AndroidAutoStub/AndroidAutoStub.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "GooglePartnerSetup",
owner: "gapps",
apk: "proprietary/product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
name: "GooglePartnerSetup",
owner: "gapps",
apk: "proprietary/product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "GoogleRestore",
owner: "gapps",
apk: "proprietary/product/priv-app/GoogleRestore/GoogleRestore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
name: "GoogleFeedback",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/GoogleFeedback/GoogleFeedback.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}
android_app_import {
name: "GoogleServicesFramework",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}
android_app_import {
name: "PrebuiltExchange3Google",
owner: "gapps",
apk: "proprietary/product/app/PrebuiltExchange3Google/PrebuiltExchange3Google.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
}
android_app_import {
name: "Wellbeing",
owner: "gapps",
apk: "proprietary/product/priv-app/Wellbeing/Wellbeing.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
name: "GoogleServicesFramework",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}
dex_import {
name: "com.google.android.dialer.support",
owner: "gapps",
jars: ["proprietary/product/framework/com.google.android.dialer.support.jar"],
product_specific: true,
name: "com.google.android.dialer.support",
owner: "gapps",
jars: ["proprietary/product/framework/com.google.android.dialer.support.jar"],
product_specific: true,
}
prebuilt_etc {
name: "com.google.android.dialer.support.xml",
src: "proprietary/product/etc/permissions/com.google.android.dialer.support.xml",
relative_install_path: "permissions",
filename_from_src: true,
product_specific: true,
android_app_import {
name: "GoogleRestore",
owner: "gapps",
apk: "proprietary/product/priv-app/GoogleRestore/GoogleRestore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
prebuilt_etc {
name: "d2d_cable_migration_feature.xml",
src: "proprietary/product/etc/sysconfig/d2d_cable_migration_feature.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
android_app_import {
name: "Wellbeing",
owner: "gapps",
apk: "proprietary/product/priv-app/Wellbeing/Wellbeing.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
prebuilt_etc {
name: "default-permissions-google.xml",
src: "proprietary/product/etc/default-permissions/default-permissions-google.xml",
relative_install_path: "default-permissions",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "default-permissions-mtg.xml",
src: "proprietary/product/etc/default-permissions/default-permissions-mtg.xml",
relative_install_path: "default-permissions",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "gapps.rc",
src: "proprietary/product/etc/init/gapps.rc",
relative_install_path: "init",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "gms_fsverity_cert.der",
src: "proprietary/product/etc/security/fsverity/gms_fsverity_cert.der",
relative_install_path: "security/fsverity",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "google-hiddenapi-package-allowlist.xml",
src: "proprietary/product/etc/sysconfig/google-hiddenapi-package-allowlist.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "google.xml",
src: "proprietary/product/etc/sysconfig/google.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "google_build.xml",
src: "proprietary/product/etc/sysconfig/google_build.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "privapp-permissions-google-product.xml",
src: "proprietary/product/etc/permissions/privapp-permissions-google-product.xml",
relative_install_path: "permissions",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "privapp-permissions-google-system-ext.xml",
src: "proprietary/system_ext/etc/permissions/privapp-permissions-google-system-ext.xml",
relative_install_path: "permissions",
filename_from_src: true,
system_ext_specific: true,
}
prebuilt_etc {
name: "privapp-permissions-mtg.xml",
src: "proprietary/product/etc/permissions/privapp-permissions-mtg.xml",
relative_install_path: "permissions",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "sysconfig_contextual_search.xml",
src: "proprietary/product/etc/sysconfig/sysconfig_contextual_search.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
}
prebuilt_etc {
name: "wellbeing.xml",
src: "proprietary/product/etc/sysconfig/wellbeing.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
}

9
common/Android.mk Normal file
View File

@@ -0,0 +1,9 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/common/setup-makefiles.sh
LOCAL_PATH := $(call my-dir)
ifneq ($(filter arm arm64 x86_64,$(TARGET_ARCH)),)
endif

View File

@@ -1,2 +1,4 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/common/setup-makefiles.sh

View File

@@ -1,44 +1,42 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/common/setup-makefiles.sh
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
vendor/gapps/common
PRODUCT_COPY_FILES += \
vendor/gapps/common/proprietary/product/etc/default-permissions/default-permissions-google.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/default-permissions/default-permissions-google.xml \
vendor/gapps/common/proprietary/product/etc/default-permissions/default-permissions-mtg.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/default-permissions/default-permissions-mtg.xml \
vendor/gapps/common/proprietary/product/etc/init/gapps.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/gapps.rc \
vendor/gapps/common/proprietary/product/etc/permissions/com.google.android.dialer.support.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/com.google.android.dialer.support.xml \
vendor/gapps/common/proprietary/product/etc/permissions/privapp-permissions-google-product.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/privapp-permissions-google-product.xml \
vendor/gapps/common/proprietary/product/etc/permissions/privapp-permissions-mtg.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/privapp-permissions-mtg.xml \
vendor/gapps/common/proprietary/product/etc/security/fsverity/gms_fsverity_cert.der:$(TARGET_COPY_OUT_PRODUCT)/etc/security/fsverity/gms_fsverity_cert.der \
vendor/gapps/common/proprietary/product/etc/sysconfig/d2d_cable_migration_feature.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/d2d_cable_migration_feature.xml \
vendor/gapps/common/proprietary/product/etc/sysconfig/google.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/google.xml \
vendor/gapps/common/proprietary/product/etc/sysconfig/google_build.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/google_build.xml \
vendor/gapps/common/proprietary/product/etc/sysconfig/google-hiddenapi-package-allowlist.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/google-hiddenapi-package-allowlist.xml \
vendor/gapps/common/proprietary/system_ext/etc/permissions/privapp-permissions-google-system-ext.xml:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/permissions/privapp-permissions-google-system-ext.xml
PRODUCT_PACKAGES += \
AndroidAutoStub \
GoogleCalendarSyncAdapter \
GoogleContactsSyncAdapter \
GoogleFeedback \
GooglePartnerSetup \
GoogleServicesFramework \
PrebuiltExchange3Google \
com.google.android.dialer.support \
com.google.android.dialer.support.xml \
d2d_cable_migration_feature.xml \
default-permissions-google.xml \
default-permissions-mtg.xml \
gapps.rc \
gms_fsverity_cert.der \
google-hiddenapi-package-allowlist.xml \
google.xml \
google_build.xml \
privapp-permissions-google-product.xml \
privapp-permissions-google-system-ext.xml \
privapp-permissions-mtg.xml \
sysconfig_contextual_search.xml
AndroidAutoStub \
GooglePartnerSetup \
GoogleFeedback \
GoogleServicesFramework \
com.google.android.dialer.support
ifeq ($(TARGET_IS_GROUPER),)
PRODUCT_COPY_FILES += \
vendor/gapps/common/proprietary/product/etc/sysconfig/wellbeing.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/wellbeing.xml
PRODUCT_PACKAGES += \
GoogleRestore \
Wellbeing \
wellbeing.xml
Wellbeing
endif
PRODUCT_SOONG_NAMESPACES += \
vendor/gapps/overlay
PRODUCT_PACKAGES += \
GmsOverlay \
GmsSettingsOverlay \
GmsSettingsProviderOverlay \
GmsSetupWizardOverlay
PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
PRODUCT_PACKAGES += GmsOverlay GmsSettingsOverlay GmsSettingsProviderOverlay GmsSetupWizardOverlay

View File

@@ -41,30 +41,4 @@
<permission name="android.permission.BLUETOOTH_ADVERTISE" fixed="false"/>
</exception>
<exception
package="com.google.android.deskclock"
sha256-cert-digest="F0:FD:6C:5B:41:0F:25:CB:25:C3:B5:33:46:C8:97:2F:AE:30:F8:EE:74:11:DF:91:04:80:AD:6B:2D:60:DB:83">
<!-- Notifications -->
<permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
</exception>
<exception
package="com.google.android.apps.tachyon"
sha256-cert-digest="7C:AA:B6:E6:BA:70:0E:0D:DC:F7:5C:CA:52:B8:C3:B1:9A:3C:7D:23:30:8F:7E:B1:77:A6:4E:B2:47:61:97:BD">
<!-- Notifications -->
<permission name="android.permission.READ_CONTACTS" fixed="false"/>
<permission name="android.permission.READ_PHONE_STATE" fixed="false"/>
<permission name="android.permission.RECORD_AUDIO" fixed="false"/>
<permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
<permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
<permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
</exception>
<exception
package="com.google.android.apps.photos"
sha256-cert-digest="3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A">
<permission name="android.permission.ACCESS_MEDIA_LOCATION" fixed="false"/>
<permission name="android.permission.READ_MEDIA_IMAGES" fixed="false"/>
<permission name="android.permission.READ_MEDIA_VIDEO" fixed="false"/>
</exception>
</exceptions>

View File

@@ -4,7 +4,6 @@
package="com.google.android.projection.gearhead"
sha256-cert-digest="FD:B0:0C:43:DB:DE:8B:51:CB:31:2A:A8:1D:3B:5F:A1:77:13:AD:B9:4B:28:F5:98:D7:7F:8E:B8:9D:AC:EE:DF">
<!-- Gearhead legacy -->
<permission name="android.permission.MODIFY_PHONE_STATE" fixed="false" />
<permission name="android.permission.READ_PHONE_STATE" fixed="false" />
<permission name="android.permission.CALL_PHONE" fixed="false" />
<permission name="android.permission.READ_CALL_LOG" fixed="false" />

View File

@@ -1,3 +1,3 @@
on init
setprop ro.com.google.gmsversion 16_202505
setprop ro.com.google.gmsversion 14_202310
setprop ro.opa.eligible_device true

View File

@@ -12,11 +12,8 @@ It allows additional grants on top of privapp-permissions-platform.xml
<privapp-permissions package="com.google.android.apps.messaging">
<permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
<permission name="android.permission.MODIFY_PHONE_STATE"/>
<permission name="android.permission.QUERY_USERS"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.READ_PRECISE_PHONE_STATE"/>
<permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
<permission name="android.permission.SATELLITE_COMMUNICATION"/>
<permission name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
</privapp-permissions>
@@ -67,20 +64,17 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.MONITOR_DEFAULT_SMS_PACKAGE"/>
<permission name="android.permission.PACKAGE_USAGE_STATS"/>
<permission name="android.permission.READ_OEM_UNLOCK_STATE"/>
<permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
<permission name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE"/>
<permission name="android.permission.SET_SYSTEM_AUDIO_CAPTION"/>
<permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
<permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
<permission name="android.permission.SYSTEM_CAMERA"/>
<permission name="android.permission.UPDATE_DEVICE_STATS"/>
<permission name="android.permission.USE_ON_DEVICE_INTELLIGENCE"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
</privapp-permissions>
<privapp-permissions package="com.google.android.as.oss">
<permission name="android.permission.READ_RESTRICTED_STATS"/>
<permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
</privapp-permissions>
<privapp-permissions package="com.android.vending">
@@ -103,12 +97,10 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.MANAGE_CLOUDSEARCH"/>
<permission name="android.permission.MANAGE_ROLLBACKS"/>
<permission name="android.permission.MANAGE_USERS"/>
<permission name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD"/>
<permission name="android.permission.PACKAGE_USAGE_STATS"/>
<permission name="android.permission.PACKAGE_VERIFICATION_AGENT"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.READ_RUNTIME_PROFILES"/>
<permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
<permission name="android.permission.REAL_GET_TASKS"/>
<permission name="android.permission.REBOOT"/>
<permission name="android.permission.SEND_DEVICE_CUSTOMIZATION_READY"/>
@@ -121,6 +113,7 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.UPDATE_DEVICE_STATS"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
<permission name="com.android.permission.USE_INSTALLER_V2"/>
<permission name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD"/>
<permission name="com.google.android.settings.setup.dock.RUN_DOCK_SETUP"/>
</privapp-permissions>
@@ -137,13 +130,7 @@ It allows additional grants on top of privapp-permissions-platform.xml
<privapp-permissions package="com.google.android.apps.carrier.carrierwifi">
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.MODIFY_PHONE_STATE"/>
<permission name="android.permission.NETWORK_CARRIER_PROVISIONING"/>
<permission name="android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE"/>
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.LOCATION_HARDWARE"/>
<permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
<permission name="android.permission.MANAGE_WIFI_NETWORK_SELECTION"/>
</privapp-permissions>
<privapp-permissions package="com.google.android.apps.gcs">
@@ -158,7 +145,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
</privapp-permissions>
<privapp-permissions package="com.google.android.apps.searchlite">
<permission name="android.permission.CALL_PRIVILEGED"/>
<permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
</privapp-permissions>
@@ -167,7 +153,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.MANAGE_USERS"/>
<permission name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
</privapp-permissions>
<privapp-permissions package="com.google.android.apps.turbo">
@@ -195,9 +180,7 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.MODIFY_QUIET_MODE"/>
<permission name="android.permission.OBSERVE_APP_USAGE"/>
<permission name="android.permission.PACKAGE_USAGE_STATS"/>
<permission name="android.permission.QUERY_USERS"/>
<permission name="android.permission.READ_DREAM_STATE"/>
<permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
<permission name="android.permission.READ_WALLPAPER_INTERNAL"/>
<permission name="android.permission.REAL_GET_TASKS"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
@@ -214,11 +197,7 @@ It allows additional grants on top of privapp-permissions-platform.xml
<privapp-permissions package="com.google.android.configupdater">
<permission name="android.permission.UPDATE_CONFIG"/>
</privapp-permissions>
<privapp-permissions package="com.google.android.deskclock">
<permission name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
<permission name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
</privapp-permissions>
<privapp-permissions package="com.google.android.gms">
<permission name="android.permission.ACCESS_BROADCAST_RESPONSE_STATS"/>
<permission name="android.permission.ACCESS_CACHE_FILESYSTEM"/>
@@ -231,7 +210,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.BACKUP"/>
<permission name="android.permission.BLUETOOTH_PRIVILEGED"/>
<permission name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS"/>
<permission name="android.permission.CALL_AUDIO_INTERCEPTION"/>
<permission name="android.permission.CALL_PRIVILEGED"/>
<permission name="android.permission.CAPTURE_AUDIO_HOTWORD"/>
<permission name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
@@ -239,7 +217,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST"/>
<permission name="android.permission.CHECK_REMOTE_LOCKSCREEN"/>
<permission name="android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS"/>
<permission name="android.permission.CONFIGURE_FACTORY_RESET_PROTECTION"/>
<permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
<permission name="android.permission.CONTROL_DISPLAY_SATURATION"/>
<permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
@@ -247,8 +224,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.DISPATCH_PROVISIONING_MESSAGE"/>
<permission name="android.permission.DOMAIN_VERIFICATION_AGENT"/>
<permission name="android.permission.DUMP"/>
<permission name="android.permission.EMERGENCY_INSTALL_PACKAGES"/>
<permission name="android.permission.FORCE_STOP_PACKAGES"/>
<permission name="android.permission.GET_APP_OPS_STATS"/>
<permission name="android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE"/>
<permission name="android.permission.INTENT_FILTER_VERIFICATION_AGENT"/>
@@ -258,11 +233,9 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.LOCATION_BYPASS"/>
<permission name="android.permission.LOCATION_HARDWARE"/>
<permission name="android.permission.LOCK_DEVICE"/>
<permission name="android.permission.MANAGE_ADVANCED_PROTECTION_MODE"/>
<permission name="android.permission.MANAGE_FACTORY_RESET_PROTECTION"/>
<permission name="android.permission.MANAGE_GAME_ACTIVITY"/>
<permission name="android.permission.MANAGE_GAME_MODE"/>
<permission name="android.permission.MANAGE_INTRUSION_DETECTION_STATE"/>
<permission name="android.permission.MANAGE_ROLLBACKS"/>
<permission name="android.permission.MANAGE_SOUND_TRIGGER"/>
<permission name="android.permission.MANAGE_SUBSCRIPTION_PLANS"/>
@@ -283,19 +256,15 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS"/>
<permission name="android.permission.OVERRIDE_WIFI_CONFIG"/>
<permission name="android.permission.PACKAGE_USAGE_STATS"/>
<permission name="android.permission.PREPARE_FACTORY_RESET"/>
<permission name="android.permission.PROVIDE_DEFAULT_ENABLED_CREDENTIAL_SERVICE"/>
<permission name="android.permission.PROVIDE_REMOTE_CREDENTIALS"/>
<permission name="android.permission.PROVIDE_RESOLVER_RANKER_SERVICE"/>
<permission name="android.permission.PROVIDE_TRUST_AGENT"/>
<permission name="android.permission.READ_DREAM_STATE"/>
<permission name="android.permission.READ_DROPBOX_DATA"/>
<permission name="android.permission.READ_INTRUSION_DETECTION_STATE"/>
<permission name="android.permission.READ_LOGS"/>
<permission name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
<permission name="android.permission.READ_OEM_UNLOCK_STATE"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
<permission name="android.permission.READ_WIFI_CREDENTIAL"/>
<permission name="android.permission.REAL_GET_TASKS"/>
<permission name="android.permission.REBOOT"/>
@@ -307,24 +276,18 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.REQUEST_COMPANION_PROFILE_COMPUTER"/>
<permission name="android.permission.REQUEST_COMPANION_SELF_MANAGED"/>
<permission name="android.permission.RESET_PASSWORD"/>
<permission name="android.permission.SATELLITE_COMMUNICATION"/>
<permission name="android.permission.SCHEDULE_PRIORITIZED_ALARM"/>
<permission name="android.permission.SCORE_NETWORKS"/>
<permission name="android.permission.SEND_SAFETY_CENTER_UPDATE"/>
<permission name="android.permission.SEND_SMS_NO_CONFIRMATION"/>
<permission name="android.permission.SETUP_FSVERITY"/>
<permission name="android.permission.SET_BIOMETRIC_DIALOG_ADVANCED"/>
<permission name="android.permission.SET_LOW_POWER_STANDBY_PORTS"/>
<permission name="android.permission.SET_TIME"/>
<permission name="android.permission.SET_TIME_ZONE"/>
<permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
<permission name="android.permission.START_TASKS_FROM_RECENTS"/>
<permission name="android.permission.STATUS_BAR"/>
<permission name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE"/>
<permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
<permission name="android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON"/>
<permission name="android.permission.TETHER_PRIVILEGED"/>
<permission name="android.permission.THREAD_NETWORK_PRIVILEGED"/>
<permission name="android.permission.TURN_SCREEN_ON"/>
<permission name="android.permission.UPDATE_APP_OPS_STATS"/>
<permission name="android.permission.UPDATE_DEVICE_STATS"/>
@@ -334,9 +297,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS"/>
<permission name="android.permission.WRITE_GSERVICES"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
<permission name="android.permission.WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS"/>
<permission name="android.permission.THREAD_NETWORK_PRIVILEGED"/>
<permission name="android.permission.READ_DROPBOX_DATA"/>
</privapp-permissions>
<privapp-permissions package="com.google.android.gms.supervision">
@@ -376,7 +336,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.MANAGE_USB"/>
<permission name="android.permission.MODIFY_AUDIO_ROUTING"/>
<permission name="android.permission.MODIFY_DAY_NIGHT_MODE"/>
<permission name="android.permission.MODIFY_PHONE_STATE"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.REQUEST_COMPANION_SELF_MANAGED"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
@@ -388,11 +347,8 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.BIND_APPWIDGET"/>
<permission name="android.permission.CALL_PRIVILEGED"/>
<permission name="android.permission.CAPTURE_AUDIO_HOTWORD"/>
<permission name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
<permission name="android.permission.CAPTURE_MEDIA_OUTPUT"/>
<permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
<permission name="android.permission.ENTER_CAR_MODE_PRIORITIZED"/>
<permission name="android.permission.EXECUTE_APP_FUNCTIONS"/>
<permission name="android.permission.GLOBAL_SEARCH"/>
<permission name="android.permission.INTERACT_ACROSS_PROFILES"/>
<deny-permission name="android.permission.INTERACT_ACROSS_USERS"/>
@@ -400,20 +356,16 @@ It allows additional grants on top of privapp-permissions-platform.xml
<permission name="android.permission.MANAGE_USB"/>
<permission name="android.permission.MANAGE_VOICE_KEYPHRASES"/>
<permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
<permission name="android.permission.MODIFY_AUDIO_ROUTING"/>
<permission name="android.permission.PACKAGE_USAGE_STATS"/>
<permission name="android.permission.REAL_GET_TASKS"/>
<permission name="android.permission.RECEIVE_SANDBOX_TRIGGER_AUDIO"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
<permission name="android.permission.SET_MEDIA_KEY_LISTENER"/>
<permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER"/>
<permission name="android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER"/>
<permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
<permission name="android.permission.STOP_APP_SWITCHES"/>
<permission name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE"/>
<permission name="android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON"/>
<permission name="android.permission.WRITE_APN_SETTINGS"/>
<permission name="android.permission.RECEIVE_SANDBOX_TRIGGER_AUDIO"/>
</privapp-permissions>
<privapp-permissions package="com.android.hotwordenrollment.okgoogle">

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
<feature name="com.google.android.feature.CONTEXTUAL_SEARCH" />
</config>

View File

@@ -8,7 +8,6 @@ It allows additional grants on top of privapp-permissions-platform.xml
<privapp-permissions package="com.android.emergency">
<permission name="android.permission.CALL_PRIVILEGED"/>
<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.SCHEDULE_EXACT_ALARM"/>
<permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
</privapp-permissions>

52
extract-files.sh Executable file
View File

@@ -0,0 +1,52 @@
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2021 The LineageOS 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.
#
set -e
export GAPPS_COMMON=common
export VENDOR=gapps
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
ANDROID_ROOT="$MY_DIR/../.."
export TARGET_ENABLE_CHECKELF=true
HELPER="$ANDROID_ROOT/tools/extract-utils/extract_utils.sh"
if [ ! -f "$HELPER" ]; then
echo "Unable to find helper script at $HELPER"
exit 1
fi
. "$HELPER"
SRC=$1
if [ -z "$SRC" ]; then
echo "Path to system dump not specified! Specify one with --path"
exit 1
fi
# Initialize the helper for common gapps
setup_vendor "$GAPPS_COMMON" "$VENDOR" "$ANDROID_ROOT"
extract "$MY_DIR"/proprietary-files-common.txt "$SRC"
extract "$MY_DIR"/proprietary-files-common-nongrouper.txt "$SRC"
"$MY_DIR"/setup-makefiles.sh

View File

@@ -8,8 +8,8 @@ packageInfo:
renameManifestPackage: null
resourcesAreCompressed: false
sdkInfo:
minSdkVersion: '36'
targetSdkVersion: '36'
minSdkVersion: '34'
targetSdkVersion: '34'
sharedLibrary: false
sparseResources: true
unknownFiles: {}

View File

@@ -1,5 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Apps that are authorized to access shared accounts -->
<string name="config_appsAuthorizedForSharedAccounts" translatable="false">;com.android.vending;com.android.settings;</string>
<!-- Default service to enable with accessibility shortcut [DO NOT TRANSLATE] -->
<string name="config_defaultAccessibilityService" translatable="false">com.google.android.marvin.talkback/.TalkBackService</string>
<!-- The name of the package that will hold the speech recognizer role by default. -->
<string name="config_systemSpeechRecognizer" translatable="false">com.google.android.tts</string>
<!-- The name of the package that will hold the wellbeing role. -->
<string name="config_systemWellbeing" translatable="false">com.google.android.apps.wellbeing</string>
<!-- The package name for the default wellbeing application. [DO NOT TRANSLATE] -->
<string name="config_defaultWellbeingPackage" translatable="false">com.google.android.apps.wellbeing</string>
<!-- An array of packages that can make sound on the ringer stream in priority-only DND mode -->
<string-array name="config_priorityOnlyDndExemptPackages" translatable="false">
<item>com.android.dialer</item>
<item>com.google.android.dialer</item>
<item>com.android.server.telecom</item>
<item>android</item>
<item>com.android.systemui</item>
</string-array>
<!-- Colon separated list of package names that should be granted DND access -->
<string name="config_defaultDndAccessPackages" translatable="false">com.google.android.gms:com.google.android.apps.wellbeing</string>
<!-- Names of packages that should not be suspended when personal use is blocked by policy. -->
<string-array name="config_packagesExemptFromSuspension" translatable="false">
<item>com.google.android.apps.wellbeing</item>
</string-array>
<!-- List containing the allowed install sources for accessibility service. -->
<string-array name="config_accessibility_allowed_install_source" translatable="false">
<item>com.android.vending</item>
</string-array>
<!-- The names of the packages that will hold the system automotive projection role. -->
<string name="config_systemAutomotiveProjection" translatable="false">com.google.android.projection.gearhead</string>
<!-- The component name for the default profile supervisor, which can be set as a profile owner
even after user setup is complete. The defined component should be used for supervision purposes
only. The component must be part of a system app. -->
<string name="config_defaultSupervisionProfileOwnerComponent" translatable="false">com.google.android.gms/.kids.account.receiver.ProfileOwnerReceiver</string>
<string name="config_systemSupervision" translatable="false">com.google.android.gms.supervision</string>
<!-- The set of system packages on device that are queryable by any app regardless of the
contents of its manifest. -->
<string-array name="config_forceQueryablePackages" translatable="false">
@@ -13,84 +60,19 @@
<!-- The name of the package that will hold the assistant role by default. -->
<string name="config_defaultAssistant" translatable="false">com.google.android.googlequicksearchbox</string>
<!-- The names of the packages that will hold the automotive projection role. -->
<string name="config_systemAutomotiveProjection" translatable="false">com.google.android.projection.gearhead</string>
<!-- The name of the package that will hold the speech recognizer role by default. -->
<string name="config_systemSpeechRecognizer" translatable="false">com.google.android.tts</string>
<!-- The name of the package that will hold the wellbeing role. -->
<string name="config_systemWellbeing" translatable="false">com.google.android.apps.wellbeing</string>
<!-- Component name that accepts settings intents for saved devices.
Used by FastPairSettingsFragment. -->
<string translatable="false" name="config_defaultNearbyFastPairSettingsDevicesComponent">com.google.android.gms/com.google.android.gms.nearby.discovery.devices.SavedDevicesSettingsActivity</string>
<!-- The name of the package that will hold the game service role. -->
<string name="config_systemGameService" translatable="false">com.google.android.gms</string>
<!-- The name of the package that will hold the device management role -->
<!-- The name of the package that will hold the device management role and its certificate's SHA256. -->
<string name="config_devicePolicyManagement" translatable="false">com.google.android.apps.work.clouddpc:23962F4B43B9857638EA66F4D419518EAE282491ACDA4B94707BD59003C45E58</string>
<!-- The name of the package that will handle updating the device management role. -->
<string name="config_devicePolicyManagementUpdater" translatable="false">com.google.android.gms</string>
<!-- Apps that are authorized to access shared accounts, overridden by product overlays -->
<string name="config_appsAuthorizedForSharedAccounts" translatable="false">;com.android.vending;com.android.settings;</string>
<!-- Flag indicating which package name can access the persistent data partition -->
<string name="config_persistentDataPackageName" translatable="false">com.google.android.gms</string>
<!-- Colon separated list of package names that should be granted DND access -->
<string name="config_defaultDndAccessPackages" translatable="false">com.google.android.gms:com.google.android.apps.wellbeing</string>
<!-- An array of packages that can make sound on the ringer stream in priority-only DND
mode -->
<string-array name="config_priorityOnlyDndExemptPackages" translatable="false">
<item>com.android.dialer</item>
<item>com.google.android.dialer</item>
<item>com.android.server.telecom</item>
<item>android</item>
<item>com.android.systemui</item>
</string-array>
<!-- The component name, flattened to a string, for the default accessibility service to be
enabled by the accessibility shortcut. This service must be trusted, as it can be activated
without explicit consent of the user. If no accessibility service with the specified name
exists on the device, the accessibility shortcut will be disabled by default. -->
<string name="config_defaultAccessibilityService" translatable="false">com.google.android.marvin.talkback/.TalkBackService</string>
<!-- The package name for the default wellbeing app.
This package must be trusted, as it has the permissions to control other applications
on the device.
Example: "com.android.wellbeing"
Note: This config is deprecated, please use config_systemWellbeing instead.
-->
<string name="config_defaultWellbeingPackage" translatable="false">com.google.android.apps.wellbeing</string>
<!-- The component name for the default profile supervisor, which can be set as a profile owner
even after user setup is complete. The defined component should be used for supervision purposes
only. The component must be part of a system app. -->
<string name="config_defaultSupervisionProfileOwnerComponent" translatable="false">com.google.android.gms/.kids.account.receiver.ProfileOwnerReceiver</string>
<!-- The package name of the default supervision package. -->
<string name="config_systemSupervision" translatable="false">com.google.android.gms.supervision</string>
<!-- Names of packages that should not be suspended when personal use is blocked by policy. -->
<string-array name="config_packagesExemptFromSuspension" translatable="false">
<item>com.google.android.apps.wellbeing</item>
</string-array>
<!-- Component name that accepts settings intents for saved devices.
Used by FastPairSettingsFragment. -->
<string name="config_defaultNearbyFastPairSettingsDevicesComponent" translatable="false">com.google.android.gms/com.google.android.gms.nearby.discovery.devices.SavedDevicesSettingsActivity</string>
<!-- Name of the package responsible to handle Contextual Search. -->
<string name="config_defaultContextualSearchPackageName" translatable="false">com.google.android.googlequicksearchbox</string>
<!-- The key containing the entrypoint for Contextual Search. -->
<string name="config_defaultContextualSearchKey" translatable="false">omni.entry_point</string>
<!-- The key containing the branching boolean for Contextual Search. -->
<string name="config_defaultContextualSearchEnabled" translatable="false">omni.enable_cs_helper</string>
<!-- The key containing the branching boolean for legacy Search. -->
<string name="config_defaultContextualSearchLegacyEnabled" translatable="false">omni.enable_vis</string>
</resources>

View File

@@ -8,8 +8,8 @@ packageInfo:
renameManifestPackage: null
resourcesAreCompressed: false
sdkInfo:
minSdkVersion: '36'
targetSdkVersion: '36'
minSdkVersion: '34'
targetSdkVersion: '34'
sharedLibrary: false
sparseResources: true
unknownFiles: {}

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- BT Slice intent action. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice intent action. -->
<string name="config_bt_slice_intent_action" translatable="false">com.google.android.gms.nearby.discovery.ACTION_LOG_SLICE_AND_LAUNCH_INTENT</string>
<!-- BT Slice pending intent action. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice pending intent action. -->
<string name="config_bt_slice_pending_intent_action" translatable="false">com.google.android.gms.nearby.discovery.ACTION_LOG_SLICE_AND_SEND_PENDING_INTENT</string>
<!-- BT Slice EXTRA_INTENT. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice EXTRA_INTENT. -->
<string name="config_bt_slice_extra_intent" translatable="false">com.google.android.gms.nearby.discovery.EXTRA_INTENT</string>
<!-- BT Slice EXTRA_PENDING_INTENT. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice EXTRA_PENDING_INTENT. -->
<string name="config_bt_slice_extra_pending_intent" translatable="false">com.google.android.gms.nearby.discovery.EXTRA_PENDING_INTENT</string>
<!-- BT Slice intent action. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice intent action. -->
<string name="config_bt_slice_intent_action" translatable="false">com.google.android.gms.nearby.discovery.ACTION_LOG_SLICE_AND_LAUNCH_INTENT</string>
<!-- BT Slice pending intent action. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice pending intent action. -->
<string name="config_bt_slice_pending_intent_action" translatable="false">com.google.android.gms.nearby.discovery.ACTION_LOG_SLICE_AND_SEND_PENDING_INTENT</string>
</resources>

View File

@@ -8,8 +8,8 @@ packageInfo:
renameManifestPackage: null
resourcesAreCompressed: false
sdkInfo:
minSdkVersion: '36'
targetSdkVersion: '36'
minSdkVersion: '34'
targetSdkVersion: '34'
sharedLibrary: false
sparseResources: true
unknownFiles: {}

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="def_backup_transport" translatable="false">com.google.android.gms/.backup.BackupTransportService</string>
<resources>
<string name="def_backup_transport">com.google.android.gms/.backup.BackupTransportService</string>
</resources>

View File

@@ -8,8 +8,8 @@ packageInfo:
renameManifestPackage: null
resourcesAreCompressed: false
sdkInfo:
minSdkVersion: '36'
targetSdkVersion: '36'
minSdkVersion: '34'
targetSdkVersion: '34'
sharedLibrary: false
sparseResources: true
unknownFiles: {}

View File

@@ -1,6 +1,7 @@
product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk;PRESIGNED|69055955ef86dec796baf155f9ba14c2df29ef44
product/app/MarkupGoogle/MarkupGoogle.apk;PRESIGNED|ed68878a8a06ca8c06dbc98441a657168f1b378b
product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk;PRESIGNED
product/app/talkback/talkback.apk;PRESIGNED
product/priv-app/Velvet/Velvet.apk;PRESIGNED
product/priv-app/VelvetTitan/VelvetTitan.apk;OVERRIDES=Velvet;PRESIGNED|0251d61f74f0557ccfd0e0424bed31e5828ea4b5
system_ext/priv-app/SetupWizard/SetupWizard.apk;OVERRIDES=Provision;PRESIGNED

View File

@@ -1 +0,0 @@
product/priv-app/VelvetTitan/VelvetTitan.apk;OVERRIDES=Velvet;PRESIGNED|782eb1875dd7944634899eeb1f8c10dee6456bd9

View File

@@ -1,3 +1,4 @@
product/priv-app/GmsCore/GmsCore.apk;PRESIGNED
product/priv-app/Phonesky/Phonesky.apk;PRESIGNED
product/lib/libjni_latinimegoogle.so|cff48167aeff1d47e624b100138a8ad01cb2967b
product/lib64/libjni_latinimegoogle.so|08ca8391a1816da0c417a3882e72dabb4091fd3c

View File

@@ -2,7 +2,7 @@ product/app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk;PRESIGNED
product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk;PRESIGNED|ec9673f50e4c4dfd2bfcb784d2d8082ef48d1e23
product/app/PrebuiltExchange3Google/PrebuiltExchange3Google.apk;PRESIGNED|043cb74798bf137d2dd1a69c7bca0a6702ad88a2
product/priv-app/AndroidAutoStub/AndroidAutoStub.apk;PRESIGNED|54d8dfc8f4633194b11eff1c23ff4632892634e3
product/priv-app/AndroidAutoStub/AndroidAutoStub.apk;PRESIGNED
product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk;PRESIGNED
product/framework/com.google.android.dialer.support.jar;PRESIGNED
@@ -10,11 +10,11 @@ product/framework/com.google.android.dialer.support.jar;PRESIGNED
product/etc/default-permissions/default-permissions-google.xml
product/etc/default-permissions/default-permissions-mtg.xml|b0e11fec4c6d134e205a856733bc89d95f2f24c9
product/etc/init/gapps.rc|29368f8d6b85b8d6f0b5a262432aae12ad75173d
product/etc/init/gapps.rc|1b9e076965fe08a03cf90fed0e96f2aa4ac90c0e
product/etc/permissions/com.google.android.dialer.support.xml
product/etc/permissions/privapp-permissions-google-product.xml
product/etc/permissions/privapp-permissions-mtg.xml|b8bcdbc95f03e6c3e50a015c092d5a4b3fc878d7
product/etc/permissions/privapp-permissions-mtg.xml|926d8fbcfbf4711a4bc96777595b70b874ef7334
product/etc/security/fsverity/gms_fsverity_cert.der
@@ -22,7 +22,6 @@ product/etc/sysconfig/d2d_cable_migration_feature.xml
system/etc/sysconfig/google-hiddenapi-package-allowlist.xml:product/etc/sysconfig/google-hiddenapi-package-allowlist.xml
product/etc/sysconfig/google.xml
product/etc/sysconfig/google_build.xml|2547949ac40c1e921ae6e92de6a36f2a3a70802c
product/etc/sysconfig/sysconfig_contextual_search.xml|ca052cd1860cd004a6ed003115bf46d6d473543c
system_ext/priv-app/GoogleFeedback/GoogleFeedback.apk;PRESIGNED
system_ext/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk;PRESIGNED

View File

@@ -1,3 +1,4 @@
product/priv-app/GmsCore/GmsCore.apk;PRESIGNED
product/priv-app/Phonesky/Phonesky.apk;PRESIGNED
product/lib/libjni_latinimegoogle.so|40e731390e8372196db987b1d7fd83c204b42e41
product/lib64/libjni_latinimegoogle.so|67772ec6576feb79748440f765cad6321aef63d0

View File

@@ -1,341 +0,0 @@
#!/usr/bin/env python3
from dataclasses import dataclass
from fnmatch import fnmatch
from pathlib import Path
import textwrap
import typing
@dataclass
class GappsTarget:
name: str
soong_imports: list[str]
additional_namespaces: list[str]
additional_packages: list[str]
additional_makefiles_to_inherit: list[str]
class SoongModule:
def __init__(self):
self.soong_module = type(self).__name__
@staticmethod
def _value_to_str(value: typing.Any) -> str:
match value:
case bool():
return ["false", "true"][value]
case dict():
ret = "{\n"
for key, value in value.items():
ret += f"{indent(SoongModule._prop_to_str(key, value))}\n"
ret += "}"
return ret
case list():
return f'[{", ".join([SoongModule._value_to_str(x) for x in value])}]'
case str():
return f'"{value}"'
case default:
assert False, f"Unhandled value type: {type(value)}"
@staticmethod
def _prop_to_str(key: str, value: typing.Any) -> str:
return f"{key}: {SoongModule._value_to_str(value)},"
def _to_blueprint(self, props: dict) -> str:
ret = f"{self.soong_module} {{\n"
for key, value in props.items():
ret += f"{indent(SoongModule._prop_to_str(key, value))}\n"
ret += "}"
return ret
class SoongPrebuilt(SoongModule):
def __init__(self, install_path: str, flags: dict):
SoongModule.__init__(self)
self.name = Path(install_path).stem
self.install_path = install_path
self.src = f"proprietary/{install_path}"
self.flags = flags
def _has_flag(self, key: str) -> bool:
return key in self.flags
def _flag(self, key: str) -> str | None:
return self.flags.get(key, None)
def _to_blueprint(self, props: dict) -> str:
partition, _ = self.install_path.split("/", maxsplit=1)
match partition:
case "system":
pass
case "product":
props["product_specific"] = True
case "system_ext":
props["system_ext_specific"] = True
case _:
assert False, f"Unhandled partition: {partition}"
return super()._to_blueprint(props)
class android_app_import(SoongPrebuilt):
def to_blueprint(self) -> str:
props = {
"name": self.name,
"owner": "gapps",
"apk": self.src,
"overrides": [self._flag("OVERRIDES")],
"preprocessed": True,
"presigned": True,
"dex_preopt": {
"enabled": False,
},
"privileged": True,
}
_, apk_dst, _ = self.install_path.split("/", maxsplit=2)
if apk_dst != "priv-app":
del props["privileged"]
if not self._has_flag("OVERRIDES"):
del props["overrides"]
if not self._has_flag("PRESIGNED"):
del props["presigned"]
return self._to_blueprint(props)
class cc_prebuilt_library_shared(SoongPrebuilt):
def to_blueprint(self) -> str:
props = {
"name": self.name,
"srcs": [self.src],
"prefer": True,
}
return self._to_blueprint(props)
class dex_import(SoongPrebuilt):
def to_blueprint(self) -> str:
props = {
"name": self.name,
"owner": "gapps",
"jars": [self.src],
}
return self._to_blueprint(props)
class prebuilt_etc(SoongPrebuilt):
def __init__(self, install_path: str, flags: dict):
super().__init__(install_path, flags)
self.name += Path(self.install_path).suffix
def to_blueprint(self) -> str:
props = {
"name": self.name,
"src": self.src,
"relative_install_path": "/".join(self.install_path.split("/")[2:-1]),
"filename_from_src": True,
}
return self._to_blueprint(props)
class soong_namespace(SoongModule):
def __init__(self, imports: list[str]):
super().__init__()
self.imports = imports
def to_blueprint(self) -> str:
props = {
"imports": self.imports,
}
if not self.imports:
del props["imports"]
return self._to_blueprint(props)
def indent(text: str) -> str:
return textwrap.indent(text, " " * 4)
def parse_proprietary_file(line: str) -> SoongPrebuilt:
# Format: ORIG_PATH:INSTALL_PATH;FLAGS|SHA1
if "|" in line:
line, file_hash = line.split("|")
else:
file_hash = None
if ";" in line:
line, flags_str = line.split(";", maxsplit=1)
flags = {}
for flag in flags_str.split(";"):
if "=" in flag:
key, value = flag.split("=", maxsplit=1)
else:
key = flag
value = None
flags[key] = value
else:
flags = {}
if ":" in line:
line, install_path = line.split(":")
else:
install_path = line
for pattern, blob_type in {
"*.apk": android_app_import,
"*.jar": dex_import,
"*.so": cc_prebuilt_library_shared,
"*/etc/*.*": prebuilt_etc,
}.items():
if fnmatch(install_path, pattern):
return blob_type(install_path, flags)
else:
assert False, f"Unhandled install path: {install_path}"
def parse_proprietary_files(path: str) -> list:
packages = []
if Path(path).is_file():
for line in open(path).readlines():
line = line.strip()
if not line:
continue
if package := parse_proprietary_file(line):
packages.append(package)
return sorted(packages, key=lambda x: (x.soong_module, x.name))
def generate(targets: list[GappsTarget]) -> None:
for target in targets:
packages = parse_proprietary_files(f"proprietary-files-{target.name}.txt")
packages_nongrouper = parse_proprietary_files(
f"proprietary-files-{target.name}-nongrouper.txt"
)
packages_tangorpro = parse_proprietary_files(
f"proprietary-files-{target.name}-tangorpro.txt"
)
packages_all = sorted(
packages + packages_nongrouper + packages_tangorpro,
key=lambda x: (x.soong_module, x.name),
)
with open(f"{target.name}/Android.bp", "+wt") as f:
f.write("// Automatically generated file. DO NOT MODIFY\n")
f.write("\n")
f.write(soong_namespace(target.soong_imports).to_blueprint())
f.write("\n")
for package in packages_all:
f.write("\n")
f.write(package.to_blueprint())
f.write("\n")
with open(f"{target.name}/BoardConfigVendor.mk", "+wt") as f:
f.write("# Automatically generated file. DO NOT MODIFY\n")
f.write("#\n")
with open(f"{target.name}/{target.name}-vendor.mk", "+wt") as f:
f.write("# Automatically generated file. DO NOT MODIFY\n")
f.write("#\n")
def write_list(var: str, items: list[str]):
f.write(f"{var} += \\\n")
f.write(" \\\n".join([indent(x) for x in items]))
f.write("\n")
f.write("\n")
write_list("PRODUCT_SOONG_NAMESPACES", [f"$(LOCAL_PATH)"])
if packages:
f.write("\n")
write_list("PRODUCT_PACKAGES", [x.name for x in packages])
if packages_nongrouper:
f.write("\n")
f.write("ifeq ($(TARGET_IS_GROUPER),)\n")
write_list("PRODUCT_PACKAGES", [x.name for x in packages_nongrouper])
f.write("endif\n")
if packages_tangorpro:
f.write("\n")
f.write("ifneq ($(filter %tangorpro,$(TARGET_PRODUCT)),)\n")
write_list("PRODUCT_PACKAGES", [x.name for x in packages_tangorpro])
f.write("endif\n")
if target.additional_namespaces:
f.write("\n")
write_list("PRODUCT_SOONG_NAMESPACES", target.additional_namespaces)
if target.additional_packages:
f.write("\n")
write_list("PRODUCT_PACKAGES", target.additional_packages)
for path in target.additional_makefiles_to_inherit:
f.write("\n")
f.write(f"$(call inherit-product, {path})\n")
if __name__ == "__main__":
generate(
[
GappsTarget(
name="common",
soong_imports=[],
additional_namespaces=["vendor/gapps/overlay"],
additional_packages=sorted([x.name for x in Path("overlay").glob("*Overlay")]),
additional_makefiles_to_inherit=[],
),
GappsTarget(
name="arm",
soong_imports=["vendor/gapps/common"],
additional_namespaces=[],
additional_packages=[],
additional_makefiles_to_inherit=[
"vendor/gapps/common/common-vendor.mk",
],
),
GappsTarget(
name="arm64",
soong_imports=["vendor/gapps/common"],
additional_namespaces=[],
additional_packages=[],
additional_makefiles_to_inherit=[
"vendor/gapps/common/common-vendor.mk",
],
),
GappsTarget(
name="x86_64",
soong_imports=["vendor/gapps/common"],
additional_namespaces=[],
additional_packages=[],
additional_makefiles_to_inherit=[
"vendor/gapps/common/common-vendor.mk",
],
),
]
)

100
setup-makefiles.sh Executable file
View File

@@ -0,0 +1,100 @@
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2021 The LineageOS 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.
#
set -e
export DEVICE_COMMON=common
export VENDOR=gapps
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
ANDROID_ROOT="$MY_DIR/../.."
export TARGET_ENABLE_CHECKELF=true
HELPER="$ANDROID_ROOT/tools/extract-utils/extract_utils.sh"
if [ ! -f "$HELPER" ]; then
echo "Unable to find helper script at $HELPER"
exit 1
fi
. "$HELPER"
# Initialize the helper for common gapps
setup_vendor "$DEVICE_COMMON" "$VENDOR" "$ANDROID_ROOT" true
# Copyright headers
write_headers "arm arm64 x86_64"
# Common gapps
write_makefiles "$MY_DIR"/proprietary-files-common.txt
# Gapps that are too large for grouper
printf "\n" >> "$PRODUCTMK"
echo "ifeq (\$(TARGET_IS_GROUPER),)" >> "$PRODUCTMK"
write_makefiles "$MY_DIR"/proprietary-files-common-nongrouper.txt
echo "endif" >> "$PRODUCTMK"
# Overlays
cd overlay
OVERLAYS=$(for dir in $(ls -d */); do echo ${dir%%/}; done)
OVERLAYS=$(echo $OVERLAYS | paste -s -d ' ')
cd - >/dev/null
printf "\n" >> "$PRODUCTMK"
echo "PRODUCT_SOONG_NAMESPACES += vendor/$VENDOR/overlay" >> "$PRODUCTMK"
echo "PRODUCT_PACKAGES += $OVERLAYS" >> "$PRODUCTMK"
sed -i 's/TARGET_DEVICE/TARGET_ARCH/g' "$ANDROIDMK"
# We are done with common
write_footers
for DEVICE in arm arm64 x86_64; do
# Reinitialize the helper for target gapps
setup_vendor "$DEVICE" "$VENDOR" "$ANDROID_ROOT"
# Copyright headers and guards
write_headers "$DEVICE"
write_makefiles "$MY_DIR"/proprietary-files-$DEVICE.txt
# Gapps that are too large for grouper
printf "\n" >> "$PRODUCTMK"
echo "ifeq (\$(TARGET_IS_GROUPER),)" >> "$PRODUCTMK"
write_makefiles "$MY_DIR"/proprietary-files-$DEVICE-nongrouper.txt
echo "endif" >> "$PRODUCTMK"
# Workaround for VelvetTitan on tangorpro
if grep -q "VelvetTitan" "$PRODUCTMK"; then
sed -i '/VelvetTitan/d' "$PRODUCTMK"
printf "\n" >> "$PRODUCTMK"
echo "ifneq (\$(filter %tangorpro,\$(TARGET_PRODUCT)),)" >> "$PRODUCTMK"
echo "PRODUCT_PACKAGES += VelvetTitan" >> "$PRODUCTMK"
echo "endif" >> "$PRODUCTMK"
fi
printf '\n%s\n' "\$(call inherit-product, vendor/gapps/common/common-vendor.mk)" >> "$PRODUCTMK"
sed -i 's/TARGET_DEVICE/TARGET_ARCH/g' "$ANDROIDMK"
# We are done with target
write_footers
done

View File

@@ -1,65 +1,84 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/x86_64/setup-makefiles.sh
soong_namespace {
imports: ["vendor/gapps/common"],
}
android_app_import {
name: "GmsCore",
owner: "gapps",
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "Phonesky",
owner: "gapps",
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SetupWizard",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
overrides: ["Provision"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}
android_app_import {
name: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
imports: [
"vendor/gapps/common",
],
}
cc_prebuilt_library_shared {
name: "libjni_latinimegoogle",
srcs: ["proprietary/product/lib64/libjni_latinimegoogle.so"],
prefer: true,
product_specific: true,
name: "libjni_latinimegoogle",
owner: "gapps",
strip: {
none: true,
},
target: {
android_x86: {
srcs: ["proprietary/product/lib/libjni_latinimegoogle.so"],
shared_libs: ["libc", "libc++", "libm", "libdl", ],
},
android_x86_64: {
srcs: ["proprietary/product/lib64/libjni_latinimegoogle.so"],
shared_libs: ["libc", "libc++", "libm", "libdl", ],
},
},
compile_multilib: "both",
prefer: true,
product_specific: true,
}
android_app_import {
name: "GmsCore",
owner: "gapps",
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "Phonesky",
owner: "gapps",
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
}
android_app_import {
name: "SetupWizard",
owner: "gapps",
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
overrides: ["Provision"],
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
system_ext_specific: true,
}

9
x86_64/Android.mk Normal file
View File

@@ -0,0 +1,9 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/x86_64/setup-makefiles.sh
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_ARCH),x86_64)
endif

View File

@@ -1,2 +1,4 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/x86_64/setup-makefiles.sh

View File

@@ -1,18 +1,21 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/x86_64/setup-makefiles.sh
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
vendor/gapps/x86_64
PRODUCT_PACKAGES += \
libjni_latinimegoogle \
GmsCore \
Phonesky \
libjni_latinimegoogle
Phonesky
ifeq ($(TARGET_IS_GROUPER),)
PRODUCT_PACKAGES += \
SetupWizard \
Velvet
Velvet \
SetupWizard
endif
$(call inherit-product, vendor/gapps/common/common-vendor.mk)