This is exactly what I did and it works. Thanks for the help! Dan Willemsen schrieb am Mittwoch, 23. Juni 2021 um 07:46:58 UTC+2:
> *AOSP/build/make/core/tasks/check_boot_jars/package_allowed_list.txt* > > > Be careful if you're planning on being compatible with the CDD > <https://source.android.com/compatibility/cdd.html>, particularly section > 3.6 > <https://source.android.com/compatibility/android-cdd#3_6_api_namespaces>. > Adding new classes to the bootclasspath can cause compatibility issues with > apps, which is why that check exists (and is your subsequent problem). > > One method mentioned in the CDD to work around this is to add your new > packages to a separate library that apps can opt into. That doesn't really > work if you're using it in modified framework classes that get loaded into > every app though. There's one example with bouncycastle that gets > repackaged > <https://cs.android.com/android/platform/superproject/+/master:external/bouncycastle/Android.bp;drc=f8a7462f1d6d713c4fa611e5f3be8d90ad287df0;l=116> > > to be inside a different namespace in order to not conflict with apps. That > may be possible with jarjar <https://github.com/google/jarjar> too (which > the build system has support for), I'm not sure what the scripts > <https://cs.android.com/android/platform/superproject/+/master:external/bouncycastle/srcgen_platform/generate_android_src.sh> > used > for bouncycastle are doing differently. > > - Dan > > On Tue, Jun 22, 2021 at 10:10 PM Yolo Pucky <[email protected]> wrote: > >> So I actually got a solution to my problem mentioned on 09.06.2021. >> However, I have another problem now, that is closely related to the >> aforementioned. >> >> >> ------------------------------------------------------------------------------------------------------------------------------------------- >> BEGINNING OF SOLUTION >> >> ------------------------------------------------------------------------------------------------------------------------------------------- >> First here is my solution to my problem from 09.06.2021: >> The blueprint in *AOSP/prebuilts/misc/common/gson/Android.bp *remains. >> >> *AOSP/frameworks/base/Android.bp* >> *...* >> java_library { >> name: "framework-minus-apex", >> ... >> libs: [ >> "framework-updatable-stubs-module_libs_api", >> "gson", >> ], >> static_libs: [ >> // If MimeMap ever becomes its own APEX, then this dependency would need >> to be removed >> // in favor of an API stubs dependency in java_library "framework" below. >> "mimemap", >> "gson", >> ], >> ... >> } >> ... >> >> *AOSP/build/make/core/tasks/check_boot_jars/package_allowed_list.txt* >> # Boot jar package name allowed list. >> # Each line is interpreted as a regular expression. >> ... >> com\.google\.gson\..* >> com\.google\.gson.* >> ... >> >> ------------------------------------------------------------------------------------------------------------------------------------------- >> END OF SOLUTION >> >> ------------------------------------------------------------------------------------------------------------------------------------------- >> >> >> ------------------------------------------------------------------------------------------------------------------------------------------- >> BEGINNING OF SUBSEQUENT PROBLEM >> >> ------------------------------------------------------------------------------------------------------------------------------------------- >> First, note that I exchanged the Gson library with the Jackson library by >> now. >> Building custom Android and using the Jackson library is no problem >> anymore. Though I only want to use the library within the AOSP i.e. I do >> not want third-party apps installed on my custom Android to see those >> libraries. >> The way I include the library leads to the problem that third-party apps >> that import classes or methods from these libraries will always try to >> import them from the Android library instead of the library the apps bring >> themselves. >> Since the library I include within my custom Android might differ from >> the library brought by the third-party apps, it does not necessarily >> contain all required classes or methods for those apps. Subsequently, these >> apps break: >> *// Caused by: java.lang.NoSuchMethodError: No interface method >> getterVisibility()LX/15g; in class >> Lcom/fasterxml/jackson/annotation/JsonAutoDetect; or its super classes >> (declaration of 'com.fasterxml.jackson.annotation.JsonAutoDetect' appears >> in /system/framework/framework.jar!classes4.dex)* >> >> How can I make my included library within the framework.jar only visible >> to AOSP internals? >> >> >> >> >> *-------------------------------------------------------------------------------------------------------------------------------------------END >> >> OF SUBSEQUENT >> PROBLEM-------------------------------------------------------------------------------------------------------------------------------------------Thanks >> >> again!Regards,John* >> Yolo Pucky schrieb am Mittwoch, 9. Juni 2021 um 04:26:53 UTC+2: >> >>> 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 <(847)%20792-1374> E AndroidRuntime: FATAL >>> EXCEPTION: Thread-4 >>> 05-31 12:25:23.847 792 1374 <(847)%20792-1374> E AndroidRuntime: >>> Process: com.android.networkstack.process, PID: 792 >>> 05-31 12:25:23.847 792 1374 <(847)%20792-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 [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> 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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/android-building/014b3755-da4e-4cfc-ad23-623957c6dda6n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/android-building/014b3755-da4e-4cfc-ad23-623957c6dda6n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- -- You received this message because you are subscribed to the "Android Building" mailing list. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/android-building/33deaab7-ac07-43b9-80f1-125bd5742b35n%40googlegroups.com.
