AOSP12非SDK接口限制放开

使用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​​​​​​​

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值