OSDN Git Service

More robust platform directories detection
authoreagletmt <eagletmt@gmail.com>
Sun, 14 Oct 2012 16:30:08 +0000 (01:30 +0900)
committereagletmt <eagletmt@gmail.com>
Sun, 14 Oct 2012 16:30:08 +0000 (01:30 +0900)
tools/cuten_app.rake

index 5d10aae..cad3c22 100644 (file)
@@ -84,6 +84,27 @@ module AndroidSdk# {{{
 
   @android_home = Pathname.new ENV['ANDROID_HOME']
 
+  def detect_platforms
+    @platforms = {}
+    platforms.entries.each do |e|
+      path = platforms.join e
+      if path.directory?
+        prop = path.join 'source.properties'
+        if prop.file? and prop.readable?
+          prop.open do |f|
+            f.readlines.each do |line|
+              line.chomp!
+              if m = line.match(/\AAndroidVersion\.ApiLevel=(\d+)\z/)
+                $stderr.puts "Detected platform api_level=#{m[1]} at #{path.to_s}"
+                @platforms[m[1].to_i] = path
+              end
+            end
+          end
+        end
+      end
+    end
+  end
+
   def platform_tools
     @android_home.join 'platform-tools'
   end
@@ -92,6 +113,14 @@ module AndroidSdk# {{{
     @android_home.join 'platforms'
   end
 
+  def platform
+    if @platforms.has_key? Project.api_level
+      @platforms[Project.api_level]
+    else
+      raise "Platform not found!: api_level=#{Project.api_level}"
+    end
+  end
+
   def tools
     @android_home.join 'tools'
   end
@@ -117,7 +146,7 @@ module AndroidSdk# {{{
   end
 
   def android_jar
-    platforms.join "android-#{Project.api_level}", 'android.jar'
+    platform.join 'android.jar'
   end
 
   def annotations_jar
@@ -133,6 +162,7 @@ module AndroidSdk# {{{
     ].join(':')
   end
 end# }}}
+AndroidSdk.detect_platforms
 
 task :default => 'apk:aligned'