Android Native Mobile First取决于太多的库?

时间:2016-01-21 18:58:08

标签: android dependencies ibm-cloud ibm-mobilefirst ibm-mobile-services

我目前正在玩Bluemix和Mobile First Platform,研究它是否适合我作为我正在开发的Android应用程序后端的需求。

从一个空的Android项目开始,我只成功实现了IBM Push Notification。我跟着这个官方sample

我的下一步是实现lib Couchbase Lite for Android(到目前为止,我将使用的数据放在我自己的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'
}

当我编译并看到以下错误时,我感到惊讶,我认为该错误与too many dependencies密切相关。

  

错误:任务执行失败   ':应用程序:transformClassesWithDexForDebug&#39 ;.   com.android.build.api.transform.TransformException:   com.android.ide.common.process.ProcessException:   org.gradle.process.internal.ExecException:进程'命令   ' 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)和 base (com.google.android.gms:play-services-base))。

有谁知道这个问题的解决方案是什么?

更新

  1. 这是使用Android Studio创建的基于Gradle的原生Android应用程序。
  2. 我添加couchbase-lite-android依赖项时出现了问题。
  3. 我已经看到lib googleauthentication也取决于整个lib com.google.android.gms:play-services而不是特定的lib。{/ li>

    更新2

    Here是Github项目。拉它并编译。您将看到它编译并成功运行。但是,现在在模块的gradle.build中取消注释couchbase-lite依赖性。现在,构建项目。它会失败。

1 个答案:

答案 0 :(得分:1)

您的问题并不清楚您是在实际开发混合Android应用还是原生应用...

如果您正在开发本机应用并向其添加MFP SDK,那么您应该在Android Studio中创建基于Gradle的Android项目。

如果您正在MobileFirst Studio中开发混合Android应用,那么您有两个选择:

  1. 如果使用MPF 7.0 / 7.1,请尝试添加ProGuard支持,这将有助于减少文件数量并可能解决此问题
  2. 将生成的Android项目导入Android Studio并将其转换为基于Gradle的项目,然后添加Google Play服务。当然,下次在MFP Studio中构建应用程序时,它将不是基于Gradle的,因此您必须重复此步骤。
  3. 您可能已经猜到,MFP目前不支持基于Gradle的项目。