Skip to content

Check for presence of project-wide gradle configuration properties#2047

Merged
rborn merged 1 commit intoreact-native-maps:masterfrom
transistorsoft:add-gradle-properties
Mar 5, 2018
Merged

Check for presence of project-wide gradle configuration properties#2047
rborn merged 1 commit intoreact-native-maps:masterfrom
transistorsoft:add-gradle-properties

Conversation

@christocracy
Copy link
Contributor

@christocracy christocracy commented Feb 28, 2018

As recommended by the Android Developer Document Gradle Tips & Tricks (See "Configure project-wide properties"), if the hosting application defines the following properties in their root build.gradle, peer modules (like react-native-maps) can align its dependencies as requested:

📂 android/build.gradle

buildscript {...}

allprojects {...}

/**
 * Project-wide gradle configuration properties for use by all modules
 */
+ext {
+    compileSdkVersion   = 26
+    targetSdkVersion    = 26
+    buildToolsVersion   = "26.0.2"
+    supportLibVersion   = "26.1.0"
+    googlePlayServicesVersion = "11.8.0"
+    androidMapsUtilsVersion = "0.5+"
+}

📂 android/app/build.gradle

android {
+    compileSdkVersion rootProject.compileSdkVersion
+    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig {
+        targetSdkVersion rootProject.targetSdkVersion
    }
}
dependencies {
     compile fileTree(dir: "libs", include: ["*.jar"])
+    compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion"
     compile "com.facebook.react:react-native:+"  // From node_modules

     compile project(':react-native-background-geolocation')
     compile project(':react-native-background-fetch')
     compile project(':react-native-device-info')
     compile project(':react-native-maps')
}

This provides a much better mechanism for aligning play-services version than all the nasty business of exclude group:

   ...
   dependencies {
       ...
       compile(project(':react-native-maps')){
           exclude group: 'com.google.android.gms', module: 'play-services-base'
           exclude group: 'com.google.android.gms', module: 'play-services-maps'
       }
       compile 'com.google.android.gms:play-services-base:10.0.1'
       compile 'com.google.android.gms:play-services-maps:10.0.1'
   }

Many other modules are beginning to implement this project-wide configuration properties mechansism, eg:

…mpileSdkVersion, buildToolsVersion, targetSdkVersion, androidMapsUtilsVersion. This provides a much better mechanism for aligning the module to the host project, particularly for play-services version
@rborn
Copy link
Collaborator

rborn commented Feb 28, 2018

LGTM
@christopherdro could you have a look at this please 🐽?

@christocracy thanks for the PR ❤️

@alvelig
Copy link
Contributor

alvelig commented Feb 28, 2018

Oh, I get it! Yes that's a great thing

@christocracy
Copy link
Contributor Author

Seems this was a timely addition with the big play-services 12.0.0 blow-up today ;)

pinpong pushed a commit to pinpong/react-native-maps that referenced this pull request Feb 28, 2025
…mpileSdkVersion, buildToolsVersion, targetSdkVersion, androidMapsUtilsVersion. This provides a much better mechanism for aligning the module to the host project, particularly for play-services version (react-native-maps#2047)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants