diff --git a/droidgap b/droidgap index a7094cd8..4efc8e92 100755 --- a/droidgap +++ b/droidgap @@ -1,5 +1,6 @@ #!/usr/bin/env ruby require 'fileutils' + class Build attr_reader :android_sdk_path, :name, :pkg, :www, :path, :dir @@ -11,17 +12,11 @@ class Build # runs the build script def run - puts "Building the JAR..." build_jar - puts "Creating Android project..." create_android - puts "Generating manifest..." generate_manifest - puts "Copying over libraries and assets..." copy_libs - puts "Adding some application name to strings.xml..." add_name_to_strings - puts "Writing application Java code..." write_java puts "Complete!" end @@ -29,6 +24,7 @@ class Build # removes local.properties and recreates based on android_sdk_path # then generates framework/phonegap.jar def build_jar + puts "Building the JAR..." FileUtils.rm "#{ @dir }framework#{@s}local.properties" if File.exists? "#{ @dir }framework#{@s}local.properties" FileUtils.rm "#{ @dir }framework#{@s}phonegap.js" if File.exists? "#{ @dir }framework#{@s}phonegap.js" FileUtils.rm "#{ @dir }framework#{@s}phonegap.jar" if File.exists? "#{ @dir }framework#{@s}phonegap.jar" @@ -44,6 +40,7 @@ class Build # TODO need to allow more flexible SDK targetting # TODO validate Android SDK def create_android + puts "Creating Android project..." `android create project -t 5 -k #{ @pkg } -a #{ @name } -n #{ @name } -p #{ @path }` FileUtils.mkdir_p "#{ @path }#{@s}assets#{@s}www" FileUtils.cp_r "#{ @www }#{ @s }.", "#{ @path }#{ @s }assets#{ @s }www#{ @s }" @@ -51,13 +48,14 @@ class Build # creates an AndroidManifest.xml for the project def generate_manifest + puts "Generating manifest..." manifest = "" open(@dir + 'framework/AndroidManifest.xml', 'r') do |old| - manifest = old.read - manifest.gsub! 'android:versionCode="5"', 'android:versionCode="1"' - manifest.gsub! 'package="com.phonegap"', "package=\"#{ @pkg }\"" - manifest.gsub! 'android:name=".StandAlone"', "android:name=\".#{ @name }\"" - manifest.gsub! 'android:minSdkVersion="5"', 'android:minSdkVersion="3"' + manifest = old.read + manifest.gsub! 'android:versionCode="5"', 'android:versionCode="1"' + manifest.gsub! 'package="com.phonegap"', "package=\"#{ @pkg }\"" + manifest.gsub! 'android:name=".StandAlone"', "android:name=\".#{ @name }\"" + manifest.gsub! 'android:minSdkVersion="5"', 'android:minSdkVersion="3"' end open("#{ @path }#{@s}AndroidManifest.xml", 'w') { |x| x.puts manifest } end @@ -65,17 +63,31 @@ class Build # copies stuff from framework into the project # TODO need to allow for www import inc icon def copy_libs + puts "Copying over libraries and assets and creating phonegap.js..." FileUtils.cp "#{ @dir }framework#{@s}phonegap.jar", "#{ @path }#{@s}libs" FileUtils.cp "#{ @dir }framework#{@s}res#{@s}values#{@s}strings.xml", "#{ @path }#{@s}res#{@s}values#{@s}strings.xml" FileUtils.cp "#{ @dir }framework#{@s}res#{@s}layout#{@s}main.xml", "#{ @path }#{@s}res#{@s}layout#{@s}main.xml" FileUtils.cp "#{ @dir }framework#{@s}res#{@s}layout#{@s}preview.xml", "#{ @path }#{@s}res#{@s}layout#{@s}preview.xml" %w(drawable-hdpi drawable-ldpi drawable-mdpi).each do |e| - FileUtils.cp "#{ @dir }framework#{@s}res#{@s}drawable#{@s}icon.png", "#{ @path }#{@s}res#{@s}#{ e }#{@s}icon.png" + FileUtils.cp "#{ @dir }framework#{@s}res#{@s}drawable#{@s}icon.png", "#{ @path }#{@s}res#{@s}#{ e }#{@s}icon.png" end + # concat JS and put into www folder. + Dir.chdir("#{ @dir }framework#{ @s }assets#{ @s }js") + basedir = "." + js = Dir.new(basedir).entries + phonegapjs = "" + js.each do |script| + next if script[0].chr == "." + phonegapjs += IO.read(script) + phonegapjs += "\n\n" + end + Dir.chdir("#{ @dir}") + File.open("#{ @path }#{ @s }assets#{ @s }www#{ @s }phonegap.js", 'w') {|f| f.write(phonegapjs) } end # puts app name in strings def add_name_to_strings + puts "Adding some application name to strings.xml..." x = " #{ @name } @@ -90,6 +102,7 @@ class Build # 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 + puts "Writing application Java code..." j = " package #{ @pkg };