Android 通过Google Play Services与Unity 3D集成AdMob
接下来,我开始将AdMob集成到Unity中,但由于它使用的是较旧的版本,我不得不进行一些更改以将其更新到Google Play Services版本,但我认为我可能弄糟了 我将所有必需的库都导入到Unity3D的插件/Android和Eclipse的Java构建路径以及Order和Export中 每次我在Unity中调用脚本时,游戏就会崩溃,LogCat说它在admob.admob$1.run(admob.java:52)处有一个标记“AndroidRuntime”的错误,这是这一行Android 通过Google Play Services与Unity 3D集成AdMob,android,unity3d,admob,google-play-services,Android,Unity3d,Admob,Google Play Services,接下来,我开始将AdMob集成到Unity中,但由于它使用的是较旧的版本,我不得不进行一些更改以将其更新到Google Play Services版本,但我认为我可能弄糟了 我将所有必需的库都导入到Unity3D的插件/Android和Eclipse的Java构建路径以及Order和Export中 每次我在Unity中调用脚本时,游戏就会崩溃,LogCat说它在admob.admob$1.run(admob.java:52)处有一个标记“AndroidRuntime”的错误,这是这一行 adVi
adView.loadAd(adRequest);
这是我的来自Unity的AdMobController.js:
#pragma strict
public class AdMobController extends MonoBehaviour {
private static var s_Controller : AdMobController;
private static var jo:AndroidJavaObject;
function Awake()
{
s_Controller = this;
#if UNITY_ANDROID
jo = new AndroidJavaObject("admob.admob");
#endif
}
}
文件admob.java
Eclipse中的AdMob清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.admob.admob"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data android:name="com.google.android.gms.version"
android:value="google_play_services_version"/>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>
最后,Unity中plugins文件夹中用于覆盖Unity构建清单的清单(注意:android:value=“google\u play\u services\u version”被更改,因为使用@integer/Unity和Eclipse都表示找不到任何值并且不会导出)
是的,我就是这么做的。
在unity中创建另一个文件夹;您的插件所在的位置
我的是资产/插件/安卓/
你需要资产/插件/安卓/资源/价值
在values文件夹中,将其保存在名为values.xml的xml文件中
<?xml version="1.0" encoding="UTF-8"?>
-<resources>
<integer name="google_play_services_version">4132500</integer>
</resources>
-
4132500
将文件夹google\u play\u services
从/extras/google/
复制到Unity
中的Assets/Plugins/Android
文件夹中,然后再次构建项目。我该如何称呼xml?我将这些值添加到eclipse项目和Unity中(但必须删除额外的破折号:3),现在我可以使用@integer/value构建unity,但它仍然会在adView.loadAd(AndroidRuntime)上崩溃。应该只需要将它添加到unity项目中,默认情况下它在Eclipse中的正确位置(如果您正确设置了Eclipse项目并链接了playservices.jar)虽然,当我从eclipse导出时,我确实选择了res文件夹中的values.xml,但我不确定它是否有任何作用。(不知道该破折号来自何处。我直接从values.xml复制了该破折号)。[在此处解决]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.TESTCOMPANY.TESTAPP"
android:theme="@android:style/Theme.NoTitleBar"
android:versionName="1.0"
android:versionCode="1"
android:installLocation="auto">
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
android:label="@string/app_name"
android:screenOrientation="sensorLandscape"
android:launchMode="singleTask"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity"
android:value="true" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik"
android:value="true" />
<meta-data android:name="com.google.android.gms.version"
android:value="google_play_services_version"/>
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="19" />
<uses-feature android:glEsVersion="0x00020000" />
<uses-feature android:name="android.hardware.sensor.accelerometer" />
<uses-feature android:name="android.hardware.touchscreen" />
<uses-feature android:name="android.hardware.touchscreen.multitouch"
android:required="false" />
<uses-feature android:name="android.hardware.touchscreen.multitouch.distinct"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
<?xml version="1.0" encoding="UTF-8"?>
-<resources>
<integer name="google_play_services_version">4132500</integer>
</resources>