IDEA13EAPとeclipseのコンパチでandroid開発してみる



とAS連載を執筆している方の言があったので、IDEA13EAPのほうが安定してるのかな?
と思いIDEA13EAPでAndroidを弄ってみる

 ASのIDE完成度は確かに微妙な線があるからな。。。
ADTのリリースとかでもそうだけど
新機能以外はfew bug fixじゃわからん><

 でもちょっと未だgradle運用だけで行くのは怖いので

  1. eclipseでプロジェクト作成
  2. export gradle
    1. 単体プロジェクトのみexport
  3. IDEA13EAPとしてimport

2)に関しては ADT 22.2.1 にしたら
gradle pluginの

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

の部分出力されてた。単に1プロジェクトの時は出力テンプレ形式が違うのかな?
*1


まあなんでこんなコンパチ環境作ろうとしたかって言うと
eclipse 4.4&ADT で遣るとき、エディタ上のカーソルが見えないから。。。
何処編集してるかわからんからストレスマッハ。。

http://twitter.com/btnrouge/status/381338549884563456:twitter:detail:right
http://twitter.com/btnrouge/status/381388556847292416:twitter:detail:right

 eclipse3.7 では表示されるので、eclipse4.4用のADTのpluginの作りが良くないみたい。
*2
AS作るの楽しいのはわかるけど、正直ADTもちゃんと作って欲しいなと切に願う。

備考)

これは知ってた。IDEAファイルがある前提だとProject Structureで修正可能なんですけど、ないとAS Idea Pluginのよく分かんない事前ルールチェックで怒られてIDEA設定ファイルが作れないだけで(苦笑。

だからはやくIDEAのプロジェクト設定ファイルもgradleタスクで作れないかなーとか思ってる*3



eclipse 4.4サイド)

以前は直ぐOKおすと続行可能だったんだけどな。。*4

まあeclipseが固まるのは、ノーセンキューなのでちょっと調整できるか試してみる。

なダイアログがでて、コレをググるとDDMSの設定を変更しろってのが出てくるんだけど

  • port 8600=>9600
  • ADBHOSTにチェック

な設定に変えても、

  • adbがアクティブか確認するためのポートは 8700ポート固定*5

って事で変更は無理らしい。設定が中途半端感満載。
これIDEA側には設定自体無いので贅沢なのかもしれないのですけど。。。
確かに

の記載通り 画面の項目と下記は一致するみたいなのでADTのソース側確認するしか無いかもな。。な感じ

workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.ddms.prefs

一応ANDROID_SDKの方で

grep -r 8700 ./

すると emuratorの元image の方で引っかかるのと、
genymotionの方でもimageが引っかかるので、8700ポートの変更は変更不可っぽいな。。

まあ2個立ち上げるお前が悪いって感じなんだけど。
ちなみにIDEA(AS)2個たちあげても同じエラーは出ます。
ただIDEAってエディタライクに複数たちあげてもOKな方針でなかったっけ?

新しい9patchツールに関しては

で解説されていますが、IDEAに載ってる奴より9patchに関してはこっちの方が使いやすい
*6

 この機能と新しい9patchツール の使い勝手のために
eclipseとIDEA行ったり来たり<苦笑。

 IconSetの機能は、大きめの画像指定しても
最適サイズの

  • アイコン
  • GooglePlayにのせる512*512画像

自動的に作ってくれるので便利

 プログラムやってて何時も困るのが
デザインの編集だったりスルんだよな。。実は。。。


パンくずリスト表示のOFF)
これeclipse4.2辺りから標準になってて凄くやりづらい
workspace単位で設定値持ってるみたいなので

のチェックを外すの忘れずに(何時も探してしまうので・・)

あとはimport文を隠す機能のOFF)
androidはimport文エラーを上手く直してくれない時がある*7
=>この機能がONになってると直せない><
で必ずOFFにしておく

英語表記だと

Java -> Editor -> [ ] Only show the selected Java element

参考)



IDEA13EAPサイド)
importに関しては,
eclipseプロジェクトとしてimportが可能なのですごく楽だった。。

