1#
2# Copyright (C) 2016 The Android Open-Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17# Common make file for all car builds
18
19PRODUCT_PUBLIC_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/public
20PRODUCT_PRIVATE_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/private
21ifeq ($(ENABLE_CARTELEMETRY_SERVICE), true)
22PRODUCT_PRIVATE_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/cartelemetry
23endif
24
25PRODUCT_PACKAGES += \
26    Bluetooth \
27    CarActivityResolver \
28    CarDeveloperOptions \
29    CarSettingsIntelligence \
30    CarManagedProvisioning \
31    CarProvision \
32    StatementService \
33    SystemUpdater
34
35PRODUCT_PACKAGES += \
36    pppd \
37    screenrecord
38
39# This is for testing
40ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
41PRODUCT_PACKAGES += \
42    DefaultStorageMonitoringCompanionApp \
43    EmbeddedKitchenSinkApp \
44    GarageModeTestApp \
45    ExperimentalCarService \
46    BugReportApp \
47    NetworkPreferenceApp \
48    SampleCustomInputService \
49    AdasLocationTestApp \
50    curl \
51    CarTelemetryApp \
52    RailwayReferenceApp \
53    CarHotwordDetectionServiceOne \
54    KitchenSinkServerlessRemoteTaskClientRRO \
55    AaosCustomizationTool \
56
57# SEPolicy for test apps / services
58PRODUCT_PRIVATE_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/test
59endif
60
61# ClusterOsDouble is the testing app to test Cluster2 framework and it can handle Cluster VHAL
62# and do some Cluster OS role.
63ifeq ($(ENABLE_CLUSTER_OS_DOUBLE), true)
64PRODUCT_PACKAGES += ClusterHomeSample ClusterOsDouble
65else
66# DirectRenderingCluster is the sample app for the old Cluster framework.
67PRODUCT_PACKAGES += DirectRenderingCluster
68endif  # ENABLE_CLUSTER_OS_DOUBLE
69
70PRODUCT_PROPERTY_OVERRIDES += \
71    ro.carrier=unknown \
72    ro.hardware.type=automotive \
73
74# Disable developer options activity embedding
75PRODUCT_SYSTEM_PROPERTIES += \
76    persist.sys.fflag.override.settings_support_large_screen=false
77
78# Set default Bluetooth profiles
79TARGET_SYSTEM_PROP += \
80    packages/services/Car/car_product/properties/bluetooth.prop
81
82PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
83    config.disable_systemtextclassifier=true
84
85###
86### Suggested values for multi-user properties - can be overridden
87###
88
89# Enable headless system user mode
90PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
91    ro.fw.mu.headless_system_user?=true
92
93# Enable User HAL integration
94# NOTE: when set to true, VHAL must also implement the user-related properties,
95# otherwise CarService will ignore it
96PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
97    android.car.user_hal_enabled?=true
98
99### end of multi-user properties ###
100
101# Overlay for Google network and fused location providers
102$(call inherit-product, device/sample/products/location_overlay.mk)
103$(call inherit-product-if-exists, frameworks/webview/chromium/chromium.mk)
104$(call inherit-product, packages/services/Car/car_product/build/car_base.mk)
105
106# Window Extensions
107$(call inherit-product, $(SRC_TARGET_DIR)/product/window_extensions.mk)
108
109# Overrides
110PRODUCT_BRAND := generic
111PRODUCT_DEVICE := generic
112PRODUCT_NAME := generic_car_no_telephony
113
114PRODUCT_IS_AUTOMOTIVE := true
115
116PRODUCT_PROPERTY_OVERRIDES := \
117    ro.config.ringtone=Girtab.ogg \
118    ro.config.notification_sound=Tethys.ogg \
119    ro.config.alarm_alert=Oxygen.ogg \
120    $(PRODUCT_PROPERTY_OVERRIDES) \
121
122PRODUCT_PROPERTY_OVERRIDES += \
123    keyguard.no_require_sim=true
124
125# TODO(b/198516172): Find a better location to add this read only property
126# It is added here to check the functionality, will be updated in next CL
127PRODUCT_SYSTEM_PROPERTIES += \
128    ro.android.car.carservice.overlay.packages?=com.android.car.resources.vendor;com.google.android.car.resources.vendor;
129
130# vendor layer can override this
131PRODUCT_SYSTEM_PROPERTIES += \
132    ro.android.car.carservice.package?=com.android.car.updatable
133
134# Update with PLATFORM_VERSION_MINOR_INT update
135PRODUCT_SYSTEM_PROPERTIES += ro.android.car.version.platform_minor=0
136
137# Automotive specific packages
138PRODUCT_PACKAGES += \
139    CarFrameworkPackageStubs \
140    CarService \
141    CarShell \
142    CarDialerApp \
143    CarDocumentsUI \
144    CarRadioApp \
145    OverviewApp \
146    CarLauncher \
147    CarSystemUI \
148    LocalMediaPlayer \
149    CarMediaApp \
150    CarMessengerApp \
151    CarHTMLViewer \
152    CarMapsPlaceholder \
153    CarLatinIME \
154    CarSettings \
155    CarUsbHandler \
156    RotaryIME \
157    RotaryPlayground \
158    android.car.builtin \
159    car-frameworks-service \
160    libcarservicehelperjni \
161    com.android.car.procfsinspector \
162    com.android.permission \
163
164# RROs
165PRODUCT_PACKAGES += \
166    CarPermissionControllerRRO \
167    CarSystemUIRRO \
168
169# CarSystemUIPassengerOverlay is an RRO package required for enabling unique look
170# and feel for Passenger(Secondary) User.
171ifeq ($(ENABLE_PASSENGER_SYSTEMUI_RRO), true)
172PRODUCT_PACKAGES += CarSystemUIPassengerOverlay
173endif  # ENABLE_PASSENGER_SYSTEMUI_RRO
174
175# System Server components
176# Order is important: if X depends on Y, then Y should precede X on the list.
177PRODUCT_SYSTEM_SERVER_JARS += car-frameworks-service
178# TODO: make the order optimal by appending 'car-frameworks-service' at the end
179# after its dependency 'services'. Currently the order is violated because this
180# makefile is included before AOSP makefile.
181PRODUCT_BROKEN_SUBOPTIMAL_ORDER_OF_SYSTEM_SERVER_JARS := true
182
183# Boot animation
184PRODUCT_COPY_FILES += \
185    packages/services/Car/car_product/bootanimations/bootanimation-832.zip:system/media/bootanimation.zip
186
187PRODUCT_LOCALES := \
188    en_US \
189    af_ZA \
190    am_ET \
191    ar_EG ar_XB \
192    as_IN \
193    az_AZ \
194    be_BY \
195    bg_BG \
196    bn_BD \
197    bs_BA \
198    ca_ES \
199    cs_CZ \
200    da_DK \
201    de_DE \
202    el_GR \
203    en_AU en_CA en_GB en_IN en_XA \
204    es_ES es_US \
205    et_EE \
206    eu_ES \
207    fa_IR \
208    fi_FI \
209    fil_PH \
210    fr_CA fr_FR \
211    gl_ES \
212    gu_IN \
213    hi_IN \
214    hr_HR \
215    hu_HU \
216    hy_AM \
217    id_ID \
218    is_IS \
219    it_IT \
220    iw_IL \
221    ja_JP \
222    ka_GE \
223    kk_KZ \
224    km_KH km_MH \
225    kn_IN \
226    ko_KR \
227    ky_KG \
228    lo_LA \
229    lv_LV \
230    lt_LT \
231    mk_MK \
232    ml_IN \
233    mn_MN \
234    mr_IN \
235    ms_MY \
236    my_MM \
237    ne_NP \
238    nl_NL \
239    no_NO \
240    or_IN \
241    pa_IN \
242    pl_PL \
243    pt_BR pt_PT \
244    ro_RO \
245    ru_RU \
246    si_LK \
247    sk_SK \
248    sl_SI \
249    sq_AL \
250    sr_RS \
251    sv_SE \
252    sw_TZ \
253    ta_IN \
254    te_IN \
255    th_TH \
256    tr_TR \
257    uk_UA \
258    ur_PK \
259    uz_UZ \
260    vi_VN \
261    zh_CN zh_HK zh_TW \
262    zu_ZA
263
264PRODUCT_BOOT_JARS += \
265    android.car.builtin
266
267USE_CAR_FRAMEWORK_APEX ?= false
268
269ifeq ($(USE_CAR_FRAMEWORK_APEX),true)
270    PRODUCT_PACKAGES += com.android.car.framework
271
272    PRODUCT_APEX_BOOT_JARS += com.android.car.framework:android.car-module
273    PRODUCT_APEX_SYSTEM_SERVER_JARS += com.android.car.framework:car-frameworks-service-module
274
275    $(call soong_config_set,bootclasspath,car_bootclasspath_fragment,true)
276
277    PRODUCT_HIDDENAPI_STUBS := android.car-module.stubs
278    PRODUCT_HIDDENAPI_STUBS_SYSTEM := android.car-module.stubs.system
279    PRODUCT_HIDDENAPI_STUBS_TEST := android.car-module.stubs.test
280else # !USE_CAR_FRAMEWORK_APEX
281    PRODUCT_BOOT_JARS += android.car
282    PRODUCT_PACKAGES += android.car CarServiceUpdatableNonModule car-frameworks-service-module
283    PRODUCT_SYSTEM_SERVER_JARS += car-frameworks-service-module
284
285    PRODUCT_HIDDENAPI_STUBS := android.car-stubs-dex
286    PRODUCT_HIDDENAPI_STUBS_SYSTEM := android.car-system-stubs-dex
287    PRODUCT_HIDDENAPI_STUBS_TEST := android.car-test-stubs-dex
288endif # USE_CAR_FRAMEWORK_APEX
289
290# Disable Prime Shader Cache in SurfaceFlinger to make it available faster
291PRODUCT_PROPERTY_OVERRIDES += \
292    service.sf.prime_shader_cache=0
293