現役SEが最新ITネタを分かりやすく伝えるブログ -6ページ目

現役SEが最新ITネタを分かりやすく伝えるブログ

好奇心旺盛なうどん大好きITエンジニア。
フットサル,けん玉,クライミング,新日本プロレスが趣味。
AI と データ分析 界隈が大好き。
本屋には毎日行く。

Twitter:@waka21

マイ本棚:http://booklog.jp/users/wakagasira/front

WiimoteLibでバランスボードの値を取得してたんですが、なぜか値が更新されない・・・
SetLEDでLEDのON/OFFはできます。

以前はBluetoothスタックの問題で接続したりしなかったりで悩みましたが、
安定してつながると思ったら別の問題が。。。

再接続はこちらのおかげで解決しました。
http://tyche.pu-toyama.ac.jp/~a-urasim/wiimote/


そこでいろいろググってみると、似たような問題を発見!
http://wiimotelib.codeplex.com/discussions/43873

読んでいくと・・・ん?
電池切れ?

というわけで早速電池を入れ替えてみると、ばんばん値が上がってきました。
あ~時間もったいない。
普段通りAndroidアプリを実機テストしようとして実行すると
Installation error: INSTALL_PARSE_FAILED_NO_CERTIFICATES
というエラー。

その下に
 Error generating final archive: Found duplicate file for APK: AndroidManifest.xml
とあったので

ん~見たことあるなぁと思ったら、
アプリに組込むJARライブラリをエクスポートするときにAndroidManifest.xmlを
含んでエクスポートしちゃってました。

JARライブラリにも呼び出し元のアプリにもAndroidManifest.xmlがあるので
duplicate(重複)
ということで。

このエラーもう何回も見てる気がする・・・
というわけで書いときます。
AndroidでAsyncTaskでスレッドを作って動かすと以下のエラー。

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

どうもスレッドからUIアクセスしようとしてる??
しないように気をつけてるんだけど。

と、思ったらしれっと
Toast.makeText(呼び出し元Activity, "hoge", Toast.LENGTH_LONG).show();

とToast呼んでました。
確かにUIだわ・・・。

凡ミス

Androidアプリでユニットテストを久々にしようと思って、
テストプロジェクトをつくり、実行すると以下のようなエラーが出た

java.lang.NoClassDefFoundError: android/test/ActivityInstrumentationTestCase2
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: android.test.ActivityInstrumentationTestCase2
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 18 more


なんでだ??

ググっても情報がないので確認してみると、

実行→JUnitテスト
をしていた。

正しくは
実行→Android JUnitテスト

標準のJUnitテストじゃないからか。
結構ハマッたので備忘録として残します。。。
Android3.0以降のエミュレータの遅さもHAXでMacでなら爆速になったので、
便利になりました

しかし、普通にRunを走らせると
[2013-01-09 10:06:03 - hoge] Launching a new emulator with Virtual Device 'AVD4.1.2'

[2013-01-09 10:06:14 - Emulator] HAX is working and emulator runs in fast virt mode


[2013-01-09 10:06:16 - hoge] New emulator found: emulator-5554


[2013-01-09 10:06:16 - hoge] Waiting for HOME ('android.process.acore') to be launched...

と出た後にdisconnectが出る

うーん、と思ってデバッグ構成や実行構成(英語だとDebug ConfigurationsかRun Configurations)をひらいてそこから実行するとちゃんと繋がる

とりあえずこれでいけるのでしばらくは使えそう。

そういえばSubclipseのヒストリー更新も最初の取得は更新ボタンではダメで、
プロジェクト右クリックのチームーヒストリーの表示をするとちゃんと出る。

※追記
実行の構成の「バックグラウンドで実行」をはずすという解決方法もあったけど、
結果的に以下の方法で復旧しました。

window -> Show Views -> device -> view menu -> reset adb
これを行うと以下のようなエラーが出ますが、無事接続できました。
[2013-01-10 13:40:04 - DeviceMonitor] Adb connection Error:EOF



久々にeclipseをたちあげてAndroidアプリ作ってると、
デバッグ時にLogCatの時刻が??:??、PID、TID、タグが全部??になってる
はてな?

ググってみるとADKのアップデートをしないとダメとのこと。
そしてアップデートをがっつりすると今度はLogCatのところで

ビューを作成できませんでした: プラグイン "com.android.ide.eclipse.ddms" は、クラス "com.android.ide.eclipse.ddms.views.LogCatView" をインスタンス化できませんでした。

と見慣れたメッセージが。

eclipseフォルダのeclipse.exe -clean.cmdを実行して、無事復旧。

アップデートはこまめにしないといけませんね
NSRangeExceptionのエラーがどうしても取れなくてハマった

起動時にmain関数で以下のエラー。
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]'


久々にObjective-C触ったので勝手が分からなかったが原因判明。

StorybordでTableViewの数を変えたときに、
Table Row SectionのRowsは変わってるんですが

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
  return tableRow;
}

をしてるところでTableセルの数が減らせてなかった。。。

ハマったので書いときます


新しいPasoriのRC-S380に変えてから、
PC起動時に毎回
「FeliCaランチャーの初期化に失敗しました。
 FeliCaランチャーを終了しますか?」
というメッセージが出ていたので復旧しました。

いろいろやってみましたが、以下の方法が最も確実
1.FeliCaポートソフトウェアリムーバーでとりあえず全部削除

2.NFCポートソフトウェア(旧FeliCaポートソフトウェア)をインストール

これで無事復旧しました


FeliCa Proxy ServiceからNFC Proxy Serviceに変わってたりと
いろいろ悩みましたが、解決しました


System.TypeLoadException: 
メソッド 'hoge' に実装がないため (RVA なし)、アセンブリからの型 'hogeclass' を読み込めませんでした。

というエラーが出た

以前C++で作ってたDLLに関数を追加して、C#アプリから呼びだそうとしてる時です。

■解決
DLLを呼び出す時にクラス内で
[DllImport("hoge.dll", EntryPoint = "hogeMethod", CharSet = CharSet.Ansi)]
private extern static int hogeMethod(ref IntPtr hogehoge);

とかくところで、DllImportのEntryPoint名が間違っていた。
ここ間違えるとこんなエラーが出る


ちなみにエントリーポイントがありません、ってエラーも出るけどそれも同様


メーラーはThunderbirdを普段使ってます。

送信時に自動スペルチェックするようにしていますが、
あるときからすべて空欄でチェックされなくなった。

スペルチェック辞書をいじったような・・・

それで、ググっても解決方法が分からず放置してましたが、やっと解決

このスペルチェック画面の「辞書の選択」が空欄になってた。

辞書を選択すると無事スペルチェックしてくれるように。
調べても全然分からなかったから良かった~。
※単語に特に意味はないです

おそらく辞書の追加したり、削除したりしたときに辞書が選択されない状態になったよう。
解決して良かった