#!/usr/bin/env ruby class Build def start(*args) @android_sdk_path, @name, @pkg, @www, @path = args build_jar create_android generate_manifest copy_libs write_java end # removes local.properties and recreates based on android_sdk_path # then generates framework/phonegap.jar def build_jar `rm framework/local.properties` `ECHO 'sdk-location=#{ @android_sdk_path }' > framework/local.properties` `ant jar` end # runs android create project def create_android `android create project -t 5 -k #{ @pkg } -a #{ @name } -n #{ @name } -p #{ @path }` end # creates an AndroidManifest.xml for the project def generate_manifest manifest = "" open('framework/AndroidManifest.xml', 'r') do |old| manifest = old.read manifest.gsub! 'package="com.phonegap"', "package=\"#{ @pkg }\"" manifest.gsub! 'android:name=".StandAlone"', "android:name=\".#{ @name }\"" end open("#{ @path }/AndroidManifest.xml", 'w') {|x| x.puts manifest } end # copies stuff from framework into the project # # TODO need to allow for www import # - copy www into #{ @path }/assets/www # - copy www/icon.png into #{ @path }/res/drawable/icon.png # def copy_libs `cp framework/phonegap.jar #{ @path }/libs` `cp framework/res/values/strings.xml #{ @path }/res/values/strings.xml` `cp framework/res #{ @path }/res` `cp framework/assets/www #{ @path }/assets/wwww` end # this is so fucking unholy yet oddly beautiful # not sure if I should thank Ruby or apologize for this abusive use of string interpolation def write_java j = " package #{ @pkg }; import android.app.Activity; import android.os.Bundle; import com.phonegap.*; public class #{ @name } extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl(\"file:///android_asset/www/index.html\"); } } " open("#{ @path }/src/#{ @pkg.gsub '.', '/' }",'w') { |f| f.puts j } end # end if(ARGV.length == 5) Build.new.start(ARGV) else puts <<-EOF DroidGap: PhoneGap/Android Project Generator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Creates a fresh app for hybrid mobile web hacking. Delicious robot! Usage: ./droidgap Params: android_sdk_path ... The path to your Android SDK install. name ............... The name of your application. package_name ....... The name of your package (For example: com.nitobi.demo) www ................ The path to your www folder. (Wherein your HTML, CSS and JS app is.) path ............... The path to generate the application. EOF end