让我们创建一个干净的新项目:
$ 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
当我打开活动异常引发:
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)
...
怎么了?
我在64位Fedora 21上使用openjdk编译java:
$ 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支持库。没有资源的库(例如android-support-v4)和有资源的库(例如appcompat和recyclerview)。参见添加支持库。
要使用命令行和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
这些链接帮助了我:
- 如何添加Android库与资源而不使用Eclipse
- 使用库项目编译android项目失败,缺少类。jar