请选择 进入手机版 | 继续访问电脑版

雨滴科技技术论坛

 找回密码
 立即注册
查看: 110|回复: 3

Android5.1 如何使AAPT将最佳 匹配资源编译打包

[复制链接]

425

主题

1864

帖子

7629

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7629
QQ
扫一扫,手机访问本帖
发表于 2020-7-29 15:59:11 | 显示全部楼层 |阅读模式
平台:MTK6735,Android5.1
环境:竖屏橫用 800X1280,10.1寸。打印服务创建界面时报错:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_expand_more.xml from drawable resource ID #0x7f020003


检查对应资源都是存在的。编译的资源ID 也是存在的。


经过测试不同DPI发现可以消除此现象。但是图标过大,
经过分析:

系统会通过屏幕height和width来算出project默认应该支持的density:
device/mediatek/common/aapt/aapt_config.mk


  1. # Setting aapt config by lcm height and width if it is not defined
  2. ifeq (,$(strip $($eval $(PRODUCT_AAPT_PREF_CONFIG))))
  3.   ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),320_240)
  4.     PRODUCT_AAPT_PREF_CONFIG := ldpi
  5.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),400_240)
  6.     PRODUCT_AAPT_PREF_CONFIG := ldpi
  7.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),432_240)
  8.     PRODUCT_AAPT_PREF_CONFIG := ldpi
  9.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),480_320)
  10.     PRODUCT_AAPT_PREF_CONFIG := mdpi
  11.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),640_480)
  12.     PRODUCT_AAPT_PREF_CONFIG := mdpi
  13.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),800_480)
  14.     PRODUCT_AAPT_PREF_CONFIG := hdpi
  15.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),854_480)
  16.     PRODUCT_AAPT_PREF_CONFIG := hdpi
  17.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),960_540)
  18.     PRODUCT_AAPT_PREF_CONFIG := hdpi
  19.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),1024_600)
  20.     PRODUCT_AAPT_PREF_CONFIG := hdpi
  21.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),1280_720)
  22.     PRODUCT_AAPT_PREF_CONFIG := xhdpi
  23.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),1280_768)
  24.     PRODUCT_AAPT_PREF_CONFIG := xhdpi
  25.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),1280_800)
  26.     PRODUCT_AAPT_PREF_CONFIG := xhdpi
  27.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),1920_1080)
  28.     PRODUCT_AAPT_PREF_CONFIG := xxhdpi
  29.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),1920_1200)
  30.     PRODUCT_AAPT_PREF_CONFIG := xxhdip
  31.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),2560_1440)
  32.     PRODUCT_AAPT_PREF_CONFIG := xxxhdpi
  33.   else ifeq ($(LCM_HEIGHT)_$(LCM_WIDTH),2560_1600)
  34.     PRODUCT_AAPT_PREF_CONFIG := xxxhdpi
  35.   endif
  36. endif


  37. # Slim rom use sw599dp for rom optimization
  38. ifeq (yes,$(strip $(MTK_GMO_ROM_OPTIMIZE)))
  39.   PRODUCT_AAPT_CONFIG += sw599dp
  40. endif
复制代码
如果该默认值不符合您的要求,
可以在下方直接定义
PRODUCT_AAPT_PREF_CONFIG := mdpi

PRODUCT_AAPT_PREF_CONFIG只能设置一种dpi
回复

使用道具 举报

392

主题

2087

帖子

7514

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7514
发表于 2020-7-31 09:23:22 | 显示全部楼层
原来如此
回复

使用道具 举报

465

主题

1853

帖子

7487

积分

论坛元老

Rank: 8Rank: 8

积分
7487
发表于 2020-8-1 17:39:46 | 显示全部楼层
sf_lcd_density 这个值应该怎么算出来?
回复 支持 反对

使用道具 举报

465

主题

1853

帖子

7487

积分

论坛元老

Rank: 8Rank: 8

积分
7487
发表于 2020-8-1 17:40:44 | 显示全部楼层
lcd_density的算法:
分辨率的平方根除以尺寸inch.
举个例子: 1280*720分辨率的屏,尺寸为5 inch
lcd_density = √ ̄1280*1280 +720*720   / 5
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
在线咨询
咨询热线
0755-26787502-8006/8016
扫一扫二维码
直接访问本站

QQ|Archiver|手机版|小黑屋|雨滴科技  

GMT+8, 2020-8-15 21:37 , Processed in 0.063579 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表