MultiDex対応

apkに含まれるメソッド数が65535を超えると「java.lang.ClassNotFoundException」とかよくわからないエラーを吐きまくって、アプリの起動さえできない状態になるようです。※Lolipop以降では問題ないらしい

このメソッド数にはライブラリも含まれるため、どんな小さなアプリでもライブラリの肥大化で突然とばっちりを受けるかも。今回はplay-services:10+にしたタイミングで65535を超えました。

AndroidStudioでは通常、65535を超えているとビルド時にエラーとなるようですが、ビルドが通っても一部端末ではエラーが出るようです(クラッシュレポートより推測)

これをmultidex support libで対応する。

 

build.gradle

※ヒープサイズを指定しないと失敗することがあるらしいので設定しておく

 

AndroidManifest.xml

 

参考1

参考2

 

カテゴリー: Android | タグ: | コメントする

ImageButtonクリック時のハイライト

ImageButtonに画像指定してクリックしても変化がないため、クリック感がないので、画像を使わずに色を変える。

enterFadeDurationとexitFadeDuration(ミリ秒)でフェードイン・アウト。

drawable/button_overlay.xml

 

これをImageButtonのbackgroundに指定。

画像はsrcに指定。

layout.xml

 

 

参考

 

カテゴリー: Android, View | タグ: , , | コメントする

ボタンをカスタマイズ

XMLでボタンをカスタマイズ

drawable/btn.xml

 

ボタンの背景に指定

 

参考

 

カテゴリー: Android, View | タグ: | コメントする

ListViewでSwitchCompat

ListViewで普通にXMLからSwitchCompatを使うと落ちる。

ソースから追加すると大丈夫みたい。

setFocusable(とsetFocusableInTouchModeも?)をfalseにしないとListViewのOnItemClickListenerが動かない。

 

参考

 

カテゴリー: Android, View | タグ: , | コメントする

表示されているActivityを調べる

Android標準のActivityのソースを見たいとき、Activity名を調べる方法。

時計アプリを表示中に実行した例

 

ソースの検索はここで

 

参考

 

カテゴリー: Android | タグ: | コメントする

AlertDialogのテーマカラーを変更

Android 6.0から?かToolBarの文字色をstyle.xmlのandroid:textColorPrimaryで指定するとAlertDialogのタイトルやらも同じ色が適用されてしまうので、AlertDialog用にstyleを定義する。

#style.xml

 

#MyDialogFragment.java

 

参考

 

 

カテゴリー: Android, View | タグ: , | コメントする

ToolBar

Android5.0からActionBarに変わってToolBarを使うらしい。それ以前のバージョンでもSupport Libraryで使用可能。

 

#activity_main.xml

 

#main_menu.xml

 

#MainActivity.java

 

#style.xml

 

参考1

参考2

 

カテゴリー: Android, View | タグ: | コメントする

Android Studio 備忘録

Androidアプリ開発はEclipseからAndroid Studioへの移行必須のようなので。

 

javaソース中でR.***のRが赤字になる。→File -> Invalidate Caches / Restart..

 

カテゴリー: AndroidStudio | コメントする

ネットワーク越しにデバッグ

Nexus7(2013)のUSB端子の調子が悪くなり、パソコンから認識されないことが多くなった。USBデバッグをONにしてもEclipseから見えないので開発できない。

と、ネットワーク(Wi-Fi)越しにadbで接続できるようなので試してみた。

ただし、最初はUSBでadb接続する必要があるのでUSB端子が完全に死んだら無理。

まずはパソコンにUSBで接続→USBデバッグON→コマンドプロンプトから以下のコマンド発行

これでandroid端末側の5555ポートが解放される。これはandroidを再起動するまで有効。

あとはUSBケーブルを外してもOK。adb接続するにはandroid端末側でUSBデバッグONにした状態でコマンドプロンプトから以下のコマンド発行

あとはUSB接続されているときと同じように扱える。

切断するときは

 

「adb tcpip 5555」がandroid側で実行できたらUSB接続が不要なんだけど方法は見つけられず。カスタムROMならできるようだが。。。少なくともアプリからは実行できなかった。

 

参考

 

 

カテゴリー: Android | タグ: | コメントする

Eclipseが起動不能になった

Eclipseがフリーズ→強制終了してからEclipseが起動しなくなった。

ログには

!MESSAGE プラグイン “org.eclipse.ui.workbench” からのコードの起動で問題が発生しました。

とあり、ぐぐるとworkspaceの「.metadata\.plugins\org.eclipse.e4.workbench\workbench.xmi」を削除とあったので削除したら起動できた。cleanも必要だったかも。

 

参考

 

カテゴリー: Eclipse | コメントする