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 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/014b3755-da4e-4cfc-ad23-623957c6dda6n%40googlegroups.com.

Reply via email to