【问题标题】:How to use admob using capacitor in Ionic?如何在 Ionic 中使用电容器使用 admob?
【发布时间】:2019-11-24 20:21:33
【问题描述】:

我在使用无 admob 插件时遇到问题。我在 ionic 4 项目中执行了这些命令:

    ionic start myapp sidemenu
    ionic capacitor add android 
    ionic cordova plugin add cordova-plugin-admob-free  --save --variable ADMOB_APP_ID="myadmobid"
    npm install @ionic-native/admob-free
    Ionic capacitor sync android 
    ionic capacitor run android 

当我在我的设备上测试程序时,android studio 显示下一个错误并且应用停止。

 FATAL EXCEPTION: main
    Process: com.danieltrevino.myapp, PID: 29617
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/internal/zzur;
        at com.google.android.gms.ads.BaseAdView.<init>(Unknown Source:3)
        at com.google.android.gms.ads.AdView.<init>(Unknown Source:1)
        at name.ratson.cordova.admob.banner.BannerExecutor$1.run(BannerExecutor.java:70)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:280)
        at android.app.ActivityThread.main(ActivityThread.java:6706)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: com.google.android.gms.internal.zzur
        at java.lang.VMClassLoader.findLoadedClass(Native Method)
        at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312

我了解到问题可能与 google play 服务版本有关

android/build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        classpath 'com.google.gms:google-services:4.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

android/capacitor-cordova-android-plugins/build.gradle

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    lintOptions {
        abortOnError false
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

repositories {
    google()
    jcenter()
    mavenCentral()
    flatDir{
        dirs 'src/main/libs', 'libs'
    }
}

dependencies {
    implementation fileTree(dir: 'src/main/libs', include: ['*.jar'])
    implementation 'org.apache.cordova:framework:7.0.0'
    // SUB-PROJECT DEPENDENCIES START
    implementation "com.google.android.gms:play-services-base:11.0.4"
    implementation "com.google.android.gms:play-services-ads:11.0.4"
    // SUB-PROJECT DEPENDENCIES END
}

// PLUGIN GRADLE EXTENSIONS START
apply from: "cordova.variables.gradle"
// PLUGIN GRADLE EXTENSIONS END

for (def func : cdvPluginPostBuildExtras) {
    func()
}

我正在关注下一个tutorial,你知道一些解决方案吗?

【问题讨论】:

    标签: android ionic-framework admob ionic4 capacitor


    【解决方案1】:

    由于框架的新 ionic 4/5 版本,admob 插件存在一些问题。对于那些使用电容器的,现在有两个插件(社区插件)可用,它们很新,所以你可能会在那里发现一些错误。

    这两个插件(在写这篇文章的时候,所以你可以找到两个以上)在文档capacitor's documentation

    现在的两个插件是:

    plugin 1 plugin 2

    【讨论】:

      猜你喜欢
      • 2019-12-17
      • 2021-01-14
      • 2023-03-11
      • 2020-11-25
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多