2017年3月8日水曜日

Some file crunching failed

Some file crunching failed

Android Studioを2.3に改版すると下記のエラーが発生した。

Information:Gradle tasks [clean, :(省略):generateDebugSources, :(省略):generateDebugAndroidTestSources, :(省略):mockableAndroidJar, :(省略):prepareDebugUnitTestDependencies, :(省略):compileDebugSources, :(省略):compileDebugAndroidTestSources, :(省略):compileDebugUnitTestSources, :app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources, :app:compileDebugSources, :app:compileDebugUnitTestSources, :app:compileDebugAndroidTestSources]

15:54:20.374 [ERROR] [org.gradle.api.Project] AAPT err(Facade for 727369730): \\?\C:\Users\漢字\.android\build-cache\91d4fc3623f1db2e13d9719feb5cd41e8a96b0c9\output\res\drawable-xxhdpi-v4\googleg_standard_color_18.png ERROR: Unable to open PNG file

解答は次のサイトを参照してください。
http://stackoverflow.com/questions/42580645/errorsome-file-crunching-failed-see-logs-for-details-afer-update-gradle

原因:Windowsにおけるフォルダーの名前に2バイト文字を使用していたため。
解決方法:プロジェクトのルートにあるgradle.propertiesファイル内に、次の1行を書きこんでください。
android.enableBuildCache=false

又は、上記の値をtrueにした上で、ASCII文字だけで構成されるフォルダー名を下記のように設定します。
android.buildCacheDir=C:/akan-mata-bagu-ya/build-cache

2017年1月4日水曜日

MY_PACKAGE_REPLACEDの動作確認

MY_PACKAGE_REPLACEDの動作確認

Android Studioで、初期設定のままでデバッグを行うと、開発中のアプリのインストールと起動とが連続して行われてしまう。本番の環境では連続して行われることはない。
このままだと、action.MY_PACKAGE_REPLACEDに基づく動作確認が正確にできないかもしれない。

これを別々に行うには下記の設定をする。
Android Studio > Run > Edit Configurations... において、左上端の「+」を押し下げる。
「Android App」を選択する。
General > Installation Options > Deploy 及び General > Launch Options > Launch には、各々「Nothing」という項目があるので、この項目を活用すれば、インストールと起動とを別々に(連続させずに)行うことができる。

action.MY_PACKAGE_REPLACEDによる受信ができない

action.MY_PACKAGE_REPLACEDによる受信ができない

デバッグ環境において、今まで正常に動作していたMY_PACKAGE_REPLACEDによる受信ができなくなった。
Android端末を再起動すれば、受信できるようになりました。

2017年1月3日火曜日

ContentResolver#query() return null

ContentResolver#query() return null

古い機種は、端末の電源投入後、起動完了状態になるまで、1分以上かかる。
この間(起動が完了していない状態。起動途中の段階)で、ContentResolver#query()を使うと、nullが返る。

起動途中の段階でgetContentResolver()を実行した場合であっても、利用可能なContentResolverが返されてくる。

ContentResolver#query()を使いnullが返された場合、その原因が、起動途中の段階なのか、それともAndroidシステムに異常があるのか確認した方が良いかもしれない。
例えば、SystemClock#elapsedRealtime()とThread#sleep()を併用して、2分程度待つようにすれば良い。
なお、elapsedRealtime()は、電源投入を起点とした経過時間をミリ秒単位で返す。

2016年10月1日土曜日

Android端末がWindowsで認識しない

Android端末がWindowsで認識しない

今まで問題なく認識できていたAndroid端末が、2016年10月1日に、Windows10で認識できなくなりました。
私の事例の場合、Windows10に接続するUSB機器を、キーボード、マウス及びAndroid端末の3個だけにすれば、問題なくAndroid端末を認識できるようになりました。
第四番目に接続させていたUSB機器との相性が悪かったのかと思います。

2016年7月11日月曜日

「データがありません」ANRに関する報告の受け取り

「データがありません」ANRに関する報告の受け取り

ANRの報告に「データがありません」という表示がされる場合があります。
この場合、半日程度経ってから、ドラム缶アイコンから「クラッシュとANR」を選択し、ANRデータをCSVファイルで開発機にダウンロードして、見てください。
そうすると、ある程度情報が記載させています。


2016年3月9日水曜日

BroadcastReceiverでIntent.ACTION_PACKAGE_REPLACEDを受け取る

BroadcastReceiverでIntent.ACTION_PACKAGE_REPLACEDを受け取る

アプリの改版を行った場合、アプリは、BroadcastReceiverでandroid.intent.action.PACKAGE_REPLACEDを受け取ります。
このPACKAGE_REPLACEDに基づき実行されるコードは、旧版でしょうか、それとも新版でしょうか。

解答は、新版です。

何の根拠も無く、間違った方で、自分勝手に思い込みをしてしまわないようにしましょう。