问题描述
这是我的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 (将#修改为@)