読者です 読者をやめる 読者になる 読者になる

ADT22 の gradle eclipse export形式でリアルに使えるのか試してみた


TLで

  • IDEAがgoogle様に認められた!
  • gradle の知名度が上がった

マンセーな話ばかり出てくるので
ちょっと実際にできんの?ってことで試してみます。

一応

も目は通してるんですけど、これIDEAの設定講座では?*1

 あと はてブのリンクはやたら流れてくるけど
リアルにためしたって話はあんま聞かないんだよなー

 まあ有名な方が書いたから間違いない!
って感じなんだろうけど。。。

 あとeclipseから生成した場合は
ADTのPluginのほうが

  • ANDROID_HOME/tools/templates/gradle/wrapper

あたりから自動コピーしてくれないので、これは今後の課題系なんですかねー

 ということで

  • 手動で上記のパスからgradlew辺の構成を各プロジェクトにコピーしておく
  • 手動でローカルにgradle-1.6を落としてパス通しておく
  • gvm でインストール


curl -s get.gvmtool.net | bash
gvm install groovy
gvm install gradle

    • 場所は下記に入ります


$HOME/.gvm/gradle/current
あたりのことはしておく必要があります

gvm自体のインストールは

あたりを参照してください



でLibraryProjetをeclipseで参照の上進めます

と同じように
標準の方式は
 Import Project => [Create project from existing sources]
で。


備考)

コマンドライン実行と共用してる(もしくは動作確認してる)方は
事前に


./gradlew clean
してからのほうがいい感じですね(事前にgradlewでbuild環境作っておくとハマると)

v0.1での挙動)

  • libraryProjectが直下にフォルダ掘ってコピーされた
  • settings.gradleが自動生成された

でもこの挙動が確認できたのが
v0.1 で v0.1.1 では再現確認できなかったのは直ったから?
というか一時補完機能停止?




下記は v0.1.1の挙動
A)

MainP Import Project => [Create project from existing sources]
LibP Import Project => [Create project from existing sources]

の形式で試してみます。

eclipse上でコンパイルが通っていれば

  • dependenciesModule 参照で

クラスに関しては補完が聞きますが
リソース参照までは出来ない => エラーが出て先に進めないようです

v0.1.1でImport Projectすると単なるAndroidProjectとしてImportされてしまうようです

B)

MainP Import Project => [Create project from existing sources]
LibP Import Project => [Gradle Project]

settings.gradle等を作ってくれないので
A)と全く同じ挙動になりますね

C)

MainP Import Project => [Gradle Project]
LibP Import Project => [Gradle Project]
  1. Create project from existing sources
  2. Gradle Project

の違いは、

  1. ProjectStructureを初期にある程度弄ってくれるか
  2. adbコマンドによる実行構成を作ってくれるか否か

なので
自分で整形する人はこちらの形のほうが変な構成importしなくていいかも

adb実行構成あたりは

  • 実行=>設定の編集あたり

ここは気づいてる人は、[Create project from existing sources]デフォルトで作ると
エミュレータになってるのでUSBデバイスにまず変更するから気づいてる人は多いはず。
肝は 下の実行前に [Make]トリガーを実行するという処みたい*2

ここがeclipseユーザから言わせると違和感はあるよな。。。


v0.1.1だとProjectStructure等も開けなくて支障が出るので
とりあえずv0.1に戻して先に進めます

B)の構成でimportして、libs/dependencyModuleすると下記のような表示になります

ちゃんと Android-Gradle のfacetが追加されているようですね


とりあえずgradleコンパイルが通らないと先に進まないので

な構成を作りました

メイン側 abstest_ec
ライブラリ側 actionbarsherlock_ec

備考)

  • メイン側には settings.gradle等を追加する必要があります


        build.gradle //☆1B
settings.gradle //☆1S
abstest_ec
             build.gradle //☆2B
settings.gradle //☆2S
        actionbarsherlock_ec
             build.gradle


☆1Bが成功
☆2Bが失敗

で☆2Bで引っかかるのは ☆2Sの
自身のモジュール宣言がうまくいっていないからのようです

試行1) 自分自身はrootで見えているわけですから

  • abstest_ec/settings.gradle

上から自分自身の宣言を外してみます

settings.gradle

//ProjectRootDir=rootDir
ProjectRootDir=settingsDir
println "ProjectRootDir=$ProjectRootDir"


//[TODO]自分自身は見えてるわけなので、include や includeFlatじたいが冗長みたい
/*
root_name="abstest_ec"
includeFlat root_name //仮想パス
root_prg = project(":$root_name") //開くときには[:]が必要
//root_prg.projectDir=new File(rootDir)
println "[name]=" + root_prg.name
println "[dir ]=" + root_prg.projectDir
*/

library_name="abs"
includeFlat library_name //仮想パス

lib_prg = project(":$library_name") //開くときには[:]が必要
lib_prg.projectDir=new File(ProjectRootDir,'../actionbarsherlock_ec')
println "[name]=" + lib_prg.name
println "[dir ]=" + lib_prg.projectDir

確かに abstest_ecを基準にして

./gradlew clean build 

で build/apk フォルダにapkを作るようになりました。

ちなみに
初期化設定は init.gradle でなんて記事も出てきますが

  1. multi project では動かない?
    1. userHomeDir/init.gradle は
  2. $HOME/.gradle/init.gradle は動かなくなった

な感じで、頭で

  • abstest_ec/build.gradle
apply from: 'init.gradle'

としないと駄目な感じ。
あと上位で実行する場合と実行タイミングが違うので挙動も変わると。。。

とかとしないと駄目みたい‥‥‥

android gradle pluginのバージョンアップ( v0.4.1 )で一つ良くなったところは

allprojects{ 
    version = '1.0' 
} 

の定義が不要でも動くようになったようです。ちょっとだけ楽になるかも



でココで解決すればいいのですが、
この構成だとASさんが
何処をカレントフォルダとして認識してるのか不明でして
微妙でうまく実行出来ません

というかASの構成から見ると
メインプロジェクトのディレクトリの settings.gradle
の一番最初のモジュールを動かそうという挙動に見えたりとか
<今登録済みがlibrary-projectだけなので実行できないように見える。

なエラーが出てしまいます。

IDEAエキスパートの方が

な呟きをしてたのでv0.1.1で試してみたけどNG


で v0.1.2 で試してみたけど修正箇所が違うんだろうなとか思いつつ


ちょっと IDEA android pluginの中みてみるとこんな感じだしな。。(汗

http://twitter.com/kimukou2628/status/340289816568664065:twitter:detail:right
http://twitter.com/kimukou2628/status/340293714205351938:twitter:detail:right
http://twitter.com/kimukou2628/status/340294334895243265:twitter:detail:right
http://twitter.com/kimukou2628/status/340298610866532352:twitter:detail:right


AS 0.1.1メモ)


TL上のメモ)

ASだとこういうのエラー出てるらしいです(汗


v0.1.1 だと不安定って話。
ProjectStructure開けないんで確認しようがない。。。




の話読むと、1個まえのバイナリを保存するのはIDEAのEAPでは基本の認識なんだそうです。
うーん。みんな知らないから爆死してるんだよな‥‥‥


これは単に ./gradlew or gralde を外部実行連携(事前Makeの段階で)してるだけなので
当たり前ではないのかな?

あと

  • IDEAとして設定してるVMサイズ
  • gradleとして設定してるVMサイズ

とかは別だと思うけどな‥‥。



TL上の好意的なメモ>

確かに なんでか立ち上がらないw って言ってる人たち多かったですね(汗

IDEAで使えてた機能が使えるようになったらしい・・。
うーんその機能うれしいの??

*1:でもeclipseの初期設定講座とかってSIerさんとかに人気だから需要ターゲット的には間違いは無

*2:そこを追加してないとコンパイルせずに実行しようとする