Dear Android Building Group, I am currently trying to extend the network security configuration to apply certificate transparency by default. Therefore I am extending the AOSP/frameworks/base/core/java/android/net/config directory. I would also like to use some external libraries within this directory, which turned out to be a big problem for me. For a concrete example, let's say I want to use the gson library.
First I will provide my way of implementing the gson library for AOSP/frameworks/base/core/java/android/net/config (1). The provided way should be the closest to a working implementation, still, it breaks on boot. After that, I will provide a very similar implementation for using gson in AOSP/frameworks/base/services/core/java/com/android/server (2), which works fine. *Questions:* 1. Why does (1) break and how can I fix it? *Specifications:* PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=11 TARGET_PRODUCT=aosp_x86_64 TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_ARCH=x86_64 TARGET_ARCH_VARIANT=x86_64 TARGET_2ND_ARCH=x86 TARGET_2ND_ARCH_VARIANT=x86_64 HOST_ARCH=x86_64 HOST_2ND_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-4.19.0-10-amd64-x86_64-Debian-GNU/Linux-10-(buster) HOST_CROSS_OS=windows HOST_CROSS_ARCH=x86 HOST_CROSS_2ND_ARCH=x86_64 HOST_BUILD_TYPE=release BUILD_ID=RQ2A.210405.005 OUT_DIR=out PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl hardware/google/camera hardware/google/camera/devices/EmulatedCamera device/generic/goldfish device/generic/goldfish-opengl *Implementation (1):* + AOSP/prebuilts/misc/common/gson + Android.pb + gson-2.8.7.jar *AOSP/prebuilts/misc/common/gson/Android.pb* *__________* + java_import { + name: "gson", + installable: false, + host_supported: true, + jars: ["gson-2.8.7.jar"], + } *__________* *AOSP/frameworks/base/Android.bp* *__________* *...* java_library { name: "framework-minus-apex", defaults: ["framework-defaults"], srcs: [":framework-non-updatable-sources"], installable: true, javac_shard_size: 150, required: [ "framework-platform-compat-config", "libcore-platform-compat-config", "services-platform-compat-config", "documents-ui-compat-config", ], + libs: ["framework-updatable-stubs-module_libs_api","gson",], ... __________ *AOSP/frameworks/base/core/java/android/net/config/NetworkSecurityTrustManager.java* __________ ... import com.google.gson.Gson; ... public void checkserverTrusted(...)...{ ... + android.util.Log.d(TAG,"About to instantiate Gson object."); + Gson gson = new Gson(); + android.util.Log.d(TAG,"Gson object has been successfully instantiated."); ... } ... __________ Building the source is no problem. However, running the artifacts crashes the system: ... 05-31 12:25:23.842 792 1374 D TAG: About to instantiate Gson object. --------- beginning of crash 05-31 12:25:23.847 792 1374 E AndroidRuntime: FATAL EXCEPTION: Thread-4 05-31 12:25:23.847 792 1374 E AndroidRuntime: Process: com.android.networkstack.process, PID: 792 05-31 12:25:23.847 792 1374 E AndroidRuntime: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available ... *Implementation (2):* + AOSP/prebuilts/misc/common/gson + Android.pb + gson-2.8.7.jar *AOSP/prebuilts/misc/common/gson/Android.pb* __________ + java_import { + name: "gson", + installable: false, + host_supported: true, + jars: ["gson-2.8.7.jar"], + } __________ *AOSP/frameworks/base/services/core/Android.bp* __________ java_library_static { name: "services.core.unboosted", ... static_libs: [ + "gson", "time_zone_distro", "time_zone_distro_installer", "android.hardware.authsecret-V1.0-java", ... __________ *AOSP/frameworks/base/services/core/java/com/android/server/am/ActiveServices.java* __________ ... import com.google.gson.Gson; ... public ActiveServices(ActivityManagerService service) { mAm = service; int maxBg = 0; try { maxBg = Integer.parseInt(SystemProperties.get("ro.config.max_starting_bg", "0")); } catch(RuntimeException e) { } mMaxStartingBackground = maxBg > 0 ? maxBg : ActivityManager.isLowRamDeviceStatic() ? 1 : 8; + + android.util.Log.d(TAG,"About to instantiate Gson object."); + Gson gson = new Gson(); + android.util.Log.d(TAG,"Gson object has been successfully instantiated."); } ... For (2) everything works as expected. And both logs can be observed in logcat. Can you please help me to fix (1) or at least to understand the problem? Thanks a lot! Regards, John -- -- You received this message because you are subscribed to the "Android Building" mailing list. To post to this group, send email to android-building@googlegroups.com To unsubscribe from this group, send email to android-building+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-building?hl=en --- You received this message because you are subscribed to the Google Groups "Android Building" group. To unsubscribe from this group and stop receiving emails from it, send an email to android-building+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/android-building/CADnfz%2BdQd6%2BFHnCNmmsC1YA7Uov34Gd1A3VfVxrDC3yuTCAPDQ%40mail.gmail.com.