Skip to content

Instantly share code, notes, and snippets.

@javascriptlove
Last active July 16, 2019 11:45
Show Gist options
  • Save javascriptlove/b4a63927d16a61db6bcf59deaa1b6e2d to your computer and use it in GitHub Desktop.
Save javascriptlove/b4a63927d16a61db6bcf59deaa1b6e2d to your computer and use it in GitHub Desktop.
Fix Meteor build on Android after Google published com.google.android.gms:play-services-auth:17 and com.google.android.gms:play-services-identity:17
#!/usr/bin/env node
// .meteor/android_fix_google_play_services.js
console.log('Running android_fix_google_play_services.js to use exact play services version for current Meteor target SDK 26');
var fs = require('fs');
var pluginxml = 'plugins/cordova-plugin-googleplus/plugin.xml';
var gradlePath = 'platforms/android/build.gradle';
var projectProps = 'platforms/android/project.properties';
if (fs.existsSync(pluginxml)) {
var data = fs.readFileSync(pluginxml, 'utf8');
data = data.replace('<framework src="com.google.android.gms:play-services-auth:+" />', '<framework src="com.google.android.gms:play-services-auth:16.0.0" />');
data = data.replace('<framework src="com.google.android.gms:play-services-identity:+" />', '<framework src="com.google.android.gms:play-services-identity:16.0.0" />');
fs.writeFileSync(pluginxml, data);
console.log('-- plugin contents');
console.log(data);
}
if (fs.existsSync(gradlePath)) {
var gradle = fs.readFileSync(gradlePath, 'utf8');
gradle = gradle.replace('compile "com.google.android.gms:play-services-auth:+"', 'compile "com.google.android.gms:play-services-auth:16.0.0"');
gradle = gradle.replace('compile "com.google.android.gms:play-services-identity:+"', 'compile "com.google.android.gms:play-services-identity:16.0.0"');
fs.writeFileSync(gradlePath, gradle);
console.log('-- gradle contents');
console.log(gradle);
}
if (fs.existsSync(projectProps)) {
var props = fs.readFileSync(projectProps, 'utf8');
props = props.replace('com.google.android.gms:play-services-auth:+', 'com.google.android.gms:play-services-auth:16.0.0');
props = props.replace('com.google.android.gms:play-services-identity:+', 'com.google.android.gms:play-services-identity:16.0.0');
fs.writeFileSync(projectProps, props);
console.log('-- project contents');
console.log(props);
}
App.appendToConfig('<platform name="android"> \
<hook type="before_compile" src="../../android_fix_google_play_services.js" /> \
</platform>');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment