我设法在我的Python Kivy应用程序中获得了插页式Unity广告,但在显示10次后崩溃了我错过了什么吗?

问题描述

这是我的Python代码,可以成功运行到一定程度:

from jnius import autoclass,PythonJavaClass,java_method,cast
from kivy.app import App
import logging

testmode = True

PythonActivity = autoclass("org.kivy.android.PythonActivity")
Unity_ads_listener = autoclass("com.unity3d.ads.IUnityAdsListener")
Unity_ads = autoclass("com.unity3d.ads.UnityAds")

 

 class Unity_handler:

   def __init__(self,a_id):
     self.app_id = a_id
   
   def init_unity(self):
     
     new_ad_listener = UnityAdsListener()
     Unity_ads.addListener(new_ad_listener)
     self.c_activity = cast('android.app.Activity',PythonActivity.mActivity)
     Unity_ads.initialize(self.c_activity,self.app_id,testmode)
     logging.warning("\n Unity ads initialized \n")

   def show_ad(self,id_num):
   
     #show interstial ads
     self.inter_id = id_num
     if Unity_ads.isReady(self.inter_id):
          try:
            Unity_ads.show(self.c_activity,self.inter_id)
          except:
            fail=1 


 class UnityAdsListener(PythonJavaClass):
    __javacontext__= 'app'
    __javainterfaces__= ['com/unity3d/ads/IUnityAdsListener']  

    #def __init__(self):
    #            super(IUnityAdsListener,self).__init__()
    #            #self.callback = callback


    @java_method('(Ljava/lang/String;)V')
    def onUnityAdsReady(inter_id):
       pass        

    @java_method('(Ljava/lang/String;)V')   
    def onUnityAdsstart(inter_id):
       pass

    @java_method('(Ljava/lang/String;Ljava/lang/String;)V')
    def onUnityAdsFinish(inter_id,un_f):
       pass

    @java_method('(Lcom/unity3d/ads/UnityAds$UnityAdsError;Ljava/lang/String;)V')
    def onUnityAdsError(self,error,message):
       pass

显示了广告,但是经过短暂的反复展示后不久便崩溃了。我怀疑从Java接口继承的java方法可能存在问题。这是当机报告:

09-05 16:51:40.775 260 454 D audioflinger_Threads:0xa8603180:threadLoop_write将静音数据写入硬件,调音台状态1开始 09-05 16:51:40.778 12274 12274我python:Traceback(最近一次通话过去): 09-05 16:51:40.780 789 840 V WindowManager:寻找焦点:8 = Window {deb1e08 u0 StatusBar},标志= -2122055608,canReceive = false 09-05 16:51:40.780 12274 12274 I python:jnius.jnius.invoke0中的文件``jnius / jnius_proxy.pxi'',第156行 09-05 16:51:40.781 789 840 D WindowManager:notifyActivityDrawnForKeyguard:waiting = false调用者= com.android.server.wm.WindowSurfacePlacer.handleAppTransitionReadyLocked:1227 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner:337 com.android。 server.wm.WindowSurfacePlacer.performSurfacePlacementLoop:235 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement:183 com.android.server.wm.WindowManagerService $ H.handleMessage:8417 09-05 16:51:40.781 12274 12274 I python:jnius.jnius.py_invoke0中的文件“ jnius / jnius_proxy.pxi”第124行 09-05 16:51:40.781 789 840 V WindowManager:寻找焦点:8 = Window {deb1e08 u0 StatusBar},标志= -2122055608,canReceive = false 09-05 16:51:40.782 12274 12274我python:AttributeError:'kivy.core.text.text_layout.LayoutWord'对象没有属性'invoke' 09-05 16:51:40.783 12274 12274 D AndroidRuntime:关闭VM 09-05 16:51:40.786 789 840 I ActivityManager:显示com.oracle.oracle/com.unity3d.services.ads.adunit.AdUnitactivity:+ 166ms 09-05 16:51:40.787 789882 I libPerfService:1:设置:3 09-05 16:51:40.787 789882 I libPerfService:1:设置频率:819000 09-05 16:51:40.792 12274 12274 E AndroidRuntime:致命异常:main 09-05 16:51:40.792 12274 12274 E AndroidRuntime:进程:com.oracle.oracle,PID:12274 09-05 16:51:40.792 12274 12274 E AndroidRuntime:java.lang.NullPointerException:预期将'int'基本类型拆箱,但返回null 09-05 16:51:40.792 12274 12274 E AndroidRuntime:at $ Proxy0.hashCode(未知源) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:在sun.misc.Hashing.singleWordWangJenkinsHash(Hashing.java:48) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:at java.util.HashMap.put(HashMap.java:423) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:at java.util.HashSet.add(HashSet.java:217) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:在java.util.AbstractCollection.addAll(AbstractCollection.java:342) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:at java.util.LinkedHashSet。(LinkedHashSet.java:169) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:位于com.unity3d.ads.properties.AdsProperties.getListeners(AdsProperties.java:47) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:at com.unity3d.services.ads.api.Listener $ 5.run(Listener.java:76) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:位于android.os.Handler.handleCallback(Handler.java:836) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:位于android.os.Handler.dispatchMessage(Handler.java:103) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:位于android.os.Looper.loop(Looper.java:203) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:位于android.app.ActivityThread.main(ActivityThread.java:6251) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:在java.lang.reflect.Method.invoke(本机方法) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1063) 09-05 16:51:40.792 12274 12274 E AndroidRuntime:位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 09-05 16:51:40.796 789 976 W ActivityManager:强制完成活动com.oracle.oracle/com.unity3d.services.ads.adunit.AdUnitactivity

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)