yandexmobile / yandex-ads-sdk-android

Other
78 stars 22 forks source link

com.yandex.mobile.ads.impl.h40: There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file. #187

Closed NiplerA0 closed 1 year ago

NiplerA0 commented 1 year ago

Начал обновляться и теперь выдает постоянно ошибку при запуски приложения: FATAL EXCEPTION: main Process: com...., PID: 20102 java.lang.RuntimeException: Unable to start activity ComponentInfo{com..../com.....MainActivity}: com.yandex.mobile.ads.impl.h40: There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2925) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1818) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6762) 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: com.yandex.mobile.ads.impl.h40: There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file. at com.yandex.mobile.ads.impl.u0.a(SourceFile:6) at com.yandex.mobile.ads.impl.yc0.a(SourceFile:7) at com.yandex.mobile.ads.impl.ku.(SourceFile:2) at com.yandex.mobile.ads.interstitial.InterstitialAd.(SourceFile:1) at com.....MainActivity.onCreate(MainActivity.java:191) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2905) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1818)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6762)  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) 

По адресу MainActivity.java:191 mInterstitialAd = new InterstitialAd(this);

gradle;

apply plugin: 'com.android.application'

android { compileSdkVersion 33 defaultConfig { applicationId "..." minSdkVersion 19 targetSdkVersion 31 versionCode 29 versionName "29.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

buildTypes {
    release {
        minifyEnabled false
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

}

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) implementation 'androidx.appcompat:appcompat:1.6.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'com.roomorama:caldroid:3.0.1'

implementation 'com.yandex.android:mobmetricalib:5.0.1'
implementation 'com.yandex.android:mobileads:5.5.1'

implementation 'com.google.android.gms:play-services-ads:21.3.0'

testImplementation 'junit:junit:4.12'

configurations {
    all*.exclude group: 'com.google.firebase', module: 'firebase-common'
    all*.exclude group: 'com.google.firebase', module: 'firebase-core'
    all*.exclude group: 'com.google.firebase', module: 'firebase-iid' }

}

вырезка места, в котором возникает ошибка:

package com.yandex.mobile.ads.impl;

import android.annotation.SuppressLint; import android.content.ComponentName; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import kotlin.jvm.internal.Intrinsics; import org.jetbrains.annotations.NotNull;

public final class u0 { @NotNull private final k0 a;

public u0() {
    u0 var10000 = this;
    super();
    k0 var1;
    var1 = new k0.<init>();
    var10000.a = var1;
}

@SuppressLint({"WrongConstant"})
public final void a(@NotNull Context var1) throws h40 {
    u0 var10000 = this;
    Context var10001 = var1;
    Intrinsics.checkNotNullParameter(var1, "context");
    ComponentName var4;
    var4 = new ComponentName.<init>(var1.getPackageName(), "com.yandex.mobile.ads.common.AdActivity");

    boolean var6;
    ActivityInfo var7;
    try {
        var7 = var10001.getPackageManager().getActivityInfo(var4, 0);
    } catch (PackageManager.NameNotFoundException var3) {
        var6 = false;
        throw new h40("There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file.");
    }

    ActivityInfo var5 = var7;

    try {
        Intrinsics.checkNotNullExpressionValue(var7, "context.packageManager.g…ityInfo(componentName, 0)");
        var10000.a.a(var5);
    } catch (PackageManager.NameNotFoundException var2) {
        var6 = false;
        throw new h40("There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file.");
    }
}

}

mobile-ads-github commented 1 year ago

Добрый день. С какой версии рекламного SDK вы обновлялись? На каких устройствах воспроизводится проблема? Проблема воспроизводится на нескольких устройствах?

Проверьте пожалуйста в артифакте дебажной сборки вашего приложения наличие com.yandex.mobile.ads.common.AdActivity в AndroidManifest. Самый простой способ это сделать, через просмотр содержимого APK файла в Android Studio.

NiplerA0 commented 1 year ago

Добрый день. С какой версии рекламного SDK вы обновлялись? На каких устройствах воспроизводится проблема? Проблема воспроизводится на нескольких устройствах?

Проверьте пожалуйста в артифакте дебажной сборки вашего приложения наличие com.yandex.mobile.ads.common.AdActivity в AndroidManifest. Самый простой способ это сделать, через просмотр содержимого APK файла в Android Studio.

Обновлялся с: (Остальные приложения тоже с этих версий мне нужно будет обновить, но пока из-за данной ошибки не могу продолжить) implementation 'com.yandex.android:mobmetricalib:3.8.0' implementation 'com.google.android.gms:play-services-ads:17.2.0' implementation 'com.yandex.android:mobileads:2.130'

Проверял на двух физических Xiaomi A1 с android 9.0

В манифесте после компиляции ничего такого нет, вот все что есть: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="29" android:versionName="29.0" android:compileSdkVersion="33" android:compileSdkVersionCodename="13" package="com...." platformBuildVersionCode="33" platformBuildVersionName="13">

<uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="31" />

<uses-permission
    android:name="android.permission.INTERNET" />

<uses-permission
    android:name="android.permission.QUERY_ALL_PACKAGES" />

<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission
    android:name="android.permission.ACCESS_WIFI_STATE" />

<queries>

    <intent>

        <action
            android:name="android.intent.action.VIEW" />

        <category
            android:name="android.intent.category.BROWSABLE" />

        <data
            android:scheme="https" />
    </intent>

    <intent>

        <action
            android:name="android.support.customtabs.action.CustomTabsService" />
    </intent>
</queries>

<uses-permission
    android:name="android.permission.WAKE_LOCK" />

<uses-permission
    android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<uses-permission
    android:name="android.permission.FOREGROUND_SERVICE" />

<permission
    android:name="com....DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
    android:protectionLevel="0x2" />

<uses-permission
    android:name="com.....DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" />

<application
    android:theme="@ref/0x7f13000a"
    android:label="@ref/0x7f12001d"
    android:icon="@ref/0x7f080086"
    android:name="com.....MyApp"
    android:debuggable="true"
    android:screenOrientation="1"
    android:configChanges="0xfb0"
    android:allowBackup="true"
    android:supportsRtl="true"
    android:roundIcon="@ref/0x7f080086">

    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />

    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-7103607967320389~8398985497" />

    <activity
        android:theme="@ref/0x7f13000c"
        android:label="@ref/0x7f12001d"
        android:name="com.....MainActivity"
        android:exported="true">

        <intent-filter>

            <action
                android:name="android.intent.action.MAIN" />

            <category
                android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

mobile-ads-github commented 1 year ago

Для корректной интеграции рекламного SDK необходимо наличие com.yandex.mobile.ads.common.AdActivity в AndroidManifest собранного приложения. Необходимые для работы SDK компоненты AndroidManifest мы перечисляем в AAR дистрибутиве. В обычной ситуации используя простое подключение через implementation, Android Gradle Plugin сам автоматически подтягивает в приложение необходимые ресурсы рекламного SDK. Если ресурсы рекламного SDK не попадают в приложение, очень вероятно, что проблема возникает в сборочных скриптах приложения.

Проверьте пожалуйста, что вы используете актуальные версии AGP, Gradle и buildToolsVersion для сборки приложения. Попробуйте собрать приложения с версиями аналогичными нашему тестовому приложению: https://github.com/yandexmobile/yandex-ads-sdk-android/blob/master/YandexMobileAdsExample/build.gradle.kts#L17 https://github.com/yandexmobile/yandex-ads-sdk-android/blob/master/YandexMobileAdsExample/gradle/wrapper/gradle-wrapper.properties#L3 https://github.com/yandexmobile/yandex-ads-sdk-android/blob/master/YandexMobileAdsExample/app/build.gradle.kts#L17 Сравните ваше приложение с нашим тестовым приложением, на наличие каких-то пропущенных аттрибутов в вашем приложении.

Также проверьте пожалуйста через команду: ./gradlew moduleName:dependencies, что во всех модулях проекта используется версиях рекламного SDK 5.5.1. Стоит проверить что добавление зависимости рекламного происходит только implementation без exclude и без указание "@jar" в объявлении зависимости.

NiplerA0 commented 1 year ago

./gradlew moduleName:dependencies

./gradlew app:dependencies --configuration implementation показывает все нормально, как в конфиге

Все Ваши примеры с гитхаба компилируюся и запускаются нормально, только в моем проекте ругается на "mInterstitialAd = new InterstitialAd(this);" "Caused by: com.yandex.mobile.ads.impl.h40: There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file.". Удалил в ручную все лишние папки и заново запустил, все тоже самое. Удалил yandex ads из проекта, приложение запускается нормально. Попробую теперь поэтапно удалять модули вместе с кодом, может конфликт какой-то, но мне не нравится именно упоминание "There is no presence of com.yandex.mobile.ads.common.AdActivity activity in AndroidManifest file.". Ощущение что дело в каком-то пустяке...

mobile-ads-github commented 1 year ago

Добрый день, переоткройте пожалуйста, если проблему на удалось решить