FC2ブログ

Amazon Ads を使ってみようかと

Kindle の加速度センサーが値を返してこないなぁ・・・、で、ネット検索したところ、アマゾン アプリ 開発者ポータル にぶち当たったので、思わず登録。

で、API の解説を見ていたら Ads なんてものがあったので、後学のためにテストしてみようかな、なんて邪なことを考えたもんだから・・・・。

API のインストールについては、ユーザー登録の上、下記をご覧ください。

Setting Up Your Development Enviroment

ワタシは Eclipse を使っているので、下の方の Using the Eclipse IDE を参考に Android SDK Manager の 「Tools」メニュー → Manage Add-on Site... → User Defined Sites → 「New...」ボタンで amazon さんの add-on を追加してインストールしました。

で、まぁ、モバイル広告のクイックスタートガイド の「 Java のコードでバナー広告を追加する」を見ながら組み込んでみたんですが、エラー。

うーん、adView の変数の指定がない・・・。

ので、MainActivity クラスの中で、
private AdLayout adView;

とか書いてやる。

で、ワタシのような素人は当然のごとく res/layout/activity_main.xml で View を作ってるので、

// If you declared AdLayout in your xml you would instead
// replace the 3 lines above with the following line:
// this.adView = (AdLayout) findViewById(R.id.adview);

の、最後の行のコメントを外して、この上の3行をコメント・アウトしてみる。

ところでさぁ、英語版の参考書でもそうなんだけど、

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);

を、1行とカウントするのって普通なの? ワタシの感覚だとこれだけで3行なんだけど。
というわけで、ワタシの感覚ではコメント・アウトされてない5行をコメント・アウトする。

おお、エラーが取れた!

けど、実行すると、いつもの FATAL EXCEPTION: main ・・・。

うーん、追跡調査項目に追加。


あ、加速度センサーはその後 Eclipse を再起動したら、値を返してくれるようになりました。

チュートリアル1冊終了

というわけで、ネットで拾った参考書1冊分の勉強終了。ま、100ページくらいの軽いものだけど。
やはり、開発環境が安定するとはかどる。

一応、

・シーンの作り方、切替え方
・メニューの作り方、コールバックの組み込み方
・スプライトの作り方、アクションのさせ方。
・タッチ・イベントの取得
・ヒット・チェックの仕方
・加速度センサーの値の取得
・音の出し方

の基本的なことはやってみた。
まぁ、もちろんいつも通り、こうすりゃ動く程度の理解ですが。

海外のパブリッシャーだと、参考書を無料ダウンロードさせてくれたりするところもあるんですねぇ。
下手すりゃ、画像や音のデータも一緒に。
いや、もちろん英語版なんだけども。

SDK は無料だし、解説本も無料となると、まぁ、すそ野は広がるかなぁ。
言語の壁に阻まれて、まぁ、海外と比較してだけど、日本のゲーム開発のすそ野は広がりづらいのかもなぁ。
などと、考えてしまったこの4日間だったのでした。

さて、ネット検索で2冊目を見つけたので、明日からはコヤツを。
にしても、Eclipse 対応の参考書がありませんねぇ。
やっぱり、Xcode のほうが開発しやすいのかなぁ。

とはいえ、ワタクシ iOS 端末もってませんですし。
まぁ、コードの書き方自体はそれほど変わらないので、なんとかなりそうな予感はしてるんですが。

cocos2d-x v3.6 + Mac + Eclipse 開発環境構築まとめ

というわけで、Mac の電源を落として外出、帰宅してから Eclipse を起動したところ、問題なく動作中。
一応、開発環境が整ったこととして、新規プロジェクトの立ち上げ手順をまとめておく。

環境:
Mac OS X 10.9.5 (Mavericks)
Eclipse ADT Bundle 版
NDK r10d
Cocos2d-x V3.6

新規プロジェクトの作成 【ターミナル】

cocos new MyGame -p com.mydomain.mygame -l cpp -d /MyProjDir



プロジェクトのインポート 【以降Eclipse】

MyGame/proj.android
MyGame/cocos2d/cocos/platform/android/java



環境変数の設定

プロパティ → C/C++ ビルド → 環境で以下を設定

ANDROID_SDK_ROOT
ANT_ROOT
COCOS_CONSOLE_ROOT
NDK_ROOT



ビルダーの追加

プロパティ → ビルダー で CDT ビルダー にチェック



Android NDK の設定

