質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Cocos Creator

Cocos Creatorは、Cocos2d-x向けの統合開発環境。UI・アニメーションの編集、JavaScriptのコーディング、ビルドなどを一括して行うことができるエディタです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

2858閲覧

Android上でのAdMob広告表示

Boemusan

総合スコア44

Cocos Creator

Cocos Creatorは、Cocos2d-x向けの統合開発環境。UI・アニメーションの編集、JavaScriptのコーディング、ビルドなどを一括して行うことができるエディタです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/09/27 07:55

編集2016/09/27 08:05

Cocos2d-xでビルドしたAndroid Studioのプロジェクトで、AdMobを実装したいのですが、上手くいきません。
丸1日以上試行錯誤しているのですが、Android実機が無く、エミュレータで実行しているため、少し変更して試すにも時間が掛かっています。
広告だけの問題だと確認するために、新しく作成したプロジェクト(Hello World)でテストしています。
どうか、ご教示ください。よろしくお願いいたします。

#環境
・PC:MacOS(Sierra)
・Cocos Creator v1.2.2 + 付属のCocos2d-xエンジン及びAndroid NDK

・Android Studio v2.2
・エミュレータ:
Name: AVD_for_Galaxy_Nexus_by_Google
CPU/ABI: ARM (armeabi-v7a)
API Level: 22

###AndroidManifest.xml

- 省略 - <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> <!-- Tell Cocos2dxActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="cocos2djs" /> - 省略 - <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> - 省略 - <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> - 省略 - </manifest>

###build.gradle(プロジェクト)

- 省略 - dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.google.gms:google-services:3.0.0' } } - 省略 -

###build.gradle(Module:helloWorld)

- 省略 - dependencies { compile 'com.google.android.gms:play-services-ads:9.6.1' compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':libcocos2dx') } apply plugin: 'com.google.gms.google-services'

###AppActivity.java

package org.cocos2dx.javascript; import org.cocos2dx.lib.Cocos2dxActivity; import org.cocos2dx.lib.Cocos2dxGLSurfaceView; import com.google.android.gms.ads.*; // For JS and JAVA reflection test, you can delete it if it's your own project import android.app.Activity; import android.os.Bundle; import android.app.AlertDialog; import android.content.DialogInterface; // ------------------------------------- import org.cocos2dx.javascript.SDKWrapper; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; public class AppActivity extends Cocos2dxActivity { private static AppActivity app = null; private static Activity activity = null; private static AdView adView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = this; SDKWrapper.getInstance().init(this); } @Override public Cocos2dxGLSurfaceView onCreateView() { Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); // TestCpp should create stencil buffer glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8); SDKWrapper.getInstance().setGLSurfaceView(glSurfaceView); return glSurfaceView; } // For JS and JAVA reflection test, you can delete it if it's your own project public static void showAlertDialog(final String title,final String message) { // Here be sure to use runOnUiThread app.runOnUiThread(new Runnable() { @Override public void run() { AlertDialog alertDialog = new AlertDialog.Builder(app).create(); alertDialog.setTitle(title); alertDialog.setMessage(message); alertDialog.show(); } }); } //Cocos Creator(JS)から呼ばれるメソッド public static void createAdView() { activity.runOnUiThread(new Runnable() { @Override public void run() { if (adView == null) { adView = new AdView(activity); adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); //テスト用広告ID adView.setAdSize(AdSize.BANNER); final RelativeLayout relativeLayout = new RelativeLayout(activity); activity.addContentView(relativeLayout, new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); relativeLayout.setVerticalGravity(Gravity.BOTTOM); relativeLayout.addView(adView); final AdRequest adRequest = new AdRequest.Builder().build(); // .addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build; // テスト用IDでも必要なのか不明なので今は使っていません adView.loadAd(adRequest); } } }); } //Cocos Creator(JS)から呼ばれるメソッド public static void showAdView() { if (activity == null) return; if (adView == null) { createAdView(); return; } activity.runOnUiThread(new Runnable() { @Override public void run() { adView.setVisibility(View.VISIBLE); } }); } // Cocos Creator(JS)から呼ばれるメソッド(今回はまだ使用していません) public static void hideAdView() { if (activity == null) return; if (adView == null) return; activity.runOnUiThread(new Runnable() { @Override public void run() { adView.setVisibility(View.INVISIBLE); } }); } @Override protected void onResume() { super.onResume(); activity = this; SDKWrapper.getInstance().onResume(); } - 省略 - }

