cocos2d-xのAndroidゲームを動かすeclipseの初期設定
初期設定
macにて
eclipse起動
設定画面を開く メニューバーのEclipse > 環境設定(Preference)
C/C++ > Build > Environment を開く
右側にある「Add」を押す New Variableウィンドウにて、下記NDK_ROOTを環境変数として追加する
- name: NDK_ROOT
- value: /Applications/Android/ndk
Androidプロジェクトを開く
File > New > Other Android Project from Existing Codeを選択
プロジェクトフォルダを選択し、出てきた一覧から次の2つを選択
「Finish」をクリックするとビルドが始まる
Android エミュレーターを作成する
Window > Android Virtual Device Manager を選択
デバイス一覧から任意のデバイスを選択して、Create ADVをクリック
初期設定ウィンドウにて各種設定を入力 Emulation Options: の項目にて、Use Host GPUにチェックを入れる。
「OK」をクリックすればエミュレーターが作成される。
プロジェクトを起動する
レフトペインから該当のプロジェクトフォルダを選択 > Run As > Android Application を選択
ここで以下のようなエラーが出た
Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer; Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer;
ここに様々な解決策が書いてあって android - Unable to execute dex: Multiple dex files define Lcom/myapp/R$array; - Stack Overflow
私の場合は、以下で解決 click on project -> Build path -> configure build path -> Libraries -> Android dependencies を選択して、remove
その後、(プロジェクトのCleanはしないで)Run As > Android Applicationを実行したら動きました。
cocos2d-xで新しいプロジェクトを作成する
macでcocos2d-xの新しいプロジェクトを作成する
コマンドの構成は次の通り
$ cocos new {プロジェクト名} -p {パッケージ名} -l {言語} -d {ディレクトリ}
実行してみる
$ cocos new HelloCocos -p com.katsat.HelloCocos -l cpp -d ~/Desctop Running command: new > Copy template into /Users/myuser/Desktop/HelloCocos > Copying cocos2d-x files... > Rename project name from 'HelloCpp' to 'HelloCocos' > Replace the project name from 'HelloCpp' to 'HelloCocos' > Replace the project package name from 'org.cocos2dx.hellocpp' to 'com.katsat.HelloCocos' > Replace the mac bundle id from 'org.cocos2dx.hellocpp' to 'com.katsat.HelloCocos' > Replace the ios bundle id from 'org.cocos2dx.hellocpp' to 'com.katsat.HelloCocos'
上記の場合、デスクトップにプロジェクトフォルダが出来上がっている
cocos2d-x開発環境構築メモ
以下、Macにてcocos2d-xの開発環境を作ったときのメモ
Command line Toolsをインストールする
ターミナルを立ち上げ
$ xcode-select --install
Android版の開発を行う場合は別途javaが必要 Macの場合、次のコマンドで自動的にセットアップが開始されるが、すでに完了している場合は以下のようにバージョン番号が表示される。
$ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
今回は統合開発環境にeclipse + ADTを採用 eclipseをダウンロード、インストールする
Installing the Eclipse Plugin | Android Developers
Android NDKのインストール cocos2d-xはAndroid上でC++を動かすのにNDKの導入が必要 現時点でcocos2d-xから最新版NDKは利用出来ないそうなので下記URLからr9dをダウンロード
https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2
解凍したフォルダを/Application/Android/配下に移動(※任意の場所)
Apache ANTの導入 cocos2d-xはAntを利用して簡単にビルドが行えるように設計されている 以下ページからzipをダウンロード Apache Ant - Binary Distributions 解凍したフォルダを/Application/Android/配下に移動(※任意の場所)
export ANDROID_SDK_ROOT=/Applications/Android/android-sdk-macosx export NDK_ROOT=/Applications/Android/android-ndk-r9d export AND_ROOT=/Applications/Android/apache-ant-1.9.4
読み込み
$ source ~/.bash_login
Android SDKの導入 eclipseを起動し、Android SDK Managerを起動 Toolsと必要なバージョンのAndroid APIをインストールする。
cocos2d-xのインストール cocos2d-xのサイトから最新版をダウンロードする
Download | Cocos2d-x: World's #1 Open Source Game Development Platform
zipを解凍し、ホームディレクトリ直下にcocos-2d-xという名前で配置
cocos-2d-xが正しくNDK、SDK、ANTの場所を見つけられているか確認
$ cd cocos-2d-x $ ./setup.py Setting up cocos2d-x... ->Check environment variable COCOS_CONSOLE_ROOT ->Search for environment variable COCOS_CONSOLE_ROOT... ->COCOS_CONSOLE_ROOT is found : /Users/katsuyuki/cocos2d-x/tools/cocos2d-console/bin ->Check environment variable COCOS_X_ROOT ->Search for environment variable COCOS_X_ROOT... ->COCOS_X_ROOT is found : /Users/katsuyuki/cocos2d-x ->Check environment variable COCOS_TEMPLATES_ROOT ->Search for environment variable COCOS_TEMPLATES_ROOT... ->COCOS_TEMPLATES_ROOT is found : /Users/katsuyuki/cocos2d-x/templates ->Configuration for Android platform only, you can also skip and manually edit "/Users/katsuyuki/.bash_profile" ->Check environment variable NDK_ROOT ->Search for environment variable NDK_ROOT... ->NDK_ROOT is found : /Applications/Android/android-ndk-r9d ->Check environment variable ANDROID_SDK_ROOT ->Search for environment variable ANDROID_SDK_ROOT... ->ANDROID_SDK_ROOT is found : /Applications/Android/android-sdk-macosx ->Check environment variable ANT_ROOT ->Search for environment variable ANT_ROOT... ->ANT_ROOT is found : /Applications/Android/apache-ant-1.9.4
cocosコマンドを実行してみる
$ cocos /Users/myuser/cocos2d-x/tools/cocos2d-console/bin/cocos.py 1.4 - cocos console: A command line tool for cocos2d-x Available commands: run Compiles & deploy project and then runs it on the target luacompile minifies and/or compiles lua files deploy Deploy a project to the target compile Compiles the current project to binary new Creates a new project jscompile minifies and/or compiles js files Available arguments: -h, --help Show this help information -v, --version Show the version of this command tool Example: /Users/myuser/cocos2d-x/tools/cocos2d-console/bin/cocos.py new --help /Users/myuser/cocos2d-x/tools/cocos2d-console/bin/cocos.py run --help
これにて完了
Androidアプリ App Widget ウィジェットの作り方簡単まとめ
Androidのウィジェットを開発するのに参考になるページ
ほとんどのブログが基本的なことばかり書いているところここは非常に実践的な実装での解説がされています。
ただ、Android 1.5 時代のコードなのでサンプルを実行しても動かない?
Androidのホーム画面用App Widgetを作成する
http://japan.internet.com/column/developer/20091030/26.html
AndroidのApp Widgetでユーザー操作を処理する
http://japan.internet.com/developer/20091127/26.html
「Your project contains error(s)〜」エラーの解決法
家で開発してたAndroidアプリのソースコードを職場のeclipseにコピーしたときにこのエラーに陥ったときのメモ。
Androidプロジェクトを実行したとき次のアラートがポップアップしました。
「Your project contains error(s),please fix them begore running your application」
ググッてみるとプロジェクトをクリーンすると良いと書いてあります。
androidプロジェクト実行時のエラー
それでも直らないので更に検索すると、クリーンした後、ソースをいじってビルドすると良いと書いてある。
android+eclipseでプロジェクトだけにXがつき、クリーンしても消えない場合
それでもダメ、eclipseの「問題」ビューを見ると
「Error generating final archive: Debug certificate expired on yy/mm/dd HH:ii!」
てのが出てた。調べるとdebug.keystoreの期限切れということがわかった。
Androidの「Debug certificate expired」エラーの対処方法
同サイトにキーストアの生成方法も書いてあったのでそれを参考に生成
Androidのデバッグ用キーストアとキーを生成する方法
生成したファイルを既存のものに上書きして、eclipse再起動します。
それでもプロジェクトに付いた「x」は消えてないので、
再度上記の「クリーン」と「ビルド」をやったら直りました!
Capistranoでdeploy時にtrunkかtagを選べるようにする
こちらに良い方法が書いてありました。
Paul Gross's Blog - Deploying trunk or tags with capistrano
set :repository_root, "http://www.example.com/svn/myproject" set(:tag) { Capistrano::CLI.ui.ask("Tag to deploy (or type 'trunk' to deploy from trunk): ") } set(:repository) { (tag == "trunk") ? "#{repository_root}/trunk" : "#{repository_root}/tags/#{tag}" }
cap deployを実行するとデプロイ元を聞いてくるようになるので、
"trunk"や任意のタグ名を入力することで自在に選択できて便利。
シェルでqmailを使ってメール送信する
#!/bin/bash # To MAIL_TO="webmaster@hoge.com" # From MAIL_FROM="alert@hoge.com" # Subject MAIL_TITLE="subject" # Body MAIL_BODY="honbun" (echo -e To: $MAIL_TO; echo -e Subject: $MAIL_TITLE; echo -e $MAIL_BODY;) | /var/qmail/bin/qmail-inject -f $MAIL_FROM