AndroidStudioを3.0にしてみたら


というわけで、こちらの記事の最後のほうに書いたアプリからリンクしていたURLが消滅していた件、リンク先を修正しようとしたら、AndroidStudioを含め、プラグインやらSDKやら、大量のアップデートが来てた。
どんだけ、仕事してないんだっつー。

それで、1日がかりでアップデートを終らせたら、Gradle の設定でエラー。
公式にも、Gladle3.0 での注意点として出てるので、仰せに従って修正。

こちらの解説がカスタマイズしやすかったです。ありがとうございます。

本丸のアプリの修正自体は、URL の変更だけだったので、数分で終ったわけです。

で、ワタクシの検証機、Kindleさんをつないでデバッグしようとしとしたら FATAL EXCEPTON main で、しかも、MainActivity がないよと仰る。マジか。
しょうがないので、AVD (エミュレータ)を使ってテストしようとするも、AVD が起動しないどころか、AndroidStudio を巻き込んでハングするっつー、何からどう手をつけていいか分からない状態に。

1. AVD が起動しない原因
2. Kindle でエラーが出る原因

を突き止めねばならないわけですね。

1 は、おそらくアップデートが原因なので、その辺でネット検索を掛けてみる。
はい、出ました。やっぱり、トラぶったときは 公式 に限る。
ワタクシの開発環境はMac OS 10.9.5 なのですが、最新の IntelHAXM はMac OS 10.10 以降になってますね。
加えて、インストレーション・ガイド に、ターミナルから

sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh


でアンインストールしてからインストールしろって書いてありますね。

とりあえず、上記の通りアンインストールしてから、バックアップ・ディスクから IntelHAXM_6.1.1.dmg を引っ張り出す。
というか、この時点では AndroidStudio と プラグイン、SDK アップデートが、Kindle でアプリが起動しない理由として疑っていたので、ほぼほぼ以前の開発環境にリカバリーしました。

それから、IntelHAXM を再インストール。

こちらも同じく、リカバリーした AndroidStudio2.3 を起動したところ、うーん、Gradle は勝手に最新版の 3.0 にアップデートされてしまう模様。
それでは AndroidStudio をリカバリーした意味がないし、今後のことも考えて、AndroidStudio は3.0で行くことにしました。

Kindle で起動しない問題は置いておいて、AVD を起動。
無事に起動して、修正したアプリも問題なく起動しました。

AVD 問題はひとまず片付いたものの、さて、AVD が起動しなかった理由は

1. OSのバージョンの問題だったのか
2. アンインストールしないでインストールしてしまったからなのか
3. 両方合わせてダメだったのか

という疑問は残る。が、検証しない。また、グズグズになると困る。


さてさて、肝心の Kindle でアプリが起動しない問題に取り掛かるわけですが、その前に、書き換えた Gradle でちゃんと apk がビルドできるかどうかを検証してみる。
できたできた、ぼくにもできた。

で、ちょっと待てよ。
USB デバッグでは上手く行かないけど、この apk を実機にコピーして、インストールしたらどうなる?
で、試してみたところ、正常にインストールできて、起動もしました。

すでに公開中のアプリだったので、ストアからの購入(無料ダウンロード)を試したため、クラウドに残っていたため、再起動させようとすると、「購入品とバージョンが違うから、クラウドからダウンロードするんだもんね」な動作が入り、おかしな動作になりましたが、
クラウドからも削除すると正常な動作に。

おお、これなら! と、USB デバッグを再度試すも、上手く行かず。

うーん、実機とデバッガの設定だろうか・・・。
とりあえず、追跡調査決定。


・・・と、なんだか手間の掛かることやってますが、元々はITさんがリンク切れ上等でURLを放置したから、のような気がしないでもない。
というか、そう思わないとやってられないわー。


スポンサーサイト

Amazon と GCM 問題


まだ Amazonで公開してなかったアプリを、対応させようと思って、いつもの手順 を取っていたところ、公式の Android プロジェクトに Firebase を追加する が変わっていたので、参考にしつつ app レベルの build.gradle を書き変えたら、Amazon さんではねられたので備忘録。

いつもの手順だと dependencies の

  compile 'com.google.android.gms:play-services-ads:9.4.0'
  compile 'com.google.firebase:firebase-analytics:9.4.0' ←コヤツをコメントアウトする。

は、いいんですが、

公式さんに

AdMob 用のライブラリとして、

com.google.firebase:firebase-ads:10.0.1

となっていたので、上の行の 'com.google.android.gms:play-services-ads:9.4.0' を変更してみました。

その後、アプリテストをしたところ、GCM を使用しているので、Kindle 互換とはみなされなく なったとさ。
com.google.firebase だと、有無を言わさず GCM 使用と見なされるもよう。

元に戻したら、一応、テストにはパスしたけど、今後どうなっていくんじゃろ。
Amazon の広告が全年齢対応してくれるのが一番いいんだけど・・・。

Android Studio にローカライズ用のツールがっ


遅っ、気づくの遅っ!

Android Studio に、文字列をローカライズ(各国言語対応)するための機能が追加されていたようです。
忘れちゃいそうなので備忘録。

Android Studio の Project Explorer で、app/res/values/strings.xml を右クリックすると、ドロップ・ダウンメニューが表示されるので、Open Translations Editor を選ぶと、ツールが開きます。

左上の地球アイコンをクリック(Add Local)すると、国を選べるので、対応させたい国を選んで、あとは編集。

文章の途中で改行したいときは、下の 「Key:」 、「Default Value:」、「Translation:」が並んでいるペイン(?)の右側にある「1行から複数行」アイコンをクリックして改行したいところで、エンターすればOK。
※改行用に、文章の途中に「/n」を入れても、そのまま文字列「/n」と表示されてしまうので注意。

strings.xml が Default Value になっていて、翻訳したい文字列だけを入力すれば良いので便利。

これまでは、ローカライズ用のファイルを作った後に文字列を追加すると、各国共通で良い文字列でも、それぞれのファイルに追加しなくちゃならなかったけど、コレを使えばその必要もなくなりそうですね。

【Kindle】 アイコンがジャギジャギ


Android Studio でアプリを開発して、Kindle で実機テストすると、カルーセル(ホーム画面のスライドさせるアイコン群)のアイコンがジャギジャギ。

アイコンの画像を入れている mipmap-なんちゃらフォルダの、どの解像度のアイコンを表示してるのか、各フォルダのアイコンを1個づつ、高解像度のアイコンに入れ替えて試していたんだけど、どうにも上手くいかないので、ネット検索したら、いつもの stackoverflowさんにこんな記述 が。

According to a Kindle Fire development tutorial :
Tip 6: Fuzzy App Icons If you're loading apps through ADB or another method, you may have noticed that the app icons on the home screen are small and fuzzy compared to the apps and books that show up through the Kindle Fire interface. As it turns out, the graphics for apps and media purchased through Amazon are loaded from a web service rather than referenced from the manifest file. So, once you get your application on the Amazon Appstore, and download it via the store, your application icon graphics appear correctly.



まぁ、グーグル翻訳したものを、ざっくりかいつまむと、ADB デバッグしてるときはアイコンがジャギジャギになってると思うけど、Amazon アプリストアからインストールされたものは、Web経由で高解像度アイコンが読み込まれるから心配すんな、みたいなことですかね。

リリースするときに、掲載情報とともに高解像度アイコン(512×512)をアップするのはそのためか。

ひー、何年アプリ作ってるんだってね。

【Firebase】 公式で MainActivity へのコードの埋め込みがなくなってる


Firebase の実装法、公式を覗いてみたら、MainActivity へのコードの埋め込みがなくなっていた。
以前の記事はこちら

Firebase で json ファイルを入手して、app フォルダに配置したら、下記を書き換えるだけでOKのようです。

プロジェクト・レベルの build.gradle

classpath 'com.google.gms.goog;e-services:x.x.x'


と、

アプリ・レベルの build.gradle


dependencies {
   compile 'com.google.firebase:firebase-core:x,x,x'
}

apply plugin: 'com.google.gms.google-services'



結局、build.gradle だけを書き換えれば良いことになったのね。