「村人とヘビ」をAndroid対応しております。
つまずいたところをメモしていきます。
Android Studioを使用しての開発を行っています。
assetsフォルダ内で使えないファイル名がある
ファイル名の先頭と拡張子直前にアンダーバーが使えない。
日本語は基本やめたほうがいい。
iOSのリソースをそのままもってきたらビルドが通りませんでした。
地味に該当ファイルを探すのに手間取りました。
addJavascriptInterfaceが動かない
村人とヘビは、HTML5で開発されているので、JSとネイティブの連携が必須です。
AndroidではJavascriptInterfaceを使うのですが、
Android 4.2.×以降だと関数の上に@android.webkit.JavascriptInterfaceをかかないと動きませんでした。
1 2 3 4 |
@android.webkit.JavascriptInterface public String sendNative(String json_str) { ... } |
ライブラリを入れまくってエラー
広告やゲームサービス、google Analyticsなどのライブラリを入れていたら
エラーでビルドできなくなりました。
関数の定義上限をオーバーしていた。
こちらに大変おせわになりました。
http://qiita.com/furu8ma/items/6cb4b08c423da6a74299
ターミナルで、プロジェクトのルートまで移動して下記コマンドを叩くとエラーが表示されてデバッグしやすい。
1 |
$ bash /Applications/Android\ Studio.app/Contents/gradle/gradle-2.8/bin/gradle :app:assembleDebug --stacktrace --debug |
なんだかんだで、面倒くさくてもターミナルからやるのが一番確実で早く終わる。
ビルド時のヒープが溢れてしまっていた
appのbuild.gradleに下記設定で解決した。
1 2 3 4 5 6 7 8 |
android { //...その他の設定... dexOptions { javaMaxHeapSize "4g" } } |
リリースビルドのフィンガープリント(sha1)取得方法
1.Build -> Generate Signed APK で署名入りAPKを作成
2.Key Store Pathをコピー
3.ターミナルで下記を実行
{{Key Store Path}}にコピーしたものを貼り付ければOK
1 |
keytool -list -v -keystore {{Key Store Path}} |
アドフリ君のバナーを画面下に配置する
アドフリ君のバナーはframelayoutなので、LinearLayoutで囲って下揃えにするのが良さそう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<LinearLayout android:id="@+id/ad_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="bottom" android:orientation="vertical"> <jp.tjkapp.adfurikunsdk.AdfurikunLayout android:id="@+id/adfurikun" android:layout_width="match_parent" android:layout_height="@dimen/ad_height" android:gravity="center|bottom" /> </LinearLayout> |
UIViewはマルチスレッドからいじれない。
webviewからネイティブ連携してandroidのUIを弄ろうとしたら止まった。
UIスレッドでHandlerのインスタンスを生成
1 |
Handler ui_event_handler_ = new Handler(); |
別スレッドから呼び出し
1 2 3 4 5 6 |
ui_event_handler_.post(new Runnable() { @Override public void run() { //UIの処理 } }); |