#android-studio #android-layout #android-xml #huawei-mobile-services #huawei-ads
Вопрос:
Я внедряю рекламу huawei в приложение для Android. Я должен пройти через все https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/publisher-service-banner-0000001050066915 и успешно реализовал рекламу, но предварительный просмотр Android studio выдает ошибку и не отображает предварительный просмотр при добавлении рекламы huawei в xml. После удаления рекламы Huawei отображается предварительный просмотр.
Ниже приведен мой макет:
<?xml version="1.0" encoding="utf-8"?>
<com.huawei.hms.ads.nativead.NativeView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/native_video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#FFFFFF"
android:orientation="vertical">
<com.huawei.hms.ads.nativead.MediaView
android:id="@ id/ad_media"
android:layout_width="match_parent"
android:layout_height="@dimen/_200sdp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/_50sdp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:background="@color/white">
<TextView
android:id="@ id/ad_title"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:alpha="1"
android:textColor="#000000"
android:textSize="@dimen/hiad_text_13_sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@ id/ad_source"
android:layout_width="wrap_content"
android:layout_height="19dp"
android:layout_marginStart="24dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="16dp"
android:alpha="0.6"
android:text="asdfasj"
android:maxWidth="158dp"
android:textColor="#666666"
android:textSize="@dimen/hiad_text_12_sp"
app:layout_constraintStart_toStartOf="@id/ad_title"
app:layout_constraintEnd_toStartOf="@id/ad_flag"
app:layout_constraintTop_toBottomOf="@id/ad_title"
/>
<TextView
android:id="@ id/ad_flag"
android:layout_width="20dp"
android:layout_height="14dp"
android:background="@drawable/native_flag_rounded_corners_shape"
android:text="@string/ad_flag"
android:textColor="#FFFFFF"
android:textSize="8sp"
android:layout_marginStart="@dimen/_10sdp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/ad_source"
app:layout_constraintStart_toEndOf="@id/ad_source"
app:layout_constraintTop_toTopOf="@id/ad_source" />
<Button
android:id="@ id/ad_call_to_action"
android:layout_width="72dp"
android:layout_height="26dp"
android:layout_alignParentEnd="true"
android:background="@drawable/native_button_rounded_corners_shape"
android:textColor="#FFFFFF"
android:textSize="10sp"
android:layout_marginEnd="@dimen/_20sdp"
app:layout_constraintBottom_toBottomOf="@ id/ad_source"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.huawei.hms.ads.nativead.NativeView>
Ниже приведена ошибка, с которой я сталкиваюсь
Когда я удаляю корневой тег в макет ограничения. Предварительный просмотр отображается на экране, и все ошибки исчезли. Внутри этих двух тегов я сталкиваюсь со следующим исключением:
Исключение FirstException: Не создавайте потоки в предварительном просмотре
java.lang.Исключение IllegalStateException: Не разрешается создавать новые потоки в предварительном просмотре в com.huawei.hms.ads.kn.newThread в java.util.concurrent.ThreadPoolExecutor$Работник.(ThreadPoolExecutor.java:623) в java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:912) в java.util.concurrent.ThreadPoolExecutor.выполнить(ThreadPoolExecutor.java:1343) в com.huawei.hms.ads.km.Код на com.huawei.hms.ads.km.Я на ком.компании Huawei.ТМ.объявления.ЖЖ.Код на ком.компании Huawei.ТМ.объявления.ЖЖ.В По ком.компании Huawei.ТМ.объявления.дл.З на ком.компании Huawei.ТМ.объявления.дл.В По ком.компании Huawei.ТМ.объявления.дл.Код По ком.huawei.openalliance.просмотры объявлений.PPSNativeView.Код на com.huawei.openalliance.ad.просмотры.PPSNativeView. по адресу com.huawei.hms.ads.nativead.Нативвью. в jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(NativeConstructorAccessorImpl.java:-2) в jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) в jdk.internal.reflect.Делегирование constructoraccessorimpl.newInstance(делегирование constructoraccessorimpl.java:45) в java.lang.reflect.Конструктор.Новая установка(конструктор.java:490) на Android.Вид.LayoutInflater.createViewFromTag(LayoutInflater.java:959) в android.просмотр.LayoutInflater.надувать(LayoutInflater.java:657) на android.просмотр.LayoutInflater.надувать(LayoutInflater.java:499)
Второе Исключение: Не удалось создать экземпляр Одного Или нескольких Классов Не удалось создать экземпляр следующих классов: — com.huawei.hms.ads.nativead.MediaView (Открыть класс, Показать исключение, Очистить кэш) — com.huawei.openalliance.ad.views.VideoView (Открыть класс, Показать исключение, Очистить кэш) Совет: Используйте View.isInEditMode() в пользовательских представлениях, чтобы пропустить код или показать примеры данных при отображении в среде IDE. Если это неожиданная ошибка, вы также можете попытаться создать проект, а затем вручную обновить макет. Сведения об исключении java.lang.Исключение NullPointerException в com.huawei.openalliance.ad.views.NativeVideoView.Код на com.huawei.openalliance.ad.просмотры.NativeVideoView. по адресу com.huawei.hms.ads.nativead.Медиавидение.Код на com.huawei.hms.ads.nativead.Медиавидение. в jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(NativeConstructorAccessorImpl.java:-2) в jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) в jdk.internal.reflect.Делегирование constructoraccessorimpl.newInstance(делегирование constructoraccessorimpl.java:45) в java.lang.reflect.Конструктор.Новая установка(конструктор.java:490) на Android.Вид.LayoutInflater.createViewFromTag(LayoutInflater.java:959) в android.просмотр.Раскладывающийся флейтер.rInflate_Original(LayoutInflater.java:1121) в android.просмотр.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) в android.просмотр.Раскладывающийся флейтер.rInflate(LayoutInflater.java:1095) на android.просмотр.Раскладывающийся флейтер.rInflateChildren(LayoutInflater.java:1082) на android.просмотр.LayoutInflater.надувать(LayoutInflater.java:680) на android.просмотр.LayoutInflater.надувать(LayoutInflater.java:499)
Я аннулировал кэш и перезапустил студию Android, но пока ничего не сработало. Может ли кто-нибудь помочь мне сделать предварительный просмотр. Любая помощь будет признательна. Спасибо
Комментарии:
1. Это явно похоже на ошибку в SDK, я предлагаю вам подать заявку в Huawei.
2. Благодарим вас за предоставление информации по этому вопросу, мы сообщили об этом в отдел исследований и разработок, если нам понадобится дополнительная информация или ваша помощь, мы свяжемся с вами как можно скорее.
3. Спасибо за ваш ответ.
Ответ №1:
В настоящее время SDK Ads kit ссылается на код базового SDK HMS, но, похоже, вы не интегрировали базовый SDK HMS.
В результате во время предварительного просмотра возникает следующая ошибка.
Если вы решите не интегрировать базовый пакет SDK HMS, функция Ads SDK не будет затронута, но будет затронута во время предварительного просмотра.
Таким образом, для справки есть два варианта : во-первых, вы можете попытаться интегрировать базовый sdk hms, или другой способ-игнорировать эту ошибку предварительного просмотра, потому что это не повлияет на фактическую работу.
Комментарии:
1. У меня есть пример приложения, в которое я интегрировал базовый SDK HMS, но все равно я получаю исключение потока, и предварительный просмотр не просматривается. Ниже приведена ссылка на снимок экрана. ibb.co/hCnwfht .. Вот ссылка, по которой я комментирую xml-тег баннера. Предварительный просмотр виден ibb.co/9VjDzc1
2. Я не думаю, что «игнорировать эту ошибку предварительного просмотра» — хорошая альтернатива.
3. Если я проигнорирую этот предварительный просмотр, как бы я изменил макет в соответствии с дизайном?
4. привет@вахид шах, не могли бы вы попробовать изменить NativeView на RelativeLayout, настроить его, а затем изменить обратно?
5. привет @shirley в настоящее время я меняю взгляды, чтобы настроить их в соответствии с дизайном. Жду решения. Спасибо за ваш немедленный ответ.