网站seo外包公司,wordpress slide,企业网站推荐,温州建设集团有限公司网站使用展锐提供的代码编译出来的固件#xff0c;不包含DeskClock等应用。 之前也遇到过这个情况#xff0c;只是时间太久忘记了#xff0c;在这里再次记录#xff01;
frameworks/native/data/etc/android.app.remove.xml?xml version1.0 encodingut… 使用展锐提供的代码编译出来的固件不包含DeskClock等应用。 之前也遇到过这个情况只是时间太久忘记了在这里再次记录
frameworks/native/data/etc/android.app.remove.xml?xml version1.0 encodingutf-8?permissionscustomized-restricted-app configpersist.remove.app value1!-- path nameMessages/path namemessaging/path nameMessagesGo/ --path nameFMRadio/path nameSprdFMRadio/path nameDreamFMRadioPrebuilt/path nameDreamSoundRecorderPrebuilt/path nameEmail2/path nameGMailGo/path nameGMailGo_1G/path nameGmail2/path nameGmail2_2G/path nameDeskClock/ 需要去掉path nameSprdDeskClock/path nameDeskClockGoogle/path nameSprdCalendar/path nameSprdCalendarProvider/path nameSprdCalendarProviderPrebuilt/path nameCalendar/path nameCalendarGoogle//customized-restricted-app
/permissions然后记录一下原因。
首先日志检索 DeskClock 发现只有这么三行很好定位到源码。
18:11:19.933 SystemConfig D readCustomizedRestrictedPathsByConfig DeskClock, apkType 0 18:11:19.934 SystemConfig D readCustomizedRestrictedPathsByConfig SprdDeskClock, apkType 0 18:11:19.935 SystemConfig D readCustomizedRestrictedPathsByConfig DeskClockGoogle, apkType 0 从xml文件中读取权限651 private void readPermissionsFromXml(File permFile, int permissionFlag) {652 FileReader permReader null;653 try {654 permReader new FileReader(permFile);655 } catch (FileNotFoundException e) {656 Slog.w(TAG, Couldnt find or open permissions file permFile);657 return;658 }659 Slog.i(TAG, Reading permissions from permFile);660 661 final boolean lowRam ActivityManager.isLowRamDeviceStatic();662 663 try {664 XmlPullParser parser Xml.newPullParser();665 parser.setInput(permReader);666 667 int type;668 while ((typeparser.next()) ! parser.START_TAG669 type ! parser.END_DOCUMENT) {670 ;671 }682 final boolean allowAll permissionFlag ALLOW_ALL;686 final boolean allowAppConfigs (permissionFlag ALLOW_APP_CONFIGS) ! 0;687 final boolean allowPrivappPermissions (permissionFlag ALLOW_PRIVAPP_PERMISSIONS)688 ! 0;689 final boolean allowOemPermissions (permissionFlag ALLOW_OEM_PERMISSIONS) ! 0;690 final boolean allowApiWhitelisting (permissionFlag ALLOW_HIDDENAPI_WHITELISTING)698 while (true) {699 XmlUtils.nextElement(parser);700 if (parser.getEventType() XmlPullParser.END_DOCUMENT) {701 break;702 }703 704 String name parser.getName();705 if (name null) {706 XmlUtils.skipCurrentTag(parser);707 continue;708 }709 switch (name) {
...可以看出customized-restricted-app就是获取xml文件中的name
1277 case customized-restricted-app: {
1278 String config parser.getAttributeValue(null, config);
1279 String value parser.getAttributeValue(null, value);
1280 if (TextUtils.isEmpty(config) || TextUtils.isEmpty(value)) {
1281 Slog.w(TAG, Tag config config or value value in
1282 permFile at parser.getPositionDescription() is empty);
1283 XmlUtils.skipCurrentTag(parser);
1284 }
1285 ListString restrictedPermission Arrays.asList(config, value);
1286 mCustomizedRestrictedPaths.put(restrictedPermission,
1287 readCustomizedRestrictedPathsByConfig(parser));
1288
1289 } break;读取限制的xml文件
1676 private HashMapString, Integer readCustomizedRestrictedPathsByConfig(XmlPullParser parser)
1677 throws IOException, XmlPullParserException {
1678 HashMapString, Integer customizedRestrictedPaths new HashMapString, Integer();
1679 int packageDepth parser.getDepth();
1680 int type;
1681 int depth parser.getDepth();
1682 while (XmlUtils.nextElementWithin(parser, depth)) {
1683 String tagName parser.getName();
1684 if (tagName.equals(path)) {
1685 String name parser.getAttributeValue(null, name);
1686 Integer apkType 0;
1687 try {
1688 apkType Integer.valueOf(parser.getAttributeValue(null, type));
1689 } catch (NumberFormatException e) {
1690 }日志在这里打印
1691 Slog.d(TAG, readCustomizedRestrictedPathsByConfig name
1692 , apkType apkType);
1693 customizedRestrictedPaths.put(name, apkType);
1694 } else {
1695 Slog.w(TAG, Unknown element under customized-restricted-app:
1696 parser.getName());
1697 }
1698 }
1699 return customizedRestrictedPaths;
1700 }然后检索一下 customized-restricted-app 来看一下定义
device/sprd/xxx/xxx/module/app/md.mk#add for not install unused app
PRODUCT_PRODUCT_PROPERTIES persist.remove.app1
PRODUCT_COPY_FILES \frameworks/native/data/etc/android.app.remove.xml:product/etc/permissions/android.app.remove.xml