0
$\begingroup$

Rosanswers logo

Hello,

I'm trying to get ROS (Kinetic) and Android working together in Android Studio. I followed the tutorial http://wiki.ros.org/android/Tutorials/kinetic/Installation%20-%20Android%20Studio%20Development%20Environment

I created a new project, edited the gradle files but I get this error when I try to build the app and I cannot find anything about this.

Error:Android tasks have already been created.
This happens when calling android.applicationVariants,
android.libraryVariants or android.testVariants.
Once these methods are called, it is not possible to
continue configuring the model.

Any idea ?

Thanks in advance :)


Originally posted by TristanKpka on ROS Answers with karma: 13 on 2017-10-20

Post score: 1


Original comments

Comment by jubeira on 2017-10-20:
Hello! Could you please specify at what point you got that error?

Comment by TristanKpka on 2017-10-20:
I got that error when I build the app. I've edited my answer.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Instead of placing the ros-android plugin in the bottom level Gradle file, leave the bottom level as is. Just add android_10 to the dependencies and remove the espresso from AndroidTestCompile.

Your bottom level script should look like something like this:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.project.androidrostest"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'org.ros.android_core:android_10:[0.3,0.4)'    // Added dependency!!!
}

In your top-level script, replace the buildscript as the tutorial indicates:

buildscript {
    apply from: "https://github.com/rosjava/android_core/raw/kinetic/buildscript.gradle"
}

And add the following:

subprojects {
    apply plugin: 'ros-android'

    afterEvaluate { project ->
        android {
            // Exclude a few files that are duplicated across our dependencies and
            // prevent packaging Android applications.
            packagingOptions {
                exclude "META-INF/LICENSE.txt"
                exclude "META-INF/NOTICE.txt"
            }
        }
    }
}

Note: you might need to remove the android:icon from the manifest or indicate to replace it with another one, as android_10 already provides a default.

Let me know if it worked. If it does, I will update the tutorial.


Originally posted by jubeira with karma: 1054 on 2017-10-20

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by TristanKpka on 2017-10-23:
Thank you. I added your code plus tools:node="replace" in the manifest. I am compiling a project that needs dependencies.

Comment by jubeira on 2017-10-23:
Cool! Tutorial updated: http://wiki.ros.org/android/Tutorials/kinetic/Installation%20-%20Android%20Studio%20Development%20Environment

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.