所以我开始使用Android Studio,我想为我的项目使用数字选择器库。特别是这一个:
https://github.com/SimonVT/android-numberpicker
这是一个maven项目,我的项目是基于gradle的。为了在我的应用程序中使用此项目,我需要将其转换为gradle库项目。简单!或者我认为......
我使用以下文章作为指导:
http://www.androidsx.com/how-to-link-an-android-library-project-with-gradle-in-android-studio/ http://ryanharter.com/blog/2013/07/17/migrating-android-projects-to-gradle/
我的目录结构如下:
android-numberpicker/
- android-numberpicker/
- src/
- main/
- res/
- java/
- build.gradle
- settings.gradle
- build.gradle
我的设置。草稿文件
include ':android-numberpicker'
我的build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.3'
}
}
apply plugin: 'android-reporting'
/**
* Task to generate a gradle wrapper.
*/
task wrapper(type: Wrapper) {
gradleVersion = '1.9'
}
我的android-numberpicker / build.gradle文件如下:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.3'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 15
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 15
}
}
现在我还没有尝试将它与我的项目或android工作室集成。我只是想看看我是否可以自己构建项目。换句话说,我想知道我是否已将项目移植到正确的gradle。但是,当我运行./gradlew build(我正在使用gradle包装器)时,我收到一系列错误,例如:
NumberPicker.java:48: error: cannot find symbol
import android.view.accessibility.AccessibilityNodeProvider;
^
不知道为什么gradle会这样做?
我在原始项目pom文件中注意到以下依赖项:
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
我原本无视,因为我原以为'android-library'插件会自动解析android sdk。但是,当我收到上述错误时,我决定将它添加到我的android-numberpicker / build.gradle中,如下所示:
dependencies {
compile "com.google.android:android:+"
}
我使用了编译,因为android-library似乎无法识别为有效范围。运行./gradlew build时出现了不同的错误:
错误:Debug对Android API级别15有间接依赖性,但变体'debug'的minSdkVersion是API级别7
同样,我不确定为什么会收到此错误。关于这个问题已经到了一堵砖墙。任何帮助将不胜感激。
干杯
答案 0 :(得分:0)
根据AccessibilityNodeProvider
JavaDoc,该类已在API 16中添加,但您已在构建文件中设置了7的minSdkVersion。
答案 1 :(得分:0)
进行下面提到的所有修正并使用gradle同步您的项目。
1)从build.gradle文件中删除此依赖项
compile "com.google.android:android:+"
2)应用android插件后从 android-numberpicker / build.gradle 中删除它
repositories {
mavenCentral()
}
没有使用它,你已经在root gradle文件中定义了。
3)将android-numberpicker / build.gradle中的 minSdkVersion和compileSdkVersion 更改为 16 ,因为已在API级别16中添加了类
检查此参考文献 http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeProvider.html
在完成所有这些更改后,将您的项目与gradle同步,如果您遇到任何问题,请与我们联系。
编辑:
我在NumberPicker库代码中找到了这个:
class SupportAccessibilityNodeProvider {
AccessibilityNodeProviderImpl mProvider;
private SupportAccessibilityNodeProvider() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mProvider = new AccessibilityNodeProviderImpl();
}
}
public boolean performAction(int virtualViewId, int action, Bundle arguments) {
if (mProvider != null) {
return mProvider.performAction(virtualViewId, action, arguments);
}
return false;
}
public void sendAccessibilityEventForVirtualView(int virtualViewId, int eventType) {
if (mProvider != null) mProvider.sendAccessibilityEventForVirtualView(virtualViewId, eventType);
}
}
显示库为较低版本处理它,因此您可以将compileSDKVersion设置为16,将minSdkVersion设置为7/8。
还必须在项目中使用依赖iside build.gradle文件
添加支持v4库compile 'com.android.support:support-v4:19.0.0'