From 5c4040ce240d3e938895a67f1158067f00c49273 Mon Sep 17 00:00:00 2001 From: Luke Huang Date: Mon, 16 Dec 2019 20:18:20 +0800 Subject: [PATCH] Add new configuration loading path for apex module Cronet Add an additional loading path which is used for libs permission xml providing from Cronet apex module. Bug: 145474221 Bug: 139397529 Test: build Test: manual test with Cronet Change-Id: I103539a45fe9182f84a79bfe45a6172d94068690 Merged-In: I02541eb2d4808d69ab8cb2d6a48cf8aaa39c86dc --- core/java/com/android/server/SystemConfig.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java index 7cd3e95c6499c..4c399f8b23589 100644 --- a/core/java/com/android/server/SystemConfig.java +++ b/core/java/com/android/server/SystemConfig.java @@ -24,6 +24,7 @@ import android.content.pm.FeatureInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Environment; +import android.os.FileUtils; import android.os.Process; import android.os.SystemProperties; import android.os.storage.StorageManager; @@ -417,6 +418,19 @@ public class SystemConfig { Environment.getSystemExtDirectory(), "etc", "sysconfig"), ALLOW_ALL); readPermissions(Environment.buildPath( Environment.getSystemExtDirectory(), "etc", "permissions"), ALLOW_ALL); + + // Skip loading configuration from apex if it is not a system process. + if (!isSystemProcess()) { + return; + } + // Read configuration of libs from apex module. + // TODO(146407631): Use a solid way to filter apex module folders? + for (File f: FileUtils.listFilesOrEmpty(Environment.getApexDirectory())) { + if (f.isFile() || f.getPath().contains("@")) { + continue; + } + readPermissions(Environment.buildPath(f, "etc", "permissions"), ALLOW_LIBS); + } } void readPermissions(File libraryDir, int permissionFlag) {