欢迎光临
我们一直在努力

Android-EDLA 对pm list features方式的测试添加过滤逻辑

Android-EDLA 对pm list features方式的测试添加过滤逻辑

CTS 测试中的 hasFeature方法如下:

public static boolean hasFeature(ITestDevice device, String feature) throws Exception {
String features = device.executeShellCommand("pm list features");
StringTokenizer featureToken = new StringTokenizer(features, "\\n");
while (featureToken.hasMoreTokens()) {
if (("feature:" + feature).equals(featureToken.nextToken())) {
return true;
}
}
return false;
}

修改位置: frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java#getSystemAvailableFeatures

@Override
public @NonNull ParceledListSlice<FeatureInfo> getSystemAvailableFeatures() {
Slog.d("stb-debug-pms", "getSystemAvailableFeatures calling !! ");
// allow instant applications
ArrayList<FeatureInfo> res;
res = new ArrayList<>(mAvailableFeatures.size() + 1);
res.addAll(mAvailableFeatures.values());
final FeatureInfo fi = new FeatureInfo();
fi.reqGlEsVersion = SystemProperties.getInt("ro.opengles.version",
FeatureInfo.GL_ES_VERSION_UNDEFINED);
res.add(fi);

// ==========remove android.software.secure_lock_screen ==========
if ( SystemProperties.getBoolean("persist.sys.stb.edlatest", false)){
String targetFeatureToRemove = "android.software.secure_lock_screen";
Iterator<FeatureInfo> iterator = res.iterator();
while (iterator.hasNext()) {
FeatureInfo featureInfo = iterator.next();
if (targetFeatureToRemove.equals(featureInfo.name)) {
Slog.d("stb-debug-pms", "Intercepted and removed feature: " + targetFeatureToRemove);
iterator.remove();
break;
}
}
}
// ==========remove android.software.secure_lock_screen ==========
return new ParceledListSlice<>(res);
}

效果:
执行 adb shell pm list features 时将不再显示该条目,CTS 测试中的 hasFeature 也会自然返回 false。

如果对你有帮助,就一键三连呗(关注+点赞+收藏),我会持续更新更多干货~~

赞(0)
未经允许不得转载:171主机测评 » Android-EDLA 对pm list features方式的测试添加过滤逻辑
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址