#発生している問題・エラーメッセージ
以下のエラーメッセージが、AppActivityのcreateAdView内のadView.loadAd(adRequest)で起きています。

W/GooglePlayServicesUtil: Cannot find Google Play services package name. android.content.pm.PackageManager$NameNotFoundException: com.google.android.gms at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:114) at com.google.android.gms.internal.zzsh.getPackageInfo(Unknown Source) at com.google.android.gms.common.zze.zzby(Unknown Source) at com.google.android.gms.common.zze.zzbx(Unknown Source) at com.google.android.gms.common.zze.zzbt(Unknown Source) at com.google.android.gms.common.zze.isGooglePlayServicesAvailable(Unknown Source) at com.google.android.gms.common.zzc.isGooglePlayServicesAvailable(Unknown Source) at com.google.android.gms.ads.internal.util.client.zza.zzas(Unknown Source) at com.google.android.gms.ads.internal.client.zzl.zza(Unknown Source) at com.google.android.gms.ads.internal.client.zzl.zza(Unknown Source) at com.google.android.gms.ads.internal.client.zzae.zzkh(Unknown Source) at com.google.android.gms.ads.internal.client.zzae.zzkg(Unknown Source) at com.google.android.gms.ads.internal.client.zzae.zza(Unknown Source) at com.google.android.gms.ads.BaseAdView.loadAd(Unknown Source) at com.google.android.gms.ads.AdView.loadAd(Unknown Source) at org.cocos2dx.javascript.AppActivity$2.run(AppActivity.java:106) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) W/GooglePlayServicesUtil: Google Play Store is missing.

###試したこと

Google Play Serviceのバージョン表記に不備があったり、ダウンロードできていない、というようなことを考えましたが、External Librariesにしっかり表示されていますから、問題ないように思います。
AppActivity内の、AdViewやAdActivityの実装があやしいと思うのですが
私はAndroidの仕様に詳しくないので、よくわからない状態です・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

新しく作成したプロジェクト(Hello World)でテストしています

これはCocosのプロジェクトでしょうか?
その前にAndroidでのテストをしたほうがいいように思います

Androidで見ると、複数の設定が間違っていると思います
Cocosとの兼ね合いであれば別ですが

java

1// これは?なくてもいいのでは、少なくともバージョンが違う 2classpath 'com.google.gms:google-services:3.0.0' 3 4// これはどこに設定されているのでしょう?多分いらないのでは 5apply plugin: 'com.google.gms.google-services' 6 7// この箇所はthisでいけます 8adView = new AdView(this); 9adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); //テスト用広告ID 10adView.setAdSize(AdSize.BANNER); 11final RelativeLayout relativeLayout = new RelativeLayout(this); 12this.addContentView(relativeLayout, new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 13relativeLayout.setVerticalGravity(Gravity.BOTTOM); 14relativeLayout.addView(adView); 15

参考

投稿2016/09/28 06:02

編集2016/09/28 06:04
aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Boemusan

2016/10/01 06:48

ご回答いただきありがとうございます。 Androidエミュレータで実行した結果、エラーが出ているという状況です。 やはり、Cocos2d-JSでのビルドが問題なのだと思います。
guest

0

自己解決

過去の質問やWeb上の記事に載っている方法をいくつか試しましたが、やはり同じエラーが出ました。

現行のCocosCreatorはSDKBoxに対応しているようなので、できれば手動で導入したかったのですが、SDKBoxで広告を実装することにしました。

投稿2016/10/01 06:52

Boemusan

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問