Compare commits
2 Commits
crdroid/15
...
cr11
Author | SHA1 | Date | |
---|---|---|---|
0ee039d546 | |||
9e732512ac |
134
arm/Android.bp
134
arm/Android.bp
@@ -1,68 +1,104 @@
|
|||||||
// Automatically generated file. DO NOT MODIFY
|
// Automatically generated file. DO NOT MODIFY
|
||||||
|
//
|
||||||
|
// This file is generated by device/gapps/arm/setup-makefiles.sh
|
||||||
|
|
||||||
soong_namespace {
|
soong_namespace {
|
||||||
imports: ["vendor/gapps/common"],
|
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GmsCore",
|
name: "GmsCore",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
|
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "Phonesky",
|
name: "Phonesky",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
|
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "SpeechServicesByGoogle",
|
name: "SpeechServicesByGoogle",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
|
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "Velvet",
|
name: "talkback",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
|
apk: "proprietary/product/app/talkback/talkback.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
product_specific: true,
|
||||||
product_specific: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "talkback",
|
name: "Velvet",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/talkback/talkback.apk",
|
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
product_specific: true,
|
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
9
arm/Android.mk
Normal 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
|
@@ -1,2 +1,4 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/arm/setup-makefiles.sh
|
||||||
|
|
||||||
|
@@ -1,18 +1,23 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/arm/setup-makefiles.sh
|
||||||
|
|
||||||
PRODUCT_SOONG_NAMESPACES += \
|
PRODUCT_SOONG_NAMESPACES += \
|
||||||
$(LOCAL_PATH)
|
vendor/gapps/arm
|
||||||
|
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
|
libjni_latinimegoogle \
|
||||||
GmsCore \
|
GmsCore \
|
||||||
Phonesky
|
Phonesky
|
||||||
|
|
||||||
ifeq ($(TARGET_IS_GROUPER),)
|
ifeq ($(TARGET_IS_GROUPER),)
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
SpeechServicesByGoogle \
|
SpeechServicesByGoogle \
|
||||||
|
talkback \
|
||||||
Velvet \
|
Velvet \
|
||||||
talkback
|
SetupWizard
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(call inherit-product, vendor/gapps/common/common-vendor.mk)
|
$(call inherit-product, vendor/gapps/common/common-vendor.mk)
|
||||||
|
143
arm64/Android.bp
143
arm64/Android.bp
@@ -1,94 +1,99 @@
|
|||||||
// Automatically generated file. DO NOT MODIFY
|
// Automatically generated file. DO NOT MODIFY
|
||||||
|
//
|
||||||
|
// This file is generated by device/gapps/arm64/setup-makefiles.sh
|
||||||
|
|
||||||
soong_namespace {
|
soong_namespace {
|
||||||
imports: ["vendor/gapps/common"],
|
imports: [
|
||||||
|
"vendor/gapps/common",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GmsCore",
|
name: "GmsCore",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
|
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "MarkupGoogle_v2",
|
name: "Phonesky",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk",
|
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
product_specific: true,
|
privileged: true,
|
||||||
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "Phonesky",
|
name: "MarkupGoogle_v2",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
|
apk: "proprietary/product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
product_specific: true,
|
||||||
product_specific: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "SpeechServicesByGoogle",
|
name: "SpeechServicesByGoogle",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
|
apk: "proprietary/product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "Velvet",
|
name: "talkback",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
|
apk: "proprietary/product/app/talkback/talkback.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
product_specific: true,
|
||||||
product_specific: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "VelvetTitan",
|
name: "Velvet",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/VelvetTitan/VelvetTitan.apk",
|
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
|
||||||
overrides: ["Velvet"],
|
preprocessed: true,
|
||||||
preprocessed: true,
|
presigned: true,
|
||||||
presigned: true,
|
dex_preopt: {
|
||||||
dex_preopt: {
|
enabled: false,
|
||||||
enabled: false,
|
},
|
||||||
},
|
privileged: true,
|
||||||
privileged: true,
|
product_specific: true,
|
||||||
product_specific: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "talkback",
|
name: "VelvetTitan",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/talkback/talkback.apk",
|
apk: "proprietary/product/priv-app/VelvetTitan/VelvetTitan.apk",
|
||||||
preprocessed: true,
|
overrides: ["Velvet"],
|
||||||
presigned: true,
|
preprocessed: true,
|
||||||
dex_preopt: {
|
presigned: true,
|
||||||
enabled: false,
|
dex_preopt: {
|
||||||
},
|
enabled: false,
|
||||||
product_specific: true,
|
},
|
||||||
|
privileged: true,
|
||||||
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
arm64/Android.mk
Normal file
9
arm64/Android.mk
Normal 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
|
@@ -1,2 +1,4 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/arm64/setup-makefiles.sh
|
||||||
|
|
||||||
|
@@ -1,24 +1,26 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/arm64/setup-makefiles.sh
|
||||||
|
|
||||||
PRODUCT_SOONG_NAMESPACES += \
|
PRODUCT_SOONG_NAMESPACES += \
|
||||||
$(LOCAL_PATH)
|
vendor/gapps/arm64
|
||||||
|
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
GmsCore \
|
GmsCore \
|
||||||
Phonesky
|
Phonesky
|
||||||
|
|
||||||
ifeq ($(TARGET_IS_GROUPER),)
|
ifeq ($(TARGET_IS_GROUPER),)
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
MarkupGoogle_v2 \
|
MarkupGoogle_v2 \
|
||||||
SpeechServicesByGoogle \
|
SpeechServicesByGoogle \
|
||||||
Velvet \
|
talkback \
|
||||||
talkback
|
Velvet
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(filter %tangorpro,$(TARGET_PRODUCT)),)
|
ifneq ($(filter %tangorpro,$(TARGET_PRODUCT)),)
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += VelvetTitan
|
||||||
VelvetTitan
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(call inherit-product, vendor/gapps/common/common-vendor.mk)
|
$(call inherit-product, vendor/gapps/common/common-vendor.mk)
|
||||||
|
BIN
arm64/proprietary/product/lib/libjni_latinimegoogle.so
Normal file
BIN
arm64/proprietary/product/lib/libjni_latinimegoogle.so
Normal file
Binary file not shown.
@@ -89,18 +89,16 @@ function zipit() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function getsha256() {
|
function getmd5() {
|
||||||
if [ -x $(which sha256sum) ]; then
|
if [ -x $(which md5sum) ]; then
|
||||||
echo "sha256sum is installed, getting sha256..." >> $GLOG
|
echo "md5sum is installed, getting md5..." >> $GLOG
|
||||||
echo "Getting sha256sum..."
|
echo "Getting md5sum..."
|
||||||
pushd $OUT > /dev/null
|
GMD5=$(md5sum $OUT/$BUILDZIP)
|
||||||
GSHA256=$(sha256sum $BUILDZIP)
|
echo -e "$GMD5" > $OUT/$BUILDZIP.md5sum
|
||||||
echo -e "$GSHA256" > $BUILDZIP.sha256sum
|
echo "md5 exported at $OUT/$BUILDZIP.md5sum"
|
||||||
popd > /dev/null
|
|
||||||
echo "sha256 exported at $OUT/$BUILDZIP.sha256sum"
|
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
echo "sha256sum is not installed, aborting" >> $GLOG
|
echo "md5sum is not installed, aborting" >> $GLOG
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -115,7 +113,7 @@ else
|
|||||||
echo "No realpath found!" >> $GLOG
|
echo "No realpath found!" >> $GLOG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for func in create zipit getsha256 clean; do
|
for func in create zipit getmd5 clean; do
|
||||||
$func
|
$func
|
||||||
ret=$?
|
ret=$?
|
||||||
if [ "$ret" == 0 ]; then
|
if [ "$ret" == 0 ]; then
|
||||||
@@ -126,5 +124,5 @@ for func in create zipit getsha256 clean; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
echo "Done!" >> $GLOG
|
echo "Done!" >> $GLOG
|
||||||
echo "Build completed: $GSHA256"
|
echo "Build completed: $GMD5"
|
||||||
exit 0
|
exit 0
|
||||||
|
@@ -2,4 +2,5 @@ FROM ubuntu:latest
|
|||||||
MAINTAINER LuK1337 <priv.luk@gmail.com>
|
MAINTAINER LuK1337 <priv.luk@gmail.com>
|
||||||
|
|
||||||
RUN apt update
|
RUN apt update
|
||||||
RUN apt -y install aapt python3 python3-parse python3-requests
|
RUN apt -y install aapt python3 python3-pip
|
||||||
|
RUN pip install parse requests
|
||||||
|
@@ -94,7 +94,7 @@ for partition in partitions:
|
|||||||
|
|
||||||
# Definitions for parsing APKs
|
# Definitions for parsing APKs
|
||||||
GLOB_APK_STR = '../*/proprietary/{}/priv-app/*/*.apk'
|
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
|
# Extract requested privileged permissions from all priv-app APKs
|
||||||
for partition in partitions:
|
for partition in partitions:
|
||||||
@@ -103,7 +103,8 @@ for partition in partitions:
|
|||||||
# Loop over all the APKs in the partition we want
|
# Loop over all the APKs in the partition we want
|
||||||
for apk in glob(GLOB_APK_STR.format(partition)):
|
for apk in glob(GLOB_APK_STR.format(partition)):
|
||||||
# Run 'aapt d permissions' on APK
|
# 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()
|
lines = aapt_output.splitlines()
|
||||||
# Extract package name from the output
|
# Extract package name from the output
|
||||||
# Output looks like:
|
# Output looks like:
|
||||||
|
@@ -1,213 +1,130 @@
|
|||||||
// Automatically generated file. DO NOT MODIFY
|
// Automatically generated file. DO NOT MODIFY
|
||||||
|
//
|
||||||
|
// This file is generated by device/gapps/common/setup-makefiles.sh
|
||||||
|
|
||||||
soong_namespace {
|
soong_namespace {
|
||||||
|
imports: [
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "AndroidAutoStub",
|
name: "GoogleCalendarSyncAdapter",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/AndroidAutoStub/AndroidAutoStub.apk",
|
apk: "proprietary/product/app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
product_specific: true,
|
||||||
product_specific: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GoogleCalendarSyncAdapter",
|
name: "GoogleContactsSyncAdapter",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk",
|
apk: "proprietary/product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GoogleContactsSyncAdapter",
|
name: "PrebuiltExchange3Google",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk",
|
apk: "proprietary/product/app/PrebuiltExchange3Google/PrebuiltExchange3Google.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GoogleFeedback",
|
name: "AndroidAutoStub",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/system_ext/priv-app/GoogleFeedback/GoogleFeedback.apk",
|
apk: "proprietary/product/priv-app/AndroidAutoStub/AndroidAutoStub.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
system_ext_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GooglePartnerSetup",
|
name: "GooglePartnerSetup",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk",
|
apk: "proprietary/product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GoogleRestore",
|
name: "GoogleFeedback",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/GoogleRestore/GoogleRestore.apk",
|
apk: "proprietary/system_ext/priv-app/GoogleFeedback/GoogleFeedback.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
system_ext_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GoogleServicesFramework",
|
name: "GoogleServicesFramework",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/system_ext/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk",
|
apk: "proprietary/system_ext/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
system_ext_specific: 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 {
|
dex_import {
|
||||||
name: "com.google.android.dialer.support",
|
name: "com.google.android.dialer.support",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
jars: ["proprietary/product/framework/com.google.android.dialer.support.jar"],
|
jars: ["proprietary/product/framework/com.google.android.dialer.support.jar"],
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
prebuilt_etc {
|
android_app_import {
|
||||||
name: "com.google.android.dialer.support.xml",
|
name: "GoogleRestore",
|
||||||
src: "proprietary/product/etc/permissions/com.google.android.dialer.support.xml",
|
owner: "gapps",
|
||||||
relative_install_path: "permissions",
|
apk: "proprietary/product/priv-app/GoogleRestore/GoogleRestore.apk",
|
||||||
filename_from_src: true,
|
preprocessed: true,
|
||||||
product_specific: true,
|
presigned: true,
|
||||||
|
dex_preopt: {
|
||||||
|
enabled: false,
|
||||||
|
},
|
||||||
|
privileged: true,
|
||||||
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
prebuilt_etc {
|
android_app_import {
|
||||||
name: "d2d_cable_migration_feature.xml",
|
name: "Wellbeing",
|
||||||
src: "proprietary/product/etc/sysconfig/d2d_cable_migration_feature.xml",
|
owner: "gapps",
|
||||||
relative_install_path: "sysconfig",
|
apk: "proprietary/product/priv-app/Wellbeing/Wellbeing.apk",
|
||||||
filename_from_src: true,
|
preprocessed: true,
|
||||||
product_specific: 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: "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,
|
|
||||||
}
|
|
||||||
|
9
common/Android.mk
Normal file
9
common/Android.mk
Normal 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
|
@@ -1,2 +1,4 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/common/setup-makefiles.sh
|
||||||
|
|
||||||
|
@@ -1,41 +1,40 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/common/setup-makefiles.sh
|
||||||
|
|
||||||
PRODUCT_SOONG_NAMESPACES += \
|
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 += \
|
PRODUCT_PACKAGES += \
|
||||||
AndroidAutoStub \
|
|
||||||
GoogleCalendarSyncAdapter \
|
GoogleCalendarSyncAdapter \
|
||||||
GoogleContactsSyncAdapter \
|
GoogleContactsSyncAdapter \
|
||||||
GoogleFeedback \
|
|
||||||
GooglePartnerSetup \
|
|
||||||
GoogleServicesFramework \
|
|
||||||
PrebuiltExchange3Google \
|
PrebuiltExchange3Google \
|
||||||
com.google.android.dialer.support \
|
AndroidAutoStub \
|
||||||
com.google.android.dialer.support.xml \
|
GooglePartnerSetup \
|
||||||
d2d_cable_migration_feature.xml \
|
GoogleFeedback \
|
||||||
default-permissions-google.xml \
|
GoogleServicesFramework \
|
||||||
default-permissions-mtg.xml \
|
com.google.android.dialer.support
|
||||||
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),)
|
ifeq ($(TARGET_IS_GROUPER),)
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
GoogleRestore \
|
GoogleRestore \
|
||||||
Wellbeing \
|
Wellbeing
|
||||||
wellbeing.xml
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PRODUCT_SOONG_NAMESPACES += \
|
PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
|
||||||
vendor/gapps/overlay
|
PRODUCT_PACKAGES += GmsOverlay GmsSettingsOverlay GmsSettingsProviderOverlay GmsSetupWizardOverlay
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
|
||||||
GmsSettingsOverlay \
|
|
||||||
GmsOverlay \
|
|
||||||
GmsSettingsProviderOverlay \
|
|
||||||
GmsSetupWizardOverlay
|
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
package="com.google.android.projection.gearhead"
|
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">
|
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 -->
|
<!-- Gearhead legacy -->
|
||||||
<permission name="android.permission.MODIFY_PHONE_STATE" fixed="false" />
|
|
||||||
<permission name="android.permission.READ_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.CALL_PHONE" fixed="false" />
|
||||||
<permission name="android.permission.READ_CALL_LOG" fixed="false" />
|
<permission name="android.permission.READ_CALL_LOG" fixed="false" />
|
||||||
|
@@ -1,9 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<permissions>
|
<permissions>
|
||||||
<privapp-permissions package="com.google.android.projection.gearhead">
|
|
||||||
<permission name="android.permission.MODIFY_PHONE_STATE"/>
|
|
||||||
</privapp-permissions>
|
|
||||||
|
|
||||||
<privapp-permissions package="com.google.android.googlequicksearchbox">
|
<privapp-permissions package="com.google.android.googlequicksearchbox">
|
||||||
<permission name="android.permission.CAPTURE_MEDIA_OUTPUT"/>
|
<permission name="android.permission.CAPTURE_MEDIA_OUTPUT"/>
|
||||||
<permission name="android.permission.QUERY_USERS"/>
|
<permission name="android.permission.QUERY_USERS"/>
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<config>
|
|
||||||
<feature name="com.google.android.feature.WELLBEING" />
|
|
||||||
</config>
|
|
Binary file not shown.
52
extract-files.sh
Executable file
52
extract-files.sh
Executable 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
|
@@ -2,5 +2,6 @@ product/app/MarkupGoogle_v2/MarkupGoogle_v2.apk;PRESIGNED|474ca0e1fb0e6340b64714
|
|||||||
product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk;PRESIGNED
|
product/app/SpeechServicesByGoogle/SpeechServicesByGoogle.apk;PRESIGNED
|
||||||
product/app/talkback/talkback.apk;PRESIGNED
|
product/app/talkback/talkback.apk;PRESIGNED
|
||||||
product/priv-app/Velvet/Velvet.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
|
system_ext/priv-app/SetupWizard/SetupWizard.apk;OVERRIDES=Provision;PRESIGNED
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
product/priv-app/VelvetTitan/VelvetTitan.apk;OVERRIDES=Velvet;PRESIGNED|bb7c2f3fadfee4dda509daba285fec3dfffeed7e
|
|
@@ -1,3 +1,4 @@
|
|||||||
product/priv-app/GmsCore/GmsCore.apk;PRESIGNED
|
product/priv-app/GmsCore/GmsCore.apk;PRESIGNED
|
||||||
product/priv-app/Phonesky/Phonesky.apk;PRESIGNED
|
product/priv-app/Phonesky/Phonesky.apk;PRESIGNED
|
||||||
|
product/lib/libjni_latinimegoogle.so|cff48167aeff1d47e624b100138a8ad01cb2967b
|
||||||
product/lib64/libjni_latinimegoogle.so|08ca8391a1816da0c417a3882e72dabb4091fd3c
|
product/lib64/libjni_latinimegoogle.so|08ca8391a1816da0c417a3882e72dabb4091fd3c
|
||||||
|
@@ -1,4 +1,2 @@
|
|||||||
product/etc/sysconfig/wellbeing.xml
|
|
||||||
|
|
||||||
product/priv-app/GoogleRestore/GoogleRestore.apk;PRESIGNED
|
product/priv-app/GoogleRestore/GoogleRestore.apk;PRESIGNED
|
||||||
product/priv-app/Wellbeing/Wellbeing.apk;PRESIGNED
|
product/priv-app/Wellbeing/Wellbeing.apk;PRESIGNED
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
product/priv-app/GmsCore/GmsCore.apk;PRESIGNED
|
product/priv-app/GmsCore/GmsCore.apk;PRESIGNED
|
||||||
product/priv-app/Phonesky/Phonesky.apk;PRESIGNED
|
product/priv-app/Phonesky/Phonesky.apk;PRESIGNED
|
||||||
|
product/lib/libjni_latinimegoogle.so|40e731390e8372196db987b1d7fd83c204b42e41
|
||||||
product/lib64/libjni_latinimegoogle.so|67772ec6576feb79748440f765cad6321aef63d0
|
product/lib64/libjni_latinimegoogle.so|67772ec6576feb79748440f765cad6321aef63d0
|
||||||
|
@@ -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=[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
100
setup-makefiles.sh
Executable 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
|
@@ -1,59 +1,84 @@
|
|||||||
// Automatically generated file. DO NOT MODIFY
|
// Automatically generated file. DO NOT MODIFY
|
||||||
|
//
|
||||||
|
// This file is generated by device/gapps/x86_64/setup-makefiles.sh
|
||||||
|
|
||||||
soong_namespace {
|
soong_namespace {
|
||||||
imports: ["vendor/gapps/common"],
|
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "GmsCore",
|
name: "GmsCore",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
|
apk: "proprietary/product/priv-app/GmsCore/GmsCore.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "Phonesky",
|
name: "Phonesky",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
|
apk: "proprietary/product/priv-app/Phonesky/Phonesky.apk",
|
||||||
preprocessed: true,
|
preprocessed: true,
|
||||||
presigned: true,
|
presigned: true,
|
||||||
dex_preopt: {
|
dex_preopt: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
privileged: true,
|
privileged: true,
|
||||||
product_specific: true,
|
product_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "SetupWizard",
|
name: "Velvet",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
|
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
|
||||||
overrides: ["Provision"],
|
preprocessed: true,
|
||||||
preprocessed: true,
|
presigned: true,
|
||||||
presigned: true,
|
dex_preopt: {
|
||||||
dex_preopt: {
|
enabled: false,
|
||||||
enabled: false,
|
},
|
||||||
},
|
privileged: true,
|
||||||
privileged: true,
|
product_specific: true,
|
||||||
system_ext_specific: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_app_import {
|
android_app_import {
|
||||||
name: "Velvet",
|
name: "SetupWizard",
|
||||||
owner: "gapps",
|
owner: "gapps",
|
||||||
apk: "proprietary/product/priv-app/Velvet/Velvet.apk",
|
apk: "proprietary/system_ext/priv-app/SetupWizard/SetupWizard.apk",
|
||||||
preprocessed: true,
|
overrides: ["Provision"],
|
||||||
presigned: true,
|
preprocessed: true,
|
||||||
dex_preopt: {
|
presigned: true,
|
||||||
enabled: false,
|
dex_preopt: {
|
||||||
},
|
enabled: false,
|
||||||
privileged: true,
|
},
|
||||||
product_specific: true,
|
privileged: true,
|
||||||
|
system_ext_specific: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
x86_64/Android.mk
Normal file
9
x86_64/Android.mk
Normal 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
|
@@ -1,2 +1,4 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/x86_64/setup-makefiles.sh
|
||||||
|
|
||||||
|
BIN
x86_64/proprietary/product/lib/libjni_latinimegoogle.so
Normal file
BIN
x86_64/proprietary/product/lib/libjni_latinimegoogle.so
Normal file
Binary file not shown.
@@ -1,17 +1,21 @@
|
|||||||
# Automatically generated file. DO NOT MODIFY
|
# Automatically generated file. DO NOT MODIFY
|
||||||
#
|
#
|
||||||
|
# This file is generated by device/gapps/x86_64/setup-makefiles.sh
|
||||||
|
|
||||||
PRODUCT_SOONG_NAMESPACES += \
|
PRODUCT_SOONG_NAMESPACES += \
|
||||||
$(LOCAL_PATH)
|
vendor/gapps/x86_64
|
||||||
|
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
|
libjni_latinimegoogle \
|
||||||
GmsCore \
|
GmsCore \
|
||||||
Phonesky
|
Phonesky
|
||||||
|
|
||||||
ifeq ($(TARGET_IS_GROUPER),)
|
ifeq ($(TARGET_IS_GROUPER),)
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
SetupWizard \
|
Velvet \
|
||||||
Velvet
|
SetupWizard
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(call inherit-product, vendor/gapps/common/common-vendor.mk)
|
$(call inherit-product, vendor/gapps/common/common-vendor.mk)
|
||||||
|
Reference in New Issue
Block a user