Skip to content

Instantly share code, notes, and snippets.

@cloakedninjas
Created September 18, 2015 11:06
Show Gist options
  • Save cloakedninjas/7263284b9a938a1a6567 to your computer and use it in GitHub Desktop.
Save cloakedninjas/7263284b9a938a1a6567 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
'use strict';
/**
* Usage:
*
* grunt.registerTask('checkAndroidManifest', 'Check manifest', function () {
* var done = this.async(),
* checkAndroidManifest = require('./bin/grunt-fix-manifest.js');
*
* checkAndroidManifest(grunt, done);
* });
*
* @param grunt
* @param doneCallback
*/
module.exports = function (grunt, doneCallback) {
var fs = require('fs'),
xml2js = require('xml2js'),
parser = new xml2js.Parser(),
manifestLocation = './cordova/build/platforms/android/AndroidManifest.xml',
manifestObject;
fs.readFile(manifestLocation, function (err, data) {
parser.parseString(data, function (err, result) {
manifestObject = result;
checkXmlValues();
});
});
function checkXmlValues() {
var applicationSection = manifestObject.manifest.application[0];
if (!applicationSection.receiver || !applicationSection.service) {
grunt.log.error('Receiver and Service sections not found :(');
/*
<receiver android:enabled="true" android:name="com.google.android.gms.analytics.AnalyticsReceiver">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.analytics.AnalyticsService" />
*/
applicationSection.receiver = {
$: {
'android:enabled': 'true',
'android:name': 'com.google.android.gms.analytics.AnalyticsReceiver'
},
'intent-filter': {
action: {
$: {
'android:name': 'com.google.android.gms.analytics.ANALYTICS_DISPATCH'
}
}
}
};
applicationSection.service = {
$: {
'android:enabled': 'true',
'android:exported': 'false',
'android:name': 'com.google.android.gms.analytics.AnalyticsService'
}
};
var builder = new xml2js.Builder();
var xml = builder.buildObject(manifestObject);
grunt.log.writeln('Writing missing sections');
fs.writeFile(manifestLocation, xml, function (err) {
if (err) {
grunt.log.error('Unable to write XML to: ' + manifestLocation);
}
doneCallback();
});
}
else {
grunt.log.ok();
doneCallback();
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment