From 2c5d63439e653c2981841ca819957fbd8a414d54 Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Thu, 9 Apr 2020 09:44:54 -0400 Subject: [PATCH] Create a version_script to explicitly define exported symbols for libhwui The linker script defines both the C and C++ headers exported by libhwui and libskia (included via whole_static_libs). Reducing the surface area makes it clear what libhwui's external dependencies are as well as reducing the binary size by about ~12% (1.04 MB on 64-bit and 789KB on 32-bit builds for the Pixel 3a in userdebug). Test: compiles and links Bug: 150782769 Change-Id: Ia202a12c1605c851c52d953f0db0f4814ade8dfd --- libs/hwui/Android.bp | 5 +++ libs/hwui/libhwui.map.txt | 70 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 libs/hwui/libhwui.map.txt diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index 5c08325a94a00..769afc58f50df 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -603,6 +603,11 @@ cc_library { "android_graphics_jni", ], export_header_lib_headers: ["android_graphics_apex_headers"], + target: { + android: { + version_script: "libhwui.map.txt", + } + }, } cc_library_static { diff --git a/libs/hwui/libhwui.map.txt b/libs/hwui/libhwui.map.txt new file mode 100644 index 0000000000000..73de0d12a60b0 --- /dev/null +++ b/libs/hwui/libhwui.map.txt @@ -0,0 +1,70 @@ +LIBHWUI { + global: + /* listing of all C APIs to be exposed by libhwui to consumers outside of the module */ + ABitmap_getInfoFromJava; + ABitmap_acquireBitmapFromJava; + ABitmap_copy; + ABitmap_acquireRef; + ABitmap_releaseRef; + ABitmap_getInfo; + ABitmap_getDataSpace; + ABitmap_getPixels; + ABitmap_notifyPixelsChanged; + ABitmapConfig_getFormatFromConfig; + ABitmapConfig_getConfigFromFormat; + ABitmap_compress; + ABitmap_getHardwareBuffer; + ACanvas_isSupportedPixelFormat; + ACanvas_getNativeHandleFromJava; + ACanvas_createCanvas; + ACanvas_destroyCanvas; + ACanvas_setBuffer; + ACanvas_clipRect; + ACanvas_clipOutRect; + ACanvas_drawRect; + ACanvas_drawBitmap; + init_android_graphics; + register_android_graphics_classes; + register_android_graphics_GraphicsStatsService; + zygote_preload_graphics; + AMatrix_getContents; + APaint_createPaint; + APaint_destroyPaint; + APaint_setBlendMode; + ARegionIterator_acquireIterator; + ARegionIterator_releaseIterator; + ARegionIterator_isComplex; + ARegionIterator_isDone; + ARegionIterator_next; + ARegionIterator_getRect; + ARegionIterator_getTotalBounds; + ARenderThread_dumpGraphicsMemory; + local: + *; +}; + +LIBHWUI_PLATFORM { + global: + extern "C++" { + /* required by libwebviewchromium_plat_support */ + android::uirenderer::ColorSpaceToADataSpace*; + android::uirenderer::WebViewFunctor_*; + GraphicsJNI::getNativeCanvas*; + SkCanvasStateUtils::ReleaseCanvasState*; + SkColorSpace::toXYZD50*; + SkColorSpace::transferFn*; + /* required by libjnigraphics */ + android::ImageDecoder::*; + android::uirenderer::DataSpaceToColorSpace*; + android::uirenderer::ColorSpaceToADataSpace*; + getMimeType*; + SkAndroidCodec::*; + SkCodec::MakeFromStream*; + SkColorInfo::*; + SkFILEStream::SkFILEStream*; + SkImageInfo::*; + SkMemoryStream::SkMemoryStream*; + }; + local: + *; +};