Android 通过Google Play Services与Unity 3D集成AdMob

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

接下来,我开始将AdMob集成到Unity中,但由于它使用的是较旧的版本,我不得不进行一些更改以将其更新到Google Play Services版本,但我认为我可能弄糟了

我将所有必需的库都导入到Unity3D的插件/Android和Eclipse的Java构建路径以及Order和Export中

每次我在Unity中调用脚本时,游戏就会崩溃,LogCat说它在admob.admob$1.run(admob.java:52)处有一个标记“AndroidRuntime”的错误,这是这一行

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>