ASだと

  • gradleプロジェクトとしてimportしないと駄目
  • gradleが上手く動かないとプロジェクトが不完全にできる
  • 再度試みるとゴミファイルが悪さするので.idea等のファイルを一度消してからやり直す必要がある

でストレス多だった。。。

 IDEA13EAPベースだと
gradle-warper添付形式でimportされる形のよう。
こっちのほうが確かに一貫性があって楽だよね。。*8

  • これに関しては eclipse ADTではプレビューすら出来んかったから凄いと思う



環境的に追加したもの)

  • genymotionのpluginの追加

詳細は genymotion 1.2.1メモ - exception think あたりに
メモってるんで詳しく書かないです

使い勝手的には eclipse/IDEA版かわらない
たちあげっぱなしで使えばいいだけ



開発レイヤーの話)

☆) 透明Activityの話

なんか最近調べ物すると @さんか @ さんのブログに
行き着くわけだが。。。大変有難いことです・・・

 でもちょっと修正加えなければいけない点は
新規プロジェクトを作成した場合

  • values/style.xml
  • values-v11/style.xml
  • values-v14/style.xml

の AppBaseTheme に記述しろ=>自動適応されるよ ってのが最新のスタイルみたい。

☆)layer-list の話

みてて、へー色んなタグ指定できるんだな−と思い

みながら試行錯誤してた感じ

☆) PreferenceActivityの話
表示スタイル>

まず上記の透明Activityの
android:themeを設定した状態で動かそうとすると落ちる
エラーも「Activityの起動に失敗しました」
しかでないからワケわかんねー と思ってたら

の話を設定してみて

  • ListActivityに9patch画像を設定すると落ちる

ということが発覚したと。。。

  • drawable/back_pref.xml
    • rectangleの所は @null 指定しても黒になる
    • angry_hoge.9.png が画像
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#41828d" />
        </shape>
    </item>
    <item>

        <bitmap
                android:gravity="center"
                android:src="@drawable/angry_hoge" >
        </bitmap>
<!-- 
        <nine-patch
                android:src="@drawable/angry_hoge" >
        </nine-patch>
 -->
    </item>
</layer-list>

の [Android SDK r12以降で発生?]の話が必要なんだけど
これ毎回style.xmlを弄る度にLintエラーがでてるっぽい。。
@hide 属性になってるみたいだからな。。。(汗

でもコレで表示してみると、android:widgetLayout の指定で
画像に差替てみると右寄せにならんな。。。って事で

が必要な感じ

でも上記のブログだとCheckBoxPreferenceに具体的な言及はないので

でも元サイズがデカイ件で今はまり中orz


基本的な使い方>

ただし項目値の場合は

ListPreference list_preference = (ListPreference)getPreferenceScreen().findPreference(URL_KEY);
list_preference.setSummary(list_preference.getEntry());


失敗した話>

PreferenceActivity がdeprecationらしく
ちゃんと最新の仕様に対応したものらしいんですけど
demoを起動できず。。。うーん。難しい。。。




TL上のメモ)



*1:でも以前コード見たときはjava sourceから直接生成だった記憶が。。。

*2:何処に設定有るんだろうと凄く探したけど。せめてカーソル色換えられればわかりやすいかも。eclipseのエディタ部分の色を変えるpluginとか試してみる?

*3:その時よく分かんないチェックも輸入されると困るけど。其の時は自分でタスク作るしか無い?

*4:どうもこれは状況確認したらbackground実行指定してるけどADTでエラーがでた時UIロックしてしまう挙動みたい。ライブラリプロジェクト閉じただけでもUIロックされてしまうことが多。なんだこの挙動??

*5:StackOverFlowの情報によると

*6:線をなぞる感じがGood!。ただ大きすぎる画像を編集しようとするとeclipseごとオチルけど。。

*7:android.Rとかimportするorz

*8:ASのは内部同梱のやつ使ったり使わなかったり、其の度にユーザが振り回される

*9:warp_contentだと右寄せにならない・・