【问题标题】:Ant, Error inflating class android.support.v7.widget.RecyclerViewAnt,膨胀类 android.support.v7.widget.RecyclerView 时出错
【发布时间】:2015-09-30 00:58:26
【问题描述】:

让我们创建一个干净的新项目:

$ mkdir ApiTest
$ android create project --target android-22 --name ApiTest \
 --path ./ApiTest --activity MyActivity --package com.example.apitest

仅将RecyclerView 添加到布局中,以便res/layout/main.xml 看起来:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <android.support.v7.widget.RecyclerView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

${ANDROID_SDK_PATH}/extras/android/support/v7/复制支持库:

$ ls ApiTest/libs/
android-support-v4.jar            android-support-v7-cardview.jar
android-support-v7-appcompat.jar  android-support-v7-recyclerview.jar

构建和安装:

$ ant debug
$ adb install -r bin/ApiTest-debug.apk

当我打开 Activity 时会引发异常:

09-28 20:02:02.346: E/AndroidRuntime(28688): FATAL EXCEPTION: main
09-28 20:02:02.346: E/AndroidRuntime(28688): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.apitest/com.example.apitest.MyActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView
09-28 20:02:02.346: E/AndroidRuntime(28688):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2357)
09-28 20:02:02.346: E/AndroidRuntime(28688):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2419)
...

这里有什么问题?

我使用 openjdk java 编译器在 64 位 Fedora 21 上编译:

$ java -version
openjdk version "1.8.0_60"
OpenJDK Runtime Environment (build 1.8.0_60-b27)
OpenJDK 64-Bit Server VM (build 25.60-b23, mixed mode)

【问题讨论】:

    标签: android ant


    【解决方案1】:

    我忽略了有两种类型的 Android 支持库。没有资源的库(例如 android-support-v4)和有资源的库(例如 appcompatrecyclerview)。见Adding Support Libraries

    要使用命令行和 ant 构建工具添加 recyclerview 库(带有资源),首先将整个 recyclerview 目录从 Android SDK 目录复制到您的项目目录并更新 ant 构建文件

    $ cd ${ANDROID_PROJECT_DIR}
    $ cp -r ${ANDROID_SDK_DIR}/extras/android/support/v7/recyclerview/ .
    $ android update lib-project --path recyclerview --target android-22
    $ android update project --path . -l recyclerview
    

    第三个命令应该将行 android.library=true 添加到 recyclerview/project.properties ,在我的情况下没有,所以我手动添加了它。当我使用 appcompat 库尝试它时,它按预期工作。

    另一件事是recyclerview/src 目录中丢失了。所以简单地创建

    $ mkdir recyclerview/src
    

    就是这样。现在它编译并运行。

    $ ant clean && ant debug && adb install -r bin/ApiTest-debug.apk
    

    这些链接帮助了我:

    【讨论】:

    • 解决了我与您的指南有关的问题。谢谢!我尝试了很多方法:更新支持库,以及将库从 extras 复制到项目库目录。没有工作。解决方法是将recyclerview复制到项目并创建依赖,只复制android-support-v4.jar到libs/
    猜你喜欢
    • 2014-10-18
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2015-01-06
    • 2017-07-29
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多