少し困ったのでメモ
こちらを超参考にしました
環境
cocos2d-x3.0rc0
GooglePlayService
等をインストールしておく。
java
今回は Activityを改造するので
PROJ_DIR/frameworks/runtime-src/proj.Android
以下をさわります。
ここはEclipseのプロジェクトルートなので Eclipse等で読み込んでも良いでしょう
デフォルトでは org.cocos2dx.lua.Cocos2dsActivity.java
が、LAUNCH時に起動するようになってます
このソースを書き換えてもよいのですが、今回は継承してみます
たとえば com.murasamelabo.mimico.MainActivity を作ります
package com.murasamelabo.mimico;
import org.cocos2dx.lua.Cocos2dxActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.WindowManager;
import com.google.android.gms.ads.*;
public class MainActivity extends Cocos2dxActivity {
private WindowManager mWindowManager = null;
private AdView mAdView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
// adView を作成する
mAdView = new AdView(this);
mAdView.setAdUnitId( APP_ID );
mAdView.setAdSize(AdSize.BANNER);
//広告をリクエスト
// 本番
AdRequest adRequest = new AdRequest.Builder().build();
// test用
/*
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) // エミュレータ
.addTestDevice( DEVICE ) //
.build();
//*/
mAdView.loadAd(adRequest);
// 重ね合わせするViewの設定を行う
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER;
layoutParams.x = 0; // 表示位置 x
layoutParams.y = 0; // 表示位置 y
layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.type = WindowManager.LayoutParams.TYPE_TOAST; // ゲーム画面より前面に表示
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; // 自分以外のところがタッチされたとき、背後のビューにタッチイベントを渡す。
// WindowManagerを取得する
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
// WindowManagerにAdMobのビューを追加する。
mWindowManager.addView(mAdView, layoutParams);
}catch( Exception e ){
}
}
@Override
public void onDestroy() {
if( mWindowManager != null)
mWindowManager.removeView(mAdView);
if( mAdView != null)
mAdView.destroy();
super.onDestroy();
}
}
そして libsに google-play-services.jar を置く
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.murasamelabo.mimico"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="18" />
<uses-feature android:glEsVersion="0x00020000" />
<application android:label="@string/app_name"
android:icon="@drawable/icon">
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity android:name="com.murasamelabo.mimico.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|keyboardHidden|screenSize">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="cocos2dlua" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
<supports-screens android:anyDensity="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
自分のアプリ用に 適宜かきかえてください
Build
3.0rc では cocosコマンドでビルド実行ですね
$cocos run -j4 -p android
エラーが出ます
configChangesの値が 対応してないようです。
project.propertyを見ると target=android-10
となっており、AndroidSDK-10 では対応していないようです
がしかし project.propertyは ビルドのたびに上書きされるので
ここを target=android-18 等にしても 再び 10に戻されだめです
フラグを削除すると実行時に configChangesの値が足りないと AdMobが起動しません
ということで
奥の手
Build.xml の
<loadproperties srcFile="project.properties" />
を
<loadproperties srcFile="project2.properties" />
等にかえ、該当ファイルを target=android-18 と設定すれば
動いた!!
備考
cocosコマンドにて project.property を作成しているようで
tools/cocos2d-console/bin/cocos.py にて
def select_default_android_platform():
sdk_root = check_environment_variable('ANDROID_SDK_ROOT')
platforms_dir = os.path.join(sdk_root, "platforms")
if os.path.isdir(platforms_dir):
for num in range (10, 19+1):
android_platform = 'android-%s' % num
if os.path.isdir(os.path.join(platforms_dir, android_platform)):
Logging.info('%s is found' % android_platform)
return num
return None
ここで sdk-10に設定されているようです
正しい解決法知っている人教えてください!