android-install.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env node
  2. module.exports = function (context) {
  3. var path = context.requireCordovaModule('path'),
  4. fs = context.requireCordovaModule('fs'),
  5. shell = context.requireCordovaModule('shelljs'),
  6. projectRoot = context.opts.projectRoot,
  7. ConfigParser = context.requireCordovaModule('cordova-lib/src/configparser/ConfigParser'),
  8. config = new ConfigParser(path.join(context.opts.projectRoot, "config.xml")),
  9. packageName = config.android_packageName() || config.packageName();
  10. console.info("Running android-install.Hook: " + context.hook + ", Package: " + packageName + ", Path: " + projectRoot + ".");
  11. if (!packageName) {
  12. console.error("Package name could not be found!");
  13. return ;
  14. }
  15. // android platform available?
  16. if (context.opts.cordova.platforms.indexOf("android") === -1) {
  17. console.info("Android platform has not been added.");
  18. return ;
  19. }
  20. var targetDir = path.join(projectRoot, "platforms", "android", "src", packageName.replace(/\./g, path.sep), "wxapi");
  21. targetFile = path.join(targetDir, "WXEntryActivity.java");
  22. if (['after_plugin_add', 'after_plugin_install', 'after_platform_add'].indexOf(context.hook) === -1) {
  23. // remove it?
  24. try {
  25. fs.unlinkSync(targetFile);
  26. } catch (err) {}
  27. } else {
  28. // create directory
  29. shell.mkdir('-p', targetDir);
  30. // sync the content
  31. fs.readFile(path.join(context.opts.plugin.dir, 'src', 'android', 'WXEntryActivity.java'), {encoding: 'utf-8'}, function (err, data) {
  32. if (err) {
  33. throw err;
  34. }
  35. data = data.replace(/^package __PACKAGE_NAME__;/m, 'package ' + packageName + '.wxapi;');
  36. fs.writeFileSync(targetFile, data);
  37. });
  38. }
  39. };