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の仕様に詳しくないので、よくわからない状態です・・・。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/01 06:48