添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

We deleted out all of the old Google Admob files and installed the latest Google AdMob Plugin:

GoogleMobileAds-v5.3.0.unitypackage

We followed the documentation and including executing Assets > External Dependency Manager > Android Resolver > Resolve but we will get the bellow error when building the APK.

How do we resolve?

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
              

I just installed AdMob and was getting the same exception (from sdkmanager.bat). It appears to be because Unity is using a different version of the Java SDK than what it should be.

If you look in Unity\2020.1.14f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK ools\bin\sdkmanager.bat (using the Android SDK path from Edit | Preferences | External Tools), the script tries to find the SDK by looking at the JAVA_HOME environment variable first, and if that doesn’t exist, it tries to find it from java.exe. In my case, I had some random Java.exe in the PATH, and Unity was using this instead of the SDK specified in the preferences.

So you have 2 reasonable options:

  • Set a JAVA_HOME system environment variable to Unity’s Android SDK.
  • Put Unity’s Android SDK in the PATH earlier than other Javas.
  • Or you can do what I did:
    3. Add the following line to the top of sdkmanager.bat

    set JAVA_HOME=%~dp0..\..\..\OpenJDK