我目前正在使用 Bluemix 和 Mobile First Platform 研究它是否适合我作为我正在开发的 Android 应用程序后端的需求。
从一个空的 Android 项目开始,我只成功实现了IBM Push Notification
. 我遵循了这个官方样本。
我的下一步是为 Android 实现 lib Couchbase Lite(到目前为止,我将使用的数据放在我自己的 CouchDB 服务中)。为此,我将依赖项添加到 Gradle,因此文件看起来像这样
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "es.woozycoder.android.bluemixpayaround"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile group: 'com.ibm.mobilefirstplatform.clientsdk.android',
name:'core',
version: '1.+',
ext:'aar',
transitive: true
compile group: 'com.ibm.mobilefirstplatform.clientsdk.android',
name: 'push',
version: '1.+',
ext: 'aar',
transitive: true
compile 'com.couchbase.lite:couchbase-lite-android:1.1.0'
}
当我编译并看到以下错误时,我感到惊讶,我认为这与太多依赖项密切相关。
错误:任务“:app:transformClassesWithDexForDebug”执行失败。com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_72 \bin\java.exe'' 以非零退出值 2 结束
上面链接的答案表明,Google Play 服务依赖是问题所在,我同意lib Push 依赖于整个 google-services lib而不仅仅是特定的(我猜那些将是gcm(com.google.android.gms :play-services-gcm) 和基础(com.google.android.gms:play-services-base))。
有没有人知道什么可以解决这个问题?
更新
- 这是使用 Android Studio 创建的基于 Gradle 的原生 Android 应用程序。
- 问题出现在我添加
couchbase-lite-android
依赖项的那一刻。 - 我已经看到该库
googleauthentication
还取决于整个库com.google.android.gms:play-services
,而不仅仅是特定的库。
更新 2
这是 Github 项目。拉它并编译。您会看到它编译并成功运行。但是,现在取消注释模块的gradle.build中的 couchbase-lite 依赖项。现在,构建项目。它会失败。