android 源码工程中添加系统应用引v7包问题

本文记录了解决Android应用开发过程中遇到的支持v7包编译错误的方法,包括如何正确配置mk文件以避免资源冲突,并介绍了google overlay机制的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需要开发手机管家系统级应用,开发过程中需要用到support v7包,故在android.mk文件中加了如下代码:

LOCAL_STATIC_JAVA_LIBRARIES := \

android-support-v7-appcompat \
android-support-v4

结果报错,提示v7包中r文件缺失,网上查找资料,发现需要添加对就的res到mk文件中,继续加如下代码:

LOCAL_RESOURCE_DIR += \
$(LOCAL_PATH)/res \

$(LOCAL_PATH)/../../../../prebuilts/sdk/current/support/v7/appcompat/res

还是报错,v7的资源倒是不报错了,管家应用的values中资源找不到了,网上查询,发现是因为google的overlay机制搞得鬼,需要使用aapt将v7包编译到本应用中,不然自己的资源会被覆盖,自己这么理解 的,于是添加 如下代码:

LOCAL_AAPT_FLAGS := \
    --auto-add-overlay \

    --extra-packages android.support.v7.appcompat

问题解决。


mk文件中语法理解的还是不清楚,需要继续学习。

============================================================== 兼容实际上是为了让android 2.2、android 2.3 android 3.0支持android 4.0中才有的东西的。 比如说Actionbar。如果你不用兼容的话,你开发含actionbar的程序就不可以在2.2上运行了 Support v11 v12 v13 v14 v17 Android 4.2.2 v18 Android 4.3.1 v21 Android 5.0.1 v22 Android 5.1.1 v23 Android 6.0 这个工程默认的是v21 Anroid 5.0.1, 如果需要编译(v22 Android 5.1.1 或者 v23 Android 6.0)版本,请 分别将values-v22 或者 values-v23 复制到 appcompat\res. 这是因为编译appcompat 需要SDK的部分资源,如果你需要编译v22版本的 appcompat-v7-v22.jar, 却将values-v23 复制到appcompat\res,那么会提示部分资源不存在,除非你选用v23的编译工具。 导入工程的方法见: http://blog.csdn.net/judyge/article/details/49228579 ============================================================== 出现这样的错误,说明你的工程缺乏appcompat V7 使用adt开发新建一个Android app,选择支持的SDK版本如果小于11(Android3.0)就会报如下错误。 error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'. 官网给出的答案是: https://developer.android.com/tools/support-library/setup.html#add-library 简单来说就是新的eclipse默认模版主题UI需要使用比较高版本api,如果需要支持低版本,需要导入appCompact库来支持,网上一般给出的解法: File->Import (android-sdk\extras\android\support\v7). Choose "appcompat" Project-> properties->Android. In the section library "Add" and choose "appCompat" 括stackoverflow上也有很多人遇到,但很多人通过这个解决,但我就是没办法解决。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值