9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android Studioでjarファイルをrubyで簡単に作成する

Last updated at Posted at 2014-07-23

はじめに

Android Studioのライブラリプロジェクトでjarファイルを作成してみましょう
私はOSX 10.9.4, Android Studio (Beta) 0.8.1, ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin13.0.2]で確認しました

ライブラリプロジェクトを作成する

ライブラリ名はHogeとして話を進めます
moduleのbuild.gradleを以下に設定します

build.gradle
apply plugin: 'com.android.library'

aarファイルを作成する

aarファイルとはAndroid archiveファイルの略で、jarファイルのクラスファイル以外にリソースを含んでいます
次のコマンドを実行します

$ ./gradlew clean
$ ./gradlew aR

aRはassembleReleaseの略です

build/outputs/aarにHoge.aarファイルが生成されます

jarファイル

Hoge.aarはzipファイルで中にclasses.jarが含まれています。このclasses.jarファイルが欲しいファイルですが、解凍して名前を変更するのは面倒です。そこでaarファイルからclasses.jarを抽出し、名前をHoge.jarに変更するrubyスクリプトを作成しました

jarファイルを生成するrubyスクリプト

zipファイルを扱うために、rubyzip gemをインストールします

$ gem install rubyzip

jarファイルを生成するrubyスクリプトは以下のとおりです

make_jar.rb
require 'zip'

if ARGV.size == 0
  puts 'usage : ruby unzip.rb [aar filname]'
  exit
end

aar_file = ARGV[0]

TEMP_DIR = 'temp'
Dir.mkdir(TEMP_DIR) unless FileTest.exist?(TEMP_DIR)
FileUtils.copy(aar_file, "#{TEMP_DIR}/#{aar_file}", {})
Dir.chdir(TEMP_DIR) do
  Zip::File.open(aar_file) do |zip|
    zip.each do |entry|
      zip.extract(entry, entry.to_s) { true }
    end
  end
end

filename = File.basename(aar_file, ".aar")
lib_filename = "#{filename}.jar"

Dir.chdir(TEMP_DIR) do
  FileUtils.mv('classes.jar', lib_filename)
end

FileUtils.copy("#{TEMP_DIR}/#{lib_filename}", "#{lib_filename}")

FileUtils.rm_rf(TEMP_DIR)

第一引数にHoge.aarを指定します

$ ruby make_jar.rb ./Hoge.aar

実行したディレクトリにHoge.jarが生成されます。なお、ワークディクレトリとして、カレントディレクトリにtempディレクトリを作成し、スクリプト終了時にtempディレクトリを削除しています

ライブラリを組み込む

ライブラリを使用するAndroidプロジェクトのapps/libs/以下にHoge.jarをコピーします

build.gradleに依存情報を記述します

build.gradle
dependencies {
  compile files('libs/Hoge.jar')
}

おわりに

手作業で行うことは可能ですが、面倒ですので、自動化できるところは自動化することがよい思います

参考
Android Studio で簡単に jar をつくる手順はないのかと

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?