com.android.dex.DexException:多个dex文件定义Lorg/hamcrest/Description
尝试通过Android Studio或我的应用程序上的Gradle命令行进行调试构建/测试时发生.
发布版本(没有测试)工作正常但是一旦包含测试(hamcrest
作为测试库),构建就会因上述错误而失败.
我已经检查了我的模块依赖项,并且没有重复的要求,gradle -q依赖项证实了这一点.
项目settings.gradle
include ':[library module]'
include ':[main module]'
Run Code Online (Sandbox Code Playgroud)
项目build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.9.+'
}
}
allprojects {
repositories {
mavenCentral()
}
}
Run Code Online (Sandbox Code Playgroud)
[library module] build.gradle
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile 'com.google.zxing:core:3.0.+'
compile 'com.bugsnag:bugsnag-android:2.1.1+'
}
Run Code Online (Sandbox Code Playgroud)
[主模块] build.gradle
apply …
Run Code Online (Sandbox Code Playgroud) 我已成功创建了一个Retrofit API Rest客户端,同时进行GET和POST调用,并将其作为后台服务整合到Robospice中.
但是,我希望Robospice服务连接到数据库,并从GET调用异步地保留检索到的对象.使用Retrofit Callback
类似乎是显而易见的方式,但连接到数据库需要Context
,我担心泄漏Context
.
那么,在处理请求之前和之后,让Robospice SpiceService
将数据持久保存到数据库的最佳方法是什么?
使用Android Studio 0.5.9/Gradle 0.9建立应用程序正常工作但升级到Android Studio 0.6.0/Gradle 0.11会导致以下错误.
不知何故,Studio似乎已经失去了解析build.gradle文件顶部的android工具导入的能力.
有人对如何解决这个问题有任何想法吗?
build file 'Users/[me]/Repositories/[project]/[module]/build.gradle': 1: unable to resolve class com.android.builder.DefaultManifestParser @ line 1, column 1.
import com.android.builder.DefaultManifestParser
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:858)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:548)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileScript(DefaultScriptCompilationHandler.java:115)
... 77 more
2014-06-09 10:15:28,537 [ 92905] INFO - .BaseProjectImportErrorHandler - Failed to import Gradle project at '/Users/[me]/Repositories/[project]'
org.gradle.tooling.BuildException: Could not run build action using Gradle distribution 'http://services.gradle.org/distributions/gradle-1.12-all.zip'.
at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:53)
at …
Run Code Online (Sandbox Code Playgroud) 我之前已成功使用Square的Retrofit进行@GET
Web API调用,但是当尝试@BODY
在@POST
调用中发送JSON时,在服务器(Rails)上,JSON显示为参数而不是正文请求.
我的理解是将该@BODY
方法参数添加到正文中的请求中.
知道我做错了什么吗?
WebApi:
@POST("/api/v1/gear/scans.json")
Response postScans(
@Header(HEADER_AUTH) String token,
@Body JsonObject scans
);
Run Code Online (Sandbox Code Playgroud)
提出网络请求:
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer(api_url)
.build();
WebApi webApi = restAdapter.create(AssetsWebApi.class);
Response response = webApi.postScans(auth_token, valid_json);
Run Code Online (Sandbox Code Playgroud) 性能问题 - 如果我有两个相互排斥的视图(例如成功通知/失败通知) - 从性能角度来看,最好使用:
1)parentView.removeView(indexOfChild)
并addView()
在两者之间过渡
2)覆盖两个视图并切换它们的可见性
3) 使用 ViewSwitcher