使用Android非sdk接口时
关键日志如下:
Accessing hidden fieldLandroid/os/Message;->flags:I (greylist, JNI)
因工作原因需要将自己增加的一些接口暴露给第三方应用使用,此时我们需要改动AOSP源码。
Android11前修改:
diff --git a/build/soong/java/hiddenapi_singleton.go b/build/soong/java/hiddenapi_singleton.go
index 223059275f..b08810b76c 100644
--- a/build/soong/java/hiddenapi_singleton.go
+++ b/build/soong/java/hiddenapi_singleton.go
@@ -270,6 +270,9 @@ func flagsRule(ctx android.SingletonContext) android.Path {
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-force-blacklist.txt")).
FlagWithInput("--greylist-packages ",
android.PathForSource(ctx, "frameworks/base/config/hiddenapi-greylist-packages.txt")).
+ FlagWithInput("--whitelist ",
+ android.PathForSource(ctx, "frameworks/base/config/hiddenapi-sdk.txt")).
+
FlagWithOutput("--output ", tempPath)
commitChangeForRestat(rule, tempPath, outputPath)
diff --git a/frameworks/base/config/hiddenapi-sdk.txt b/frameworks/base/config/hiddenapi-sdk.txt
new file mode 100755
index 0000000000..4308fcc67a
--- /dev/null
+++ b/frameworks/base/config/hiddenapi-sdk.txt
Android12修改:
diff --git a/idh.code/build/soong/apex/platform_bootclasspath_test.go b/idh.code/build/soong/apex/platform_bootclasspath_test.go
old mode 100644
new mode 100755
index bc354790fbf..fefa28d02b6
--- a/idh.code/build/soong/apex/platform_bootclasspath_test.go
+++ b/idh.code/build/soong/apex/platform_bootclasspath_test.go
@@ -74,6 +74,9 @@ func TestPlatformBootclasspath_Fragments(t *testing.T) {
unsupported_packages: [
"unsupported-packages.txt",
],
+ sdk: [
+ "sdk.txt",
+ ],
},
}
@@ -124,6 +127,9 @@ func TestPlatformBootclasspath_Fragments(t *testing.T) {
unsupported_packages: [
"bar-unsupported-packages.txt",
],
+ sdk: [
+ "bar-sdk.txt",
+ ],
},
}
diff --git a/idh.code/build/soong/java/hiddenapi_modular.go b/idh.code/build/soong/java/hiddenapi_modular.go
old mode 100644
new mode 100755
index 654ebb743e3..dfe344b77e4
--- a/idh.code/build/soong/java/hiddenapi_modular.go
+++ b/idh.code/build/soong/java/hiddenapi_modular.go
@@ -395,6 +395,9 @@ type HiddenAPIFlagFileProperties struct {
// Marks each signature in every package in the referenced files as being unsupported.
Unsupported_packages []string `android:"path"`
+
+ // Marks each signature in the referenced files as being sdk.
+ Sdk []string `android:"path"`
}
type hiddenAPIFlagFileCategory struct {
@@ -498,6 +501,16 @@ var HiddenAPIFlagFileCategories = []*hiddenAPIFlagFileCategory{
command.FlagWithInput("--unsupported ", path).Flag("--packages ")
},
},
+ // See HiddenAPIFlagFileProperties.Sdk
+ {
+ PropertyName: "sdk",
+ propertyValueReader: func(properties *HiddenAPIFlagFileProperties) []string {
+ return properties.Sdk
+ },
+ commandMutator: func(command *android.RuleBuilderCommand, path android.Path) {
+ command.FlagWithInput("--sdk ", path)
+ },
+ },
}
// FlagFilesByCategory maps a hiddenAPIFlagFileCategory to the paths to the files in that category.
diff --git a/idh.code/frameworks/base/boot/Android.bp b/idh.code/frameworks/base/boot/Android.bp
old mode 100644
new mode 100755
index e8d88a531b5..d1969934046
--- a/idh.code/frameworks/base/boot/Android.bp
+++ b/idh.code/frameworks/base/boot/Android.bp
@@ -124,6 +124,9 @@ platform_bootclasspath {
unsupported_packages: [
"hiddenapi/hiddenapi-unsupported-packages.txt",
],
+ sdk: [
+ "hiddenapi/hiddenapi-sdk.txt",
+ ],
},
dists: [
diff --git a/idh.code/frameworks/base/boot/hiddenapi/hiddenapi-sdk.txt b/idh.code/frameworks/base/boot/hiddenapi/hiddenapi-sdk.txt
new file mode 100755
hiddenapi-sdk.txt可参考:
http://aospxref.com/android-10.0.0_r47/xref/frameworks/base/config/hiddenapi-greylist.txt