9 Commits

Author SHA1 Message Date
cc58fb9863 !fixup adapt crdroid 2025-07-18 16:17:49 +00:00
8f2f64ee6a !fixup adapt crdroid 2025-07-18 16:11:47 +00:00
ed4f7f96ab apks 2025-07-18 20:17:40 +09:00
47e407aff1 bye lfs 2025-07-18 20:17:18 +09:00
dddf36db78 adapt crdroid 2025-07-18 19:47:59 +09:00
LuK1337
9038094a04 Fix relative_install_path computation 2025-06-28 10:52:05 +02:00
LuK1337
5e7c36d726 Migrate away from lineage extract utils 2025-06-28 10:24:53 +02:00
LuK1337
bbdc14d4e5 Get rid of libjni_latinimegoogle multilib 2025-06-27 19:56:22 +02:00
LuK1337
4d61f18ca9 Strip build path from .sha256sum file
Fixes: https://github.com/MindTheGapps/15.0.0-arm64/issues/5
2025-06-09 19:01:27 +02:00
26 changed files with 723 additions and 610 deletions

View File

@@ -1,104 +1,68 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/arm/setup-makefiles.sh
soong_namespace {
imports: [
"vendor/gapps/common",
],
}
cc_prebuilt_library_shared {
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,
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,
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,
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,
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,
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: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
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: "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,
}

View File

@@ -1,9 +0,0 @@
# 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,4 +1,2 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm/setup-makefiles.sh

View File

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

View File

@@ -1,134 +1,94 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/arm64/setup-makefiles.sh
soong_namespace {
imports: [
"vendor/gapps/common",
],
}
cc_prebuilt_library_shared {
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,
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,
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,
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: "MarkupGoogle_v2",
owner: "gapps",
apk: "proprietary/product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
product_specific: true,
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,
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,
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: "Velvet",
owner: "gapps",
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_specific: true,
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: "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,
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: "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,
}

View File

@@ -1,9 +0,0 @@
# 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,4 +1,2 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/arm64/setup-makefiles.sh

View File

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

View File

@@ -93,8 +93,10 @@ function getsha256() {
if [ -x $(which sha256sum) ]; then
echo "sha256sum is installed, getting sha256..." >> $GLOG
echo "Getting sha256sum..."
GSHA256=$(sha256sum $OUT/$BUILDZIP)
echo -e "$GSHA256" > $OUT/$BUILDZIP.sha256sum
pushd $OUT > /dev/null
GSHA256=$(sha256sum $BUILDZIP)
echo -e "$GSHA256" > $BUILDZIP.sha256sum
popd > /dev/null
echo "sha256 exported at $OUT/$BUILDZIP.sha256sum"
return 0
else

View File

@@ -1,130 +1,213 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/common/setup-makefiles.sh
soong_namespace {
imports: [
],
}
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: "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: "GoogleContactsSyncAdapter",
owner: "gapps",
apk: "proprietary/product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
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: "PrebuiltExchange3Google",
owner: "gapps",
apk: "proprietary/product/app/PrebuiltExchange3Google/PrebuiltExchange3Google.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: "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: "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: "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: "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: "GoogleRestore",
owner: "gapps",
apk: "proprietary/product/priv-app/GoogleRestore/GoogleRestore.apk",
preprocessed: true,
presigned: true,
dex_preopt: {
enabled: false,
},
privileged: true,
product_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,
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,
}
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,
}
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: "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: "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: "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,
}
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: "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: "wellbeing.xml",
src: "proprietary/product/etc/sysconfig/wellbeing.xml",
relative_install_path: "sysconfig",
filename_from_src: true,
product_specific: true,
}

View File

@@ -1,9 +0,0 @@
# 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,4 +1,2 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/common/setup-makefiles.sh

View File

@@ -1,42 +1,41 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/common/setup-makefiles.sh
PRODUCT_SOONG_NAMESPACES += \
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
$(LOCAL_PATH)
PRODUCT_PACKAGES += \
AndroidAutoStub \
GoogleCalendarSyncAdapter \
GoogleContactsSyncAdapter \
PrebuiltExchange3Google \
AndroidAutoStub \
GooglePartnerSetup \
GoogleFeedback \
GooglePartnerSetup \
GoogleServicesFramework \
com.google.android.dialer.support
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 \
privapp-permissions-google-product.xml \
privapp-permissions-google-system-ext.xml \
privapp-permissions-mtg.xml
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 \
wellbeing.xml
endif
PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
PRODUCT_PACKAGES += GmsOverlay GmsSettingsOverlay GmsSettingsProviderOverlay GmsSetupWizardOverlay
PRODUCT_SOONG_NAMESPACES += \
vendor/gapps/overlay
PRODUCT_PACKAGES += \
GmsSettingsOverlay \
GmsOverlay \
GmsSettingsProviderOverlay \
GmsSetupWizardOverlay

View File

@@ -1,52 +0,0 @@
#!/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

@@ -2,6 +2,5 @@ product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk;PRESIGNED|474ca0e1fb0e6340b64714
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|bb7c2f3fadfee4dda509daba285fec3dfffeed7e
system_ext/priv-app/SetupWizard/SetupWizard.apk;OVERRIDES=Provision;PRESIGNED

View File

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

View File

@@ -1,4 +1,3 @@
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

@@ -1,4 +1,3 @@
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

341
setup-makefiles.py Executable file
View File

@@ -0,0 +1,341 @@
#!/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=[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",
],
),
]
)

View File

@@ -1,100 +0,0 @@
#!/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,84 +1,59 @@
// Automatically generated file. DO NOT MODIFY
//
// This file is generated by device/gapps/x86_64/setup-makefiles.sh
soong_namespace {
imports: [
"vendor/gapps/common",
],
}
cc_prebuilt_library_shared {
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,
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,
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,
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,
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: "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,
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,
}

View File

@@ -1,9 +0,0 @@
# 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,4 +1,2 @@
# Automatically generated file. DO NOT MODIFY
#
# This file is generated by device/gapps/x86_64/setup-makefiles.sh

View File

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