環境設定 → Android → NDK でパスを指定



ビルド・コマンドの設定

プロパティ → C/C++ ビルド で ビルド・コマンドを設定

${COCOS_CONSOLE_ROOT}/cocos compile -p android -m release



Android Library Update 中に発生するエラー回避
[ 追記 ] 64bit OS を使用している場合。一度、プロジェクトをクリーン、もしくはビルドしてから。

proj.android にある不可視ファイル .cproject の以下の部分を削除

<cconfiguration id="0.1230402123.1377291156">
        ・
        ・
        ・
</cconfiguration>
(164行目から177行目まで)



という設定で今のところは動作中です。

詳細は←右の CATEGORIES から、cocos2d をクリックして、ここまでの素人の悪戦苦闘ぶりをご覧ください。

解決か? Android Library Update 問題

またしても、Eclipse の起動で、"Android Library Update"中内部エラーが発生しました。のメッセージ。

プロジェクトを作り直すと出なくなるので、問題を先送りしたのですが、毎日初回起動時に出るとなると放置しておくわけにもいかず、根本的な解決策をネット検索してみる。

英語では、An internal error occurred during: "Android Library Update" というらしいので、こちらの語句で検索。

StackOverFlowさん
codeitiveさん

なにやら、プロジェクトの中にある .cproject ファイル(不可視)を編集しろとか言っている模様。

なので、proj.android の中の.cproject をエディタで開いて

<cconfiguration id="0.1230402123.1377291156"> を検索して、次の </cconfiguration> までを削除してみました。
(ワタシの .cproject では164行目から177行目まで)

そして、Eclipse を起動したら、エラーは出なくなりました。
しかし、明日はどうなるか分からない。

うーん、こういうことがあると IDE 自体を信じられなくなっていかん。

どうも、64bit OS のときに問題が出るみたいですねぇ。

アイディア・メモ

自転車に乗っていたら、前を行く自転車のシートポストに「とばせ!」シールが貼ってあった。
これ、弱虫ペダルの名言にしたら、そこそこ売れるんじゃないか、とか。


テレビで、スマホ教材と紙教材による勉強法(いわゆるスマ勉、紙勉)の特集をやってたけど、まぁ、要領の悪いというか脳みその容量が少ないというか、そんなワタシは、板書をノートに書き写すのに手一杯で、先生の説明を聞き逃すことも多かったのよね。

そこで、板書をスマホで撮影すると、OCR ソフトで勝手に清書してくれるようなアプリとかどうかね。
そして、清書してくれるついでに、テスト範囲を指定すると、製本レイアウトにしてくれると助かるー。
あ、そうか、音声入力で先生の説明もテキスト化してくれると良いのか。
どうかな。

そんなワタシの学生時代の成績は推して知るべし。
聞き逃した説明のところが分からず、当然、次のステップも分からず・・・。
しかし、ノートだけは取り続ける、まぁ、勤勉なバカの出来上がり。

classpth と Support Library Update の件

昨日の、classpath と Support Library Update のトラブル、結局、有益な解消法も見つからず、ワークスペースの.meta フォルダを削除、cocos new コマンドで新規にプロジェクトを作って、何度目だ HelloWorld。

その後、ちょっとコードを書き換えて(log("test");とか)、ちゃんとコンパイルが掛かる事を確認して、さて、チュートリアルの続きを・・・と思って、いや、ちょっと待てよ? 一昨日もここまで出来てたけど、Mac の電源を落として、昨日、続きをやろうとしたら、トラブったんじゃなかったっけ?

というわけで、一回、Eclipse を終了して、Mac を再起動してみる。

そして、Eclipse を起動すると、あらら、Android SDK Content Loader で引っかかってる。

ネット検索してみると、こんなページが。

http://xmodulo.com/how-to-fix-android-sdk-content-loader-stuck-at-0-in-eclipse.html

で、一番、プロジェクトに影響の少なそうな Solution Three を試してみる。

ターミナルから

adb kill-server



而してのち、Eclipse 再起動。

うーん、これが解決に至った理由なのかどうか分かりませんが、一応、無事に起動してコンパイルも大丈夫だった模様。


あいかわらず、build_native.py を使っていると、Please use cocos console instead. が表示されるので、設定した環境変数 COCOS_CONSOLE_ROOT を使って、

${COCOS_CONSOLE_ROOT}/cocos compile -p android -m release



にしておく。
トラブル軽減につながると良いんですが・・・。

