From 8728e05127c980dafcea317ee645b02dd95df48f Mon Sep 17 00:00:00 2001 From: Payman Delshad Date: Wed, 28 Aug 2013 15:29:50 +0200 Subject: [PATCH] Make sure manifest compilation works with API 17. --- android/adb.js | 20 ++++---------------- app/helpers.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/android/adb.js b/android/adb.js index 82802365f..e84966007 100644 --- a/android/adb.js +++ b/android/adb.js @@ -209,29 +209,17 @@ ADB.prototype.insertSelendroidManifest = function(serverPath, cb) { ADB.prototype.compileManifest = function(manifest, manifestPackage, targetPackage, cb) { logger.info("Compiling manifest " + manifest); - var androidHome = process.env.ANDROID_HOME; - if (typeof androidHome !== "string") { - return cb(new Error("ANDROID_HOME was not exported!")); - } - - var platforms = path.resolve(androidHome , 'platforms') - , platform = 'android-18'; - - // android-18 may be called android-4.3 - if (!fs.existsSync(path.resolve(platforms, platform))) { - platform = 'android-4.3'; - - if (!fs.existsSync(path.resolve(platforms, platform))) { - return cb(new Error("Platform doesn't exist " + platform)); - } + var platform = helpers.getAndroidPlatform(); + if (!platform || !platform[1]) { + return cb(new Error("Required platform doesn't exist (API level >= 17)")); } // Compile manifest into manifest.xml.apk var compileManifest = [this.binaries.aapt + ' package -M "', manifest + '"', ' --rename-manifest-package "', manifestPackage + '"', ' --rename-instrumentation-target-package "', targetPackage + '"', - ' -I "', path.resolve(platforms, platform, 'android.jar') +'" -F "', + ' -I "', path.resolve(platform[1], 'android.jar') +'" -F "', manifest, '.apk" -f'].join(''); logger.debug(compileManifest); exec(compileManifest, { maxBuffer: 524288 }, function(err, stdout, stderr) { diff --git a/app/helpers.js b/app/helpers.js index 7c89a0a77..7758575f0 100644 --- a/app/helpers.js +++ b/app/helpers.js @@ -332,3 +332,22 @@ exports.getGitRev = function(cb) { cb(null, stdout.trim()); }); }; + +exports.getAndroidPlatform = function(cb) { + var androidHome = process.env.ANDROID_HOME; + if (typeof androidHome !== "string") { + logger.error("ANDROID_HOME was not exported!"); + return null; + } + + var locs = ['android-4.2', 'android-17', 'android-4.3', 'android-18']; + var res = null; + _.each(locs, function(loc) { + var platforms = path.resolve(androidHome , 'platforms') + , platform = loc; + if (fs.existsSync(path.resolve(platforms, platform))) { + res = [platform, path.resolve(platforms, platform)]; + } + }); + return res; +};