关于NFC项目中引用系统的android_framework-class.jar包

很多人在开发NFC程序的时候喜欢调用@hide的方法nfcAdapter.setLocalNdefMessage()和nfcAdapter.setLocalNdefMessage();

但是如果实在adt 10.5或以上的eclipse上调用包的时候,会出现conversion to dalvik format failed with error 1这个错误。

我查了很多资料没解决,相信很多人也很郁闷,ok,你们可以欢乐了!


解决方法:

1. 下载一个带有adt 10.0的eclipse,然后引用一个sdk,版本号如下图,或者小于下图,主要的是

Android SDK-Tools <reversion 10,Android SDK Platform-tools <reversion 3, 以及你所用的sdk(我用的是2.3.3 <reversion 1);



2. 然后再引用包就可以了,记住调整顺序在android2.3.3的包的顺序到最下方,如图:



ok 运行成功,有帮助到你请回复我一下吧,哥写了这么久博客没一个回复的啊

<think>我们正在讨论Android构建系统中的PRODUCT_COPY_FILES变量,特别是与NFC配置文件复制相关的规则。 根据引用[1]和[2]中的信息,Android.mk和device.mk在添加模块和配置时扮演重要角色。PRODUCT_COPY_FILES是Android构建系统中用于复制文件的通用机制,通常用于将主机上的文件复制到目标设备的特定位置。 语法规则: PRODUCT_COPY_FILES += \ "源文件路径:目标文件路径" \ "源文件路径:目标文件路径" 注意: 1. 源文件路径是相对于Android源码树的路径(可以是绝对路径,但通常使用相对路径)。 2. 目标文件路径是设备上的绝对路径。 3. 每行一个复制规则,用空格和反斜杠连接(实际上每行是一个字符串,用空格分隔,但通常写成多行用反斜杠换行)。 对于NFC配置文件,通常我们可能需要将NFC相关的配置文件(如libnfc-nci.conf)复制到系统的/etc/目录(或其他目录)下。 例如,如果我们有一个NFC配置文件位于设备目录下的`device/<vendor>/<device>/nfc/libnfc-nci.conf`,并且我们希望将其复制到设备的`/system/etc/libnfc-nci.conf`,则可以这样写: PRODUCT_COPY_FILES += \ device/<vendor>/<device>/nfc/libnfc-nci.conf:system/etc/libnfc-nci.conf 注意:在Android构建系统中,目标路径的`system`通常对应设备的`/system`分区。 另外,引用[2]中提到rc文件(init脚本)和xml配置文件等,NFC的配置可能也涉及这些文件,复制方法类似。 关于复制规则的一些注意事项: - 源文件必须存在,否则构建会失败。 - 目标路径的目录结构会在构建过程中自动创建(如果不存在)。 - 多个复制规则可以写在一个PRODUCT_COPY_FILES变量中,也可以分散在多个地方(但要注意重复复制可能导致覆盖)。 在Android.mk中,我们通常不会直接使用PRODUCT_COPY_FILES,而是将其放在产品定义文件(如device.mk)中。在device.mk中,我们通过类似上面的语法来添加复制规则。 例如,在device.mk中: ``` # NFC configuration PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/nfc/libnfc-nci.conf:$(TARGET_COPY_OUT_SYSTEM)/etc/libnfc-nci.conf ``` 这里使用了变量: - LOCAL_PATH:当前设备目录的路径。 - TARGET_COPY_OUT_SYSTEM:表示目标路径为/system,这样写是为了兼容性(因为有些设备可能将系统分区挂载到其他位置,但此变量会指向正确的分区路径)。 因此,对于NFC配置文件的复制,我们通常在产品定义文件中(如device.mk)使用PRODUCT_COPY_FILES来设置。 相关问题: 1. 如何确保PRODUCT_COPY_FILES中的文件被正确复制到目标设备? 2. 如果复制多个NFC配置文件,如何处理可能的覆盖问题? 3.Android构建系统中,除了PRODUCT_COPY_FILES,还有哪些文件复制机制? 4. 如何为不同的设备定制不同的NFC配置文件?</think>### Android构建配置中的`PRODUCT_COPY_FILES`语法解析(NFC配置文件示例) 在Android构建系统中,`PRODUCT_COPY_FILES`是**设备级配置文件**(如`device.mk`)中用于定义文件复制规则的关键变量,特别适用于NFC等硬件配置文件的部署。 #### 一、核心语法结构 ```makefile PRODUCT_COPY_FILES += \ "<源路径>:<目标路径>" \ "<源路径>:<目标路径>" ``` - **源路径**:Android源码树中的文件路径(绝对或相对路径) - **目标路径**:设备文件系统中的绝对路径 - **分隔符**:英文冒号`:`(严格区分大小写) - **续行符**:反斜杠`\`(每行末尾) #### 二、NFC配置文件典型示例 ```makefile # 将NFC主配置文件复制到系统分区 PRODUCT_COPY_FILES += \ device/vendor/device_name/nfc/libnfc-nxp.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf # 复制NFC固件到固件分区 PRODUCT_COPY_FILES += \ device/vendor/device_name/nfc/firmware/sn100u.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/sn100u.bin # 复制NFC权限配置文件 PRODUCT_COPY_FILES += \ device/vendor/device_name/nfc/com.android.nfc_extras.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/com.android.nfc_extras.xml ``` #### 三、关键机制解析 1. **分区目标变量**(必须使用) - `$(TARGET_COPY_OUT_SYSTEM)` → `/system` - `$(TARGET_COPY_OUT_VENDOR)` → `/vendor` - `$(TARGET_COPY_OUT_ODM)` → `/odm` - *错误示例*:直接写`system/etc`(可能导致分区挂载失败) 2. **路径匹配规则** - 源路径支持通配符:`device/*/nfc/*.conf` - 目标路径必须是具体文件名(不支持目录复制) - *特殊处理*:NFC固件需匹配芯片型号(如`sn100u.bin` vs `pn553.bin`) 3. **执行时机** - 在`build/core/Makefile`中处理复制操作 - 文件被打到对应分区的`image`(`system.img`, `vendor.img`等) - 最终通过fastboot或OTA更新写入设备[^1] #### 四、NFC配置特殊注意事项 1. **权限控制** NFC配置文件通常需要特定权限(如`nfc`组),需同步修改`file_contexts`: ```sepolicy /vendor/etc/libnfc-nxp\.conf u:object_r:nfc_config_file:s0 ``` 2. **版本兼容** 不同Android版本路径差异: - Android 8.0+:必须使用`$(TARGET_COPY_OUT_VENDOR)` - Android 7.x:允许放在`system/etc` 3. **芯片厂商关联** 需匹配NFC控制器型号(如NXP PN5xx系列 vs ST ST21系列): ```makefile ifeq ($(BOARD_NFC_CHIPSET), "nxp") PRODUCT_COPY_FILES += device/.../nfc_nxp.conf:... endif ``` #### 五、调试验证方法 1. 检查编译输出: ```bash out/target/product/<device>/obj/PACKAGING/target_files_intermediates/*/MTD.txt ``` 2.系统镜像: ```bash simg2img system.img system_raw.img && mount -o loop system_raw.img /mnt ``` 3. 运行时验证: ```bash adb shell ls -Z /vendor/etc/libnfc-*.conf ``` --- ### 相关问题 1. 如何为不同硬件平台定制NFC配置文件复制规则? 2. `PRODUCT_COPY_FILES`与`LOCAL_COPY_FILES`在Android构建中有何区别? 3.NFC配置文件复制冲突时,构建系统如何处理优先级? 4. 如何确保NFC配置文件的SE Linux策略正确应用? 5. 在Treble架构下,Vendor分区中的NFC配置有哪些特殊约束?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值