From 6c39cc2f1020c3949e23ab467ff6508e24b5a72d Mon Sep 17 00:00:00 2001
From: Daniel Stonier <d.stonier@gmail.com>
Date: Wed, 25 Feb 2015 01:41:51 +0900
Subject: [PATCH] upgrade catkin indigo create scripts for android

---
 cmake/rosjava.cmake.em                        |  6 +---
 .../create_android_project.py                 |  2 +-
 .../android_package/CMakeLists.txt.in         |  9 +++---
 .../templates/android_package/build.gradle.in | 29 +++++++++++++++++--
 .../templates/android_project/build.gradle.in | 15 ++++++----
 5 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/cmake/rosjava.cmake.em b/cmake/rosjava.cmake.em
index 0688758..b5ac677 100644
--- a/cmake/rosjava.cmake.em
+++ b/cmake/rosjava.cmake.em
@@ -126,11 +126,7 @@ macro(catkin_android_setup)
     _rosjava_env()
     find_gradle()
     if( ${ARGC} EQUAL 0 )
-      if(CMAKE_BUILD_TYPE STREQUAL "Release")
-        set(gradle_tasks "assembleRelase")
-      else()
-        set(gradle_tasks "assembleDebug")
-      endif()
+      return() # Nothing to do (typically no subprojects created yet)
     else()
       set(gradle_tasks ${ARGV})
     endif()
diff --git a/src/rosjava_build_tools/create_android_project.py b/src/rosjava_build_tools/create_android_project.py
index fc1bdaf..3dfcbfe 100644
--- a/src/rosjava_build_tools/create_android_project.py
+++ b/src/rosjava_build_tools/create_android_project.py
@@ -100,7 +100,7 @@ def create_gradle_package_files(args, author, is_library, sdk_version):
     '''
       This is almost a direct copy from catkin_create_pkg.
     '''
-    plugin_name = "android-library" if is_library else "android"
+    plugin_name = "com.android.library" if is_library else "com.android.application"
     try:
         package_name = args.name[0].lower()
         package_path = os.path.abspath(os.path.join(os.getcwd(), package_name))
diff --git a/src/rosjava_build_tools/templates/android_package/CMakeLists.txt.in b/src/rosjava_build_tools/templates/android_package/CMakeLists.txt.in
index 46f3c06..00803f3 100644
--- a/src/rosjava_build_tools/templates/android_package/CMakeLists.txt.in
+++ b/src/rosjava_build_tools/templates/android_package/CMakeLists.txt.in
@@ -11,6 +11,7 @@ project(%(repo_name)s)
 
 find_package(catkin REQUIRED rosjava_build_tools)
 # Set the gradle targets you want catkin's make to run by default
+# e.g. usually catkin_android_setup(assembleRelease uploadArchives)
 catkin_android_setup(assembleRelease uploadArchives)
 catkin_package()
 
@@ -19,8 +20,6 @@ catkin_package()
 # Installation
 ##############################################################################
 
-# If you are deploying android libraries (.aar's) uncomment this and
-# change this to match the maven group name you have specified in the 
-# allprojects closure the root build.gradle
-#install(DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/rosjava/${PROJECT_NAME}/ 
-#       DESTINATION ${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/rosjava/${PROJECT_NAME})
+# Deploy android libraries (.aar's) and applications (.apk's)
+install(DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/rosjava/${PROJECT_NAME}/ 
+       DESTINATION ${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/rosjava/${PROJECT_NAME}/)
diff --git a/src/rosjava_build_tools/templates/android_package/build.gradle.in b/src/rosjava_build_tools/templates/android_package/build.gradle.in
index 9b7f556..a7d6e51 100644
--- a/src/rosjava_build_tools/templates/android_package/build.gradle.in
+++ b/src/rosjava_build_tools/templates/android_package/build.gradle.in
@@ -32,7 +32,32 @@ allprojects {
 }
 
 subprojects {
-    /* See https://github.com/rosjava/rosjava_bootstrap (look for gradle_plugins)
-       to see what is going on under the hood. */
+    /*
+     * The android plugin configures a few things:
+     *
+     *  - local deployment repository : where it dumps the jars and packaged artifacts)
+     *  - local maven repositories    : where it finds your locally installed/built artifacts)
+     *  - external maven repositories : where it goes looking if it can't find dependencies locally
+     *  - android build tools version : which version we use across the board
+     *
+     * To modify, or add repos to the default external maven repositories list, pull request against this code:
+     *
+     *   https://github.com/rosjava/rosjava_bootstrap/blob/indigo/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosPlugin.groovy#L31
+     *
+     * To modify the build tools version, pull request against this code:
+     *
+     *   https://github.com/rosjava/rosjava_bootstrap/blob/indigo/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosAndroid.groovy#L14
+     */
     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"
+            }
+        }
+    }
 }
diff --git a/src/rosjava_build_tools/templates/android_project/build.gradle.in b/src/rosjava_build_tools/templates/android_project/build.gradle.in
index e1d1e6e..ecda235 100644
--- a/src/rosjava_build_tools/templates/android_project/build.gradle.in
+++ b/src/rosjava_build_tools/templates/android_project/build.gradle.in
@@ -26,19 +26,22 @@
 /* 
 dependencies {
   compile project(':local_android_library_dependency')
-  compile 'org.ros.android_core:android_gingerbread_mr1:[0.2,0.3)'
+  compile 'org.ros.android_core:android_10:[0.2,0.3)'
+  compile 'org.ros.android_core:android_15:[0.2,0.3)'
   compile 'com.github.rosjava.android_extras:gingerbread:[0.2,0.3)'
+  compile 'org.ros.rosjava_messages:tf2_msgs:[0.5,0.6)'
 }
 */
 
 apply plugin: '%(plugin_name)s'
 
 android {
-  packagingOptions {
-    /* https://github.com/rosjava/android_core/issues/194 */
-    exclude 'META-INF/LICENSE.txt'
-    exclude 'META-INF/NOTICE.txt'
-  }
   compileSdkVersion %(sdk_version)s
+  defaultConfig {
+    minSdkVersion %(sdk_version)s
+    targetSdkVersion %(sdk_version)s
+    versionCode 1
+    versionName "1.0"
+  }
 }
  
\ No newline at end of file
-- 
GitLab