リブログなどで記事の大半をコピーして別サイトに載せる場合は、元記事のURLを載せてください

2016/05/02

[androidstudio]AndroidStudio 1.5から2.1にする

したくなかったのだが、PCを新しくしたし、今から1.5を探してインストールするのもメリットがすくなさそうなので、Android Studio2.1用のプロジェクトに変更することにした。


前の環境はまったく取り込まず、作ったプロジェクトだけ持ってくることにした。
プロジェクトを開くとSyncエラーが出る。

 

今回私が賢かったのは、プロジェクトをgitで管理していたことだ。
なんでもいいのだけど、だいたいAndroidでなにか作るときは使い捨てのアプリが多いので、何も管理していなかったのだ。
バージョン管理していれば、少なくとも「元に戻せない」ということだけはなくなる。
うん、当たり前やん、と言われそうなのだが。。。

 

そしてようやく気付いたのだが、AndroidStudioのエラー修正提案に従っていくと、app/build.gradleじゃなくて、./build.gradleの方を変更してしまうようだ。
「buildToolsVersion」が新しくなっていたのだが、「バージョンが変わっている」というところまでは見抜いてくれたものの、その提案通りに修正すると、build.gradleの方に項目を追加していた。

  • app/build.gradle
    • buildToolsVersionを現状に合わせる
    • compile 'com.android.support:appcompat-v7:x.x.x'を現状に合わせる
    • compile 'com.android.support:design:x.x.0'を現状に合わせる
  • gradle/wrapper/gradle-wrapper.propertiesをgradle-2.10-all.zipにする

このくらいの変更でいいのかな?

2016/05/01

[nrf]nRF5 SDK for Eddystoneは動くのか? (6)

そろそろgithubで管理しようと思い、Nordicのところからforkしてみた。
すると、ソースが新しくなっているではないか。。。
それを使うと、またAdvertisingがうまくいかなくなっていた。

 

https://github.com/hirokuma/nrf5-sdk-for-eddystone
ブランチは「nrf51」にした。

image

なぜか知らんが、AdvDataが出てきた。
何もしてないから、新しくなったことで何か変わったのかも。
ただ、ゼロが多いから、なんかうまくいっていない感じはする。

[nrf]nRF5 SDK for Eddystoneは動くのか? (5)

第1部は、わしの負けじゃ。。。

image

なんとかADVは出るようになったものの、ROMサイズを小さくするために削ったところが影響して、中身がなくなってしまったようだ。

Serviceを捨ててサイズを減らそうとしていたのだが、Serviceの初期化に使っている値をAdvertisingの初期化にも使っているみたいで、中身を見ずに切り捨ててしまうとこうなったのだ。

減らしたいのは700バイト程度なのだが、少々じゃ減らせない。
GCCでやってしまいたいけど、今回は「なるべくKeilでやる」という縛りを付けてしまったからなぁ。

 

まあ、第2部でがんばりますかね。
第1部は、AdvertisingがnRF51822で出せるようになるまで。
第2部は、新しいEddystoneっぽくAdvertisingするところまで、という目標だけど、はてさてどうなることやら。

2016/04/30

nRF51822でSEGGER J-Linkがつながらなくなった

タイトル通りだ。

Eddystoneサンプルを動かそうとKeilであれこれデバッグしていたのだが、その途中で急にJ-Linkがつながらなくなったのだ。
あらまあ。

アンインストールやインストールを繰り返したのであまり記録が残っていないのだが、メモとして残しておこう。


JLinkARM.dllが読み込めないとか見つからないとか、そういうログが出たと思う。
複数のSEGGERをインストールしていたので、なんか悪さをし始めたのかと思い、最新版を削除して、今まで使っていた安定版だけにしてみた。
が、変わらず。

Keilをあきらめ、nRFgo Studioで見てみることにした。
こっちもダメなのだが、エラーが「JLinkARM.dllが正しくインストールされていない」というようなことを告げていた。nRF Toolsをインストールせよとか何とか。

なので、あれをインストールしたり、これをインストールしたり、アンインストールしてやり直したり、再起動したり。
どれも変わらず。

1つ見つかったのは、レジストリ。
nRFgo Studio cannot load JLinkARM.dll, re-installing does not help. What went wrong? - Nordic Developer Zone
現象はこれと同じで、私はV5.12dをインストールした後、V5.10nをインストールして、V5.12dをアンインストールしていた。
そうすると、レジストリのInstallPathにはV5.12dの方が残っていたのだ。

きれいにしたかったので、SEGGERを全部アンインストールし、レジストリもregeditで削除して、V5.10nをインストールした。
そうすると「正しくインストールされていない」の現象は消えた。

 

が、JLinkARM.dllが正しく動いていないのは変わらない。
もう1枚あったnRF51822を使ってみると、こっちはちゃんと読めた。
nRFgo Studioには、リセット後にSystem OFFになってるんじゃないのー、みたいなことが書かれていたのだが、そんなこと言われてもどうしようもない。
そういうのを何とかするのが、あんたの仕事だろうが!と思うのだがね。。

正しくnRF51822が動いた後、また元のnRF51822に差し替えると、今度はnRFgo StudioでRegionの画面まで出てきた。
おお!とErase Allしようとすると、つながらない・・・。


ということで、タイミングとか、なんかそういうものっぽいから、コマンドラインから消すことにした。

> nrfjprog –e

これは—eraseallの省略形なのだが、全部消すオプションだ。
動かすと、エラーもなくすぐに終わった。
nRFgo Studioにつなぐと、見えた。

 

今回はたまたまうまくいっただけかもしれないが、困っていたら試すとよいかもしれん。

[nrf]nRF5 SDK for Eddystoneは動くのか? (4)

PCが新しくなったので、ビルド環境の確認も合わせて動かしてみた。
ボードはnRF51822で、for EddystoneはKeilでやっとこさ32KB以内に収めたバージョンだ。
だから、動くとは限らない。。。

環境確認だったら、ちゃんと動くとわかっているものでやるのが筋なのだが、連休だからこれでいいのだ。

 

sd_ble_gap_adv_start()で、NRF_ERROR_INVALID_PARAMが返ってきているのがわかった。
eddystone_advertising_manager.cのeddystone_ble_advertising_start()だ。
パラメータをeddystone_ble_registr_adv_cb()で設定するようなのだが、それが呼ばれずに開始しようとしてるから、パラメータ不正になっている。
では、それがいつ呼ばれるのが普通かを調べねばなるまい。

 

名前の通りコールバック関数で、eddystone_registration_ui_init()に渡している。
UIとついているから、ボタン操作とかと絡んでくるのか・・・と思ったが、それ以前に私がROMサイズを減らすために中身をコメントアウトしてた。
あははははぁ。

ただ、ボタンがないのはどうしようもないので、無理やり呼んでやることにした。
そうすると、パラメータエラーは発生しなくなった。
しなくなったのだが、Advertisingをしてくれるわけでもない。
再起動するわけでもない。
何が起きてるんだ??

実行を停止すると、SEVの行でいつも止まる。
その前がWFEだから、イベント待ちで停止したままなのだろう。
無線が出ているときであれば、途中で停止させると次に実行すると異常になってしまうのだが、無線が出てないせいか止めても再開しても普通に動く。
普通に動くのだが、無線が出てないので正しくは動いていない。

うーん。。。
いつもエラーさえ解消すればAdvertisingくらいは出てくれるのだが、ちょっと困りましたね。