如何通过Ant添加Android Support Library依赖解决NavigationView编译错误?
在Ant构建的Android项目中添加Android Support Design库依赖
你遇到的问题本质是NavigationView属于Android Support Design库,而Ant不像Gradle那样能自动拉取和管理依赖,得手动把这个库的资源和jar包引入到项目里。下面是具体的操作步骤:
1. 下载Android Support Design库
打开Android SDK Manager,找到并下载对应组件:
Android Support Repository(用于获取最新的支持库资源)Android Support Library(选择26.x版本,和你原本计划用的Gradle依赖版本保持一致)
下载完成后,在你的Android SDK目录下,extras/android/support/design文件夹就是我们需要的Design库所在位置。
2. 复制库文件到你的Ant项目
把Design库的核心文件复制到项目对应目录:
- Jar包:复制
design/libs/support-design-26.x.x.jar到你项目的libs目录(如果没有libs文件夹就新建一个)。 - 资源文件:复制
design/res目录下的所有子文件夹(比如drawable、layout、values等)到你项目的res目录下。注意:如果有同名文件夹(比如项目本身就有values),直接合并进去,不要覆盖原有文件;若出现资源名冲突(比如同名的style或drawable),需要手动调整冲突的资源名称或内容,优先保留项目自身的需求。
额外提醒:Design库依赖v4和v7基础支持库,所以也要确保你的
libs目录下有support-v4-26.x.x.jar和appcompat-v7-26.x.x.jar(同样从SDK的extras/android/support/v4和appcompat-v7目录下复制)。
3. 配置Ant构建脚本(build.xml)
多数Ant的Android项目模板会自动处理libs目录下的jar包,但如果你的build.xml没有相关配置,需要添加以下内容来引入jar包:
<!-- 定义库jar包的路径 --> <path id="project.libraries"> <fileset dir="libs" includes="*.jar" /> </path> <!-- 在编译任务中引用这个路径 --> <target name="compile"> <javac destdir="bin/classes" encoding="UTF-8"> <src path="src" /> <classpath refid="project.libraries" /> <!-- 还要包含Android SDK的核心类库 --> <classpath path="${android.jar}" /> </javac> </target>
4. 检查布局文件的命名空间
确保你的根布局(也就是DrawerLayout)已经声明了app命名空间,否则app:menu属性还是会报错。修改后的布局开头应该类似:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 你的LJAbsoluteLayout --> <com.nchsoftware.library.LJAbsoluteLayout android:id="@+id/main_window" android:layout_width="match_parent" android:layout_height="match_parent"/> <!-- NavigationView --> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout>
5. 清理并重新构建
最后执行Ant命令清理旧构建文件,再重新编译:
ant clean ant debug # 或者执行 ant release 打正式包
这样应该就能解决No resource identifier found for attribute 'menu'的错误了。
内容的提问来源于stack exchange,提问作者Dongming.Zang
相关产品推荐
相关产品推荐