なんだか、Classes と Resources フォルダは毎回バックアップを取ったほうが良いような気がしてきた。
バッチ組んでおこうかなぁ。

一応、Time Machine で、ディスク全体のバックアップはもちろんしてるんだけれど。

ぐぬぬぬ

一通り、開発環境も整ったので、さて、チュートリアルでもやってみるかと Eclipse を起動したところ。

Adjusting android project classpath

Android Library Update

中に内部エラーが発生したとか言われる・・・。

そして、ビルドすると、

NullPointerException

classpath のほうは、

プロパティ → Java のビルド・パス → 順番およびエクスポート で、

Android x.x.x

にチェックを入れたらエラーが出なくなったみたいだけど、Android Library Update のほうがどうにもこうにも。

SDK Manager で Android Support Library を Delete Package → Install Package してもダメ。
プロジェクトを右クリック、Android Tools → Add Support Library してもダメ。
プロジェクトを削除して、Eclipse を終了 → クリーン起動してプロジェクトをインポートし直してもダメ。

・・・、Mac + Eclipse + Cocos2d-x + NDK r10d ってそんなに食い合わせ悪いんですかね?

もう、ちょっとくじけそうなんですけど・・・。
今日は、いじけて寝る。


電車に乗ったら

久しぶりに電車に乗って中吊り広告を見たよ。

西武鉄道の「秩父さんぽ旅」

テレビのCMでは見ていたけど、改めて文字を読むと、うーむ、狙いすぎじゃね?
週末ちち部
イメージキャラクターが由高由里子で良かった。
巨乳のグラビア・アイドルだったら、そっち方面しか想像できない。

週刊文春の浅田真央の記事
引退予測と併せて、競技から離れた最近の行動を「リア充」って書いてたけど、あのっ! フィギュア・スケートで世界一になるって、リアルな世界で充実してるんで、ある意味「リア充」だと思うんですけどっ。

と、「リア充? なにそれ、おいしいの?」な引きこもりから見ると、どうにも引っかかる言葉の使い方だったのでした。

こちらの最後のほうでで書いた

warning: 'long int cocos2d::cc_utf8_strlen(const char*, int)' is deprecated ~



EOFError: EOF when reading a line

を解消するために、NDK を r10d から r9d に落としてみたりしたんだけど、全然直らなかった・・・。

んだけど、関係なく、

Installing .apk
Success!

の表示が。
AVD ではなく、実機なんだけど。

というわけで、再び、r10d に戻してみると、問題なく動作するもよう。

うーん、AVD を使おうとして、Application.mk の APP_ABI を弄り回したのがいけなかったのかも。

やっぱり、デフォルトのまま使っておくのが安全なのかもしれませんなぁ。


AVD が起動しないのだが

もはや、上手く行かないことが通常のルーティン となりつつある昨今、まぁ、自分でも良く飽きないものだと思いつつ。

cocos2d-x v3.6 + eclipse で、AVD が起動しないよ問題。

症状としては

x86 + Use host GPU は起動して apk もインストールできるけど、なぜか一定時間実行すると、「停止しました」で強制終了。

armeabi (もしくはarmeabi-v7a) では、Waiting for HOME ('android.process.acore') to be launched... で、Use host GPU をオンしてもオフしても、そもそも Online にならない。

ワーク・スペースを切り替えて、JAVA プロジジェクトを実行すると、armeabi-v7a が無事実行を確認、x86 はOnline になるものの、何かのスレッドが起動しようとしては落ちているようで、apk インストールできる状態にならない。

うーん、この辺、毎回症状が違うようだなぁ。

実機デバッグはちょっとコワいんだけど、しょうがないかー。

あっ! Parallels desktop に Android をインストールできたはずなので、VM で動かして apk をインストールできるかどうか試してみよう! と思いついたものの、「Parallels アプライアンスサーバに接続できません」とか言われて断念。



ところでさぁ、armeabi-v7a でビルドしてたら、

UIEditBoxImpl-android.cpp で、
warning: 'long int cocos2d::cc_utf8_strlen(const char*, int)' is deprecated (declared at <MyProj>/proj.android/../cocos2d/cocos/./base/ccUTF8.h:163) [-Wdeprecated-declarations]

とか、

EOFError: EOF when reading a line

が出てるんですけど・・・。

ていうか、今、気がついたんだけど、V3.6 使うって結構な人柱なのかしら・・・。