广告加载失败,错误代码为 0(内部错误) - 华为广告实施

Posted

技术标签:

【中文标题】广告加载失败,错误代码为 0(内部错误) - 华为广告实施【英文标题】:Ad failed to load with error code 0(internal Error) - Huawei Ads Implementation 【发布时间】:2021-10-27 07:06:09 【问题描述】:

我在演示应用程序中不断收到上述错误。我有 HMS 核心版本 5.0.0.329(初始版本)。我的互联网连接很稳定。我已经在应用程序库上创建了测试应用程序,该应用程序已获批准但仍然存在相同的错误。还没有运气。

*注意:此错误仅发生在华为设备 Y6p - 型号 - MED-LX9 -android 版本 -10 上。 在三星 S7 - Android 版本 - 7.0 上显示的广告

以下是我的测试应用程序的代码。我正在使用 Android Studio 北极狐 2020.3.1

模块.gradle:

plugins 
id 'com.android.application'
id 'kotlin-android'
id 'com.huawei.agconnect'


android 
compileSdk 30

defaultConfig 
    applicationId "com.example.huaweitestads"
    minSdk 21
    targetSdk 30
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"


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

compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8

kotlinOptions 
    jvmTarget = '1.8'



dependencies 

implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

//Huawei Dependency
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
implementation 'com.huawei.hms:ads-lite:13.4.45.308'
//implementation 'com.huawei.hms:ads:3.4.45.308'
implementation 'com.huawei.hms:ads-identifier:3.4.34.301'

项目.gradle

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript 
repositories 
google()
jcenter()
maven url 'https://developer.huawei.com/repo/'

dependencies 
classpath "com.android.tools.build:gradle:7.0.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"
classpath 'com.huawei.agconnect:agcp:1.6.0.300'

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



task clean(type: Delete) 
delete rootProject.buildDir

setting.gradle

dependencyResolutionManagement 
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories 
google()
jcenter() // Warning: this repository is going to shut down soon
maven url 'https://developer.huawei.com/repo/'


rootProject.name = "HuaweiTestAds"
include ':app'

主活动:

class MainActivity : AppCompatActivity() 
private val adListener: AdListener = object : AdListener()
override fun onAdClosed() 
showToast("Ad closed")


    override fun onAdFailed(p0: Int) 
        showToast(String.format(Locale.ROOT, "Ad failed to load with error code %d.", p0))
    

    override fun onAdLeave() 
        showToast("Ad Leave")
    

    override fun onAdOpened() 
        showToast(String.format("Ad opened "))
    

    override fun onAdLoaded() 
        showToast("Ad loaded.")
    

    override fun onAdClicked() 
        showToast("Ad clicked")
    

    override fun onAdImpression() 
        showToast("Ad Impression")
    

override fun onCreate(savedInstanceState: Bundle?) 
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //initialize the Huawei Ads
    HwAds.init(this)

    val bannerView: BannerView? = findViewById(R.id.hw_banner_view)
    bannerView!!.adListener = adListener
    bannerView.setBannerRefresh(30)
    val adParam = AdParam.Builder().build()
    bannerView.loadAd(adParam)

private fun showToast(message: String) 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()


activity.xml

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:hwads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_root_view"
android:layout_
android:layout_
tools:context=".MainActivity">

<TextView
    android:id="@+id/textView"
    android:layout_
    android:layout_
    android:text="hello "
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<com.huawei.hms.ads.banner.BannerView
    android:id="@+id/hw_banner_view"
    android:layout_
    android:layout_
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/textView"
    hwads:adId="testw6vs28auh3"
    hwads:bannerSize="BANNER_SIZE_320_50" />
</androidx.constraintlayout.widget.ConstraintLayout>

logCat 异常: 2021-08-27 15:11:48.642 20928-20928/? E/LoadedApk:无法 实例化 appComponentFactory java.lang.ClassNotFoundException:在路径上找不到类“androidx.core.app.CoreComponentFactory”:DexPathList [[zip 文件 "/data/app/com.huawei.appmarket-KidEWN7eyzOMAnU7Zs1jjg==/base.apk"],nativeLibraryDirectories=[/data/app/com.huawei.appmarket-KidEWN7eyzOMAnU7Zs1jjg==/lib/arm, /data/app/com.huawei.appmarket-KidEWN7eyzOMAnU7Zs1jjg==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib, /system/product/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 android.app.LoadedApk.createAppFactory(LoadedApk.java:270) 在 android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:922) 在 android.app.LoadedApk.getClassLoader(LoadedApk.java:1044) 在 android.app.LoadedApk.getResources(LoadedApk.java:1293) 在 android.app.ContextImpl.createAppContext(ContextImpl.java:2610) 在 android.app.ContextImpl.createAppContext(ContextImpl.java:2598) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:7222) 在 android.app.ActivityThread.access$2400(ActivityThread.java:308) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2295) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:219) 在 android.app.ActivityThread.main(ActivityThread.java:8349) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

例外 2:

2021-08-27 15:11:31.275 20725-20779/? E/ServiceRegistrarParser: 获取 服务发现 exception.ComponentInfocom.huawei.hms.agclink/com.huawei.agconnect.core.ServiceDiscovery 2021-08-27 15:11:31.298 17647-18622/? E/fwkit_kitProviderDispatcher: [E/fwkit/fwkit_kitProviderDispatcher 17647:4417 StubContentProvider.java:153] NameNotFoundException android.content.pm.PackageManager$NameNotFoundException 在 android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:201) 在 android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:170) 在 com.huawei.hms.fwkit.kams.provideragent.a.a(KitProviderDispatcher.java:387) 在 com.huawei.hms.fwkit.kams.provideragent.a.a(KitProviderDispatcher.java:320) 在 com.huawei.hms.fwkit.kams.provideragent.StubContentProvider.getType(StubContentProvider.java:153) 在 android.content.ContentProvider$Transport.getType(ContentProvider.java:295) 在 android.content.ContentProviderNative.onTransact(ContentProviderNative.java:140) 在 android.os.Binder.execTransactInternal(Binder.java:1028) 在 android.os.Binder.execTransact(Binder.java:1001)

例外 3:

2021-08-27 15:12:07.512 4661-4736/? E/PushLog110102300: [SocketRead_15:10:54-308]读取套接字发生 异常:com.huawei.android.pushagent.datatype.exception.PushException ra nra* Ei ee.ck(未知来源:101) ee.run(未知来源:40)

任何帮助将不胜感激。谢谢

【问题讨论】:

嗨@shirley,你能分享你的想法吗?谢谢 hi@waheed shah,抱歉回复晚了,我刚刚在下面发布了我的答案。如果有任何问题,请告诉我。 嗨@shirley,感谢您的回复我已经在清单中添加了 android:usesCleartextTraffic="true" 但降级目标 SDK 版本无助于消除错误。没有成功:( @waheedshah 题外话,但您是否在 Google Play 上发布的应用中使用华为广告? @MouaadAbdelghafourAITALI 不!还没有。我只是为huwaei App Gallery做的。 【参考方案1】:

华为 Y6p 之前在此设备上遇到过同样的问题。您可以检查是否有 SIM 卡。

插入 SIM 卡后,将读取 SIM 卡的国家代码。 国家代码获取规则:发货地国家代码> sim卡国家代码> 手机设置国家。

【讨论】:

如果!我不想在测试设备中添加 sim 卡?您可以分享其他一些解决方案吗?你在华为 Y6p 上试过吗? 我没有华为Y6p设备,之前没试过。我们希望那些在华为 Y6p 设备上遇到此类问题的人插入 SIM 卡,以便他们得到结果。 在华为Y6p中添加sim后。广告会出现! @efnan 你能分享一下你是怎么知道的吗?哪些特定设备显示出这种行为?【参考方案2】:

正如Docs 提到的,要在targetSdkVersion 28 或更高版本的设备上允许HTTP 和HTTPS 网络请求,请在AndroidManifest.xml 文件中配置以下信息:

<application
    ...
    android:usesCleartextTraffic="true"
    >
    ...
</application>

然后将Gradle中的targetSdk 30改为29

【讨论】:

【参考方案3】:

推荐版本如link

compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig 
        applicationId ""
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
      

【讨论】:

虽然是推荐版本,但我相信你也可以使用以上版本。 华为Y6p之前在这台设备上也遇到过同样的问题。您可以检查是否有 SIM 卡。插入 SIM 卡后,将读取 SIM 卡的国家代码。国家代码获取规则:发货地国家代码> sim卡国家代码> 手机设置国家。

以上是关于广告加载失败,错误代码为 0(内部错误) - 华为广告实施的主要内容,如果未能解决你的问题,请参考以下文章

500 内部错误:加载资源 Laravel 5.0 失败

华为云空间电脑端加载资源文件失败

加载资源失败:服务器响应状态为 500(内部服务器错误)当我尝试上传图像时发生此错误

Laravel pusher,/broadcasting/auth:1 加载资源失败:服务器响应状态为 500(内部服务器错误)

IE报错:模块"scrrun.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005

将 Avro 文件加载到 BigQuery 失败并出现内部错误