Some HALs, like a.h.graphics.mapper, are always passthrough and are
used by nearly all app processes. Preload those in Zygote to save app
startup time and share more pages between processes. This has the side
effect of also preloading a bunch of HIDL-related system and vndk
libraries that would also otherwise be loaded independently by every
app.
An earlier attempt at this change tried to preload the HAL via a
static initializer in libui.so (which is already preloaded, and which
is the immediate client of the HAL). But several other non-Zygote
processes also use libui.so, and didn't have SELinux permission to
access the device nodes used by the HAL. This version uses an explicit
call from Zygote to preload the HAL, instead of doing it implicitly.
Bug: 62353585
Test: check that a.h.graphics.mapper is in /proc/`pid zygote64`/maps
Change-Id: I42405c3b6cdf1ae412039140d656d15a6d4f8882
(cherry picked from commit 1fe1dc0131)
305 lines
10 KiB
Plaintext
305 lines
10 KiB
Plaintext
cc_library_shared {
|
|
name: "libandroid_runtime",
|
|
|
|
cflags: [
|
|
"-Wno-unused-parameter",
|
|
"-Wno-non-virtual-dtor",
|
|
"-Wno-maybe-uninitialized",
|
|
"-Wno-parentheses",
|
|
|
|
"-DGL_GLEXT_PROTOTYPES",
|
|
"-DEGL_EGLEXT_PROTOTYPES",
|
|
|
|
"-DU_USING_ICU_NAMESPACE=0",
|
|
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wno-error=deprecated-declarations",
|
|
"-Wunused",
|
|
"-Wunreachable-code",
|
|
|
|
// necessary for Clang as the GL bindings need to turn
|
|
// off a GCC warning that Clang doesn't know.
|
|
"-Wno-unknown-pragmas",
|
|
|
|
// TODO: Linear blending should be enabled by default, but we are
|
|
// TODO: making it an opt-in while it's a work in progress
|
|
//"-DANDROID_ENABLE_LINEAR_BLENDING",
|
|
],
|
|
|
|
cppflags: ["-Wno-conversion-null"],
|
|
|
|
srcs: [
|
|
"AndroidRuntime.cpp",
|
|
"com_android_internal_content_NativeLibraryHelper.cpp",
|
|
"com_google_android_gles_jni_EGLImpl.cpp",
|
|
"com_google_android_gles_jni_GLImpl.cpp", // TODO: .arm
|
|
"android_app_Activity.cpp",
|
|
"android_app_ApplicationLoaders.cpp",
|
|
"android_app_NativeActivity.cpp",
|
|
"android_app_admin_SecurityLog.cpp",
|
|
"android_opengl_EGL14.cpp",
|
|
"android_opengl_EGLExt.cpp",
|
|
"android_opengl_GLES10.cpp",
|
|
"android_opengl_GLES10Ext.cpp",
|
|
"android_opengl_GLES11.cpp",
|
|
"android_opengl_GLES11Ext.cpp",
|
|
"android_opengl_GLES20.cpp",
|
|
"android_opengl_GLES30.cpp",
|
|
"android_opengl_GLES31.cpp",
|
|
"android_opengl_GLES31Ext.cpp",
|
|
"android_opengl_GLES32.cpp",
|
|
"android_database_CursorWindow.cpp",
|
|
"android_database_SQLiteCommon.cpp",
|
|
"android_database_SQLiteConnection.cpp",
|
|
"android_database_SQLiteGlobal.cpp",
|
|
"android_database_SQLiteDebug.cpp",
|
|
"android_graphics_drawable_AnimatedVectorDrawable.cpp",
|
|
"android_graphics_drawable_VectorDrawable.cpp",
|
|
"android_view_DisplayEventReceiver.cpp",
|
|
"android_view_DisplayListCanvas.cpp",
|
|
"android_view_HardwareLayer.cpp",
|
|
"android_view_InputChannel.cpp",
|
|
"android_view_InputDevice.cpp",
|
|
"android_view_InputEventReceiver.cpp",
|
|
"android_view_InputEventSender.cpp",
|
|
"android_view_InputQueue.cpp",
|
|
"android_view_KeyCharacterMap.cpp",
|
|
"android_view_KeyEvent.cpp",
|
|
"android_view_MotionEvent.cpp",
|
|
"android_view_PointerIcon.cpp",
|
|
"android_view_RenderNode.cpp",
|
|
"android_view_RenderNodeAnimator.cpp",
|
|
"android_view_Surface.cpp",
|
|
"android_view_SurfaceControl.cpp",
|
|
"android_view_SurfaceSession.cpp",
|
|
"android_view_TextureView.cpp",
|
|
"android_view_ThreadedRenderer.cpp",
|
|
"android_view_VelocityTracker.cpp",
|
|
"android_text_AndroidCharacter.cpp",
|
|
"android_text_AndroidBidi.cpp",
|
|
"android_text_StaticLayout.cpp",
|
|
"android_os_Debug.cpp",
|
|
"android_os_GraphicsEnvironment.cpp",
|
|
"android_os_HwBinder.cpp",
|
|
"android_os_HwBlob.cpp",
|
|
"android_os_HwParcel.cpp",
|
|
"android_os_HwRemoteBinder.cpp",
|
|
"android_os_MemoryFile.cpp",
|
|
"android_os_MessageQueue.cpp",
|
|
"android_os_Parcel.cpp",
|
|
"android_os_SELinux.cpp",
|
|
"android_os_seccomp.cpp",
|
|
"android_os_SystemClock.cpp",
|
|
"android_os_SystemProperties.cpp",
|
|
"android_os_Trace.cpp",
|
|
"android_os_UEventObserver.cpp",
|
|
"android_os_VintfObject.cpp",
|
|
"android_os_VintfRuntimeInfo.cpp",
|
|
"android_net_LocalSocketImpl.cpp",
|
|
"android_net_NetUtils.cpp",
|
|
"android_net_TrafficStats.cpp",
|
|
"android_nio_utils.cpp",
|
|
"android_util_AssetManager.cpp",
|
|
"android_util_Binder.cpp",
|
|
"android_util_EventLog.cpp",
|
|
"android_util_MemoryIntArray.cpp",
|
|
"android_util_Log.cpp",
|
|
"android_util_PathParser.cpp",
|
|
"android_util_Process.cpp",
|
|
"android_util_StringBlock.cpp",
|
|
"android_util_XmlBlock.cpp",
|
|
"android_util_jar_StrictJarFile.cpp",
|
|
"android_graphics_Canvas.cpp",
|
|
"android_graphics_Picture.cpp",
|
|
"android/graphics/Bitmap.cpp",
|
|
"android/graphics/BitmapFactory.cpp",
|
|
"android/graphics/Camera.cpp",
|
|
"android/graphics/CanvasProperty.cpp",
|
|
"android/graphics/ColorFilter.cpp",
|
|
"android/graphics/DrawFilter.cpp",
|
|
"android/graphics/FontFamily.cpp",
|
|
"android/graphics/FontUtils.cpp",
|
|
"android/graphics/CreateJavaOutputStreamAdaptor.cpp",
|
|
"android/graphics/GIFMovie.cpp",
|
|
"android/graphics/GraphicBuffer.cpp",
|
|
"android/graphics/Graphics.cpp",
|
|
"android/graphics/HarfBuzzNGFaceSkia.cpp",
|
|
"android/graphics/Interpolator.cpp",
|
|
"android/graphics/MaskFilter.cpp",
|
|
"android/graphics/Matrix.cpp",
|
|
"android/graphics/Movie.cpp",
|
|
"android/graphics/MovieImpl.cpp",
|
|
"android/graphics/NinePatch.cpp",
|
|
"android/graphics/NinePatchPeeker.cpp",
|
|
"android/graphics/Paint.cpp",
|
|
"android/graphics/Path.cpp",
|
|
"android/graphics/PathMeasure.cpp",
|
|
"android/graphics/PathEffect.cpp",
|
|
"android/graphics/Picture.cpp",
|
|
"android/graphics/BitmapRegionDecoder.cpp",
|
|
"android/graphics/Region.cpp",
|
|
"android/graphics/Shader.cpp",
|
|
"android/graphics/SurfaceTexture.cpp",
|
|
"android/graphics/Typeface.cpp",
|
|
"android/graphics/Utils.cpp",
|
|
"android/graphics/YuvToJpegEncoder.cpp",
|
|
"android/graphics/pdf/PdfDocument.cpp",
|
|
"android/graphics/pdf/PdfEditor.cpp",
|
|
"android/graphics/pdf/PdfRenderer.cpp",
|
|
"android/graphics/pdf/PdfUtils.cpp",
|
|
"android_media_AudioRecord.cpp",
|
|
"android_media_AudioSystem.cpp",
|
|
"android_media_AudioTrack.cpp",
|
|
"android_media_DeviceCallback.cpp",
|
|
"android_media_JetPlayer.cpp",
|
|
"android_media_RemoteDisplay.cpp",
|
|
"android_media_ToneGenerator.cpp",
|
|
"android_hardware_Camera.cpp",
|
|
"android_hardware_camera2_CameraMetadata.cpp",
|
|
"android_hardware_camera2_legacy_LegacyCameraDevice.cpp",
|
|
"android_hardware_camera2_legacy_PerfMeasurement.cpp",
|
|
"android_hardware_camera2_DngCreator.cpp",
|
|
"android_hardware_display_DisplayViewport.cpp",
|
|
"android_hardware_HardwareBuffer.cpp",
|
|
"android_hardware_Radio.cpp",
|
|
"android_hardware_SensorManager.cpp",
|
|
"android_hardware_SerialPort.cpp",
|
|
"android_hardware_SoundTrigger.cpp",
|
|
"android_hardware_UsbDevice.cpp",
|
|
"android_hardware_UsbDeviceConnection.cpp",
|
|
"android_hardware_UsbRequest.cpp",
|
|
"android_hardware_location_ActivityRecognitionHardware.cpp",
|
|
"android_util_FileObserver.cpp",
|
|
"android/opengl/poly_clip.cpp", // TODO: .arm
|
|
"android/opengl/util.cpp",
|
|
"android_server_NetworkManagementSocketTagger.cpp",
|
|
"android_server_Watchdog.cpp",
|
|
"android_ddm_DdmHandleNativeHeap.cpp",
|
|
"android_backup_BackupDataInput.cpp",
|
|
"android_backup_BackupDataOutput.cpp",
|
|
"android_backup_FileBackupHelperBase.cpp",
|
|
"android_backup_BackupHelperDispatcher.cpp",
|
|
"android_app_backup_FullBackup.cpp",
|
|
"android_content_res_ObbScanner.cpp",
|
|
"android_content_res_Configuration.cpp",
|
|
"android_animation_PropertyValuesHolder.cpp",
|
|
"com_android_internal_net_NetworkStatsFactory.cpp",
|
|
"com_android_internal_os_FuseAppLoop.cpp",
|
|
"com_android_internal_os_PathClassLoaderFactory.cpp",
|
|
"com_android_internal_os_Zygote.cpp",
|
|
"com_android_internal_os_ZygoteInit.cpp",
|
|
"com_android_internal_util_VirtualRefBasePtr.cpp",
|
|
"com_android_internal_view_animation_NativeInterpolatorFactoryHelper.cpp",
|
|
"hwbinder/EphemeralStorage.cpp",
|
|
"fd_utils.cpp",
|
|
],
|
|
|
|
include_dirs: [
|
|
// we need to access the private Bionic header
|
|
// <bionic_tls.h> in com_google_android_gles_jni_GLImpl.cpp
|
|
"bionic/libc/private",
|
|
|
|
"external/skia/include/private",
|
|
"external/skia/src/codec",
|
|
"external/skia/src/core",
|
|
"external/skia/src/effects",
|
|
"external/skia/src/image",
|
|
"external/skia/src/images",
|
|
"frameworks/base/media/jni",
|
|
"libcore/include",
|
|
"system/media/camera/include",
|
|
"system/media/private/camera/include",
|
|
],
|
|
|
|
static_libs: [
|
|
"libgif",
|
|
"libseccomp_policy",
|
|
"libselinux",
|
|
"libcrypto",
|
|
"libgrallocusage",
|
|
],
|
|
|
|
shared_libs: [
|
|
"libmemtrack",
|
|
"libandroidfw",
|
|
"libappfuse",
|
|
"libbase",
|
|
"libnativehelper",
|
|
"liblog",
|
|
"libcutils",
|
|
"libdebuggerd_client",
|
|
"libutils",
|
|
"libbinder",
|
|
"libui",
|
|
"libgraphicsenv",
|
|
"libgui",
|
|
"libsensor",
|
|
"libinput",
|
|
"libcamera_client",
|
|
"libcamera_metadata",
|
|
"libskia",
|
|
"libsqlite",
|
|
"libEGL",
|
|
"libGLESv1_CM",
|
|
"libGLESv2",
|
|
"libvulkan",
|
|
"libziparchive",
|
|
"libETC1",
|
|
"libhardware",
|
|
"libhardware_legacy",
|
|
"libselinux",
|
|
"libicuuc",
|
|
"libmedia",
|
|
"libaudioclient",
|
|
"libjpeg",
|
|
"libusbhost",
|
|
"libharfbuzz_ng",
|
|
"libz",
|
|
"libpdfium",
|
|
"libimg_utils",
|
|
"libnetd_client",
|
|
"libradio",
|
|
"libsoundtrigger",
|
|
"libminikin",
|
|
"libprocessgroup",
|
|
"libnativebridge",
|
|
"libradio_metadata",
|
|
"libnativeloader",
|
|
"libmemunreachable",
|
|
"libhidlbase",
|
|
"libhidltransport",
|
|
"libhwbinder",
|
|
"libvintf",
|
|
"libnativewindow",
|
|
|
|
"libhwui",
|
|
"libdl",
|
|
],
|
|
|
|
local_include_dirs: ["android/graphics"],
|
|
export_include_dirs: [
|
|
".",
|
|
"include",
|
|
],
|
|
export_shared_lib_headers: [
|
|
// AndroidRuntime.h depends on nativehelper/jni.h
|
|
"libnativehelper",
|
|
|
|
// our headers include libnativewindow's public headers
|
|
"libnativewindow",
|
|
|
|
// GraphicsJNI.h includes hwui headers
|
|
"libhwui",
|
|
],
|
|
|
|
product_variables: {
|
|
debuggable: {
|
|
cflags: ["-D__ANDROID_DEBUGGABLE__"]
|
|
},
|
|
treble: {
|
|
cflags: ["-D__ANDROID_TREBLE__"]
|
|
},
|
|
},
|
|
}
|