【问题标题】:jnius.find_javaclass , jnius.JavaException: Class not found 'android/webkit/WebView'jnius.find_javaclass , jnius.JavaException: Class not found 'android/webkit/WebView'
【发布时间】:2018-06-27 05:47:51
【问题描述】:

我在尝试使用 jnius 的 autoclass 在 Kivy 应用程序中获取 android webview 时遇到此错误。可以解决什么问题?

谢谢

我的代码如下所示:

import kivy                                                                                     
from kivy.app import App                                                                        
from kivy.lang import Builder                                                                   
from kivy.utils import platform                                                                 
from kivy.uix.widget import Widget                                                              
from kivy.clock import Clock                                                                    
from jnius import autoclass                                           
#from android.runnable import run_on_ui_thread                                                   

WebView = autoclass('android.webkit.WebView')                                                   
WebViewClient = autoclass('android.webkit.WebViewClient')                                       
activity = autoclass('org.renpy.android.PythonActivity').mActivity                    


class Wv(Widget):                                                                               
    def __init__(self, **kwargs):                                                               
        super(Wv, self).__init__(**kwargs)                                                      
        # Clock.schedule_once(self.create_webview, 0)  `                                           

# @run_on_ui_thread                                                                           
# def create_webview(self, *args):                                                            
#     webview = WebView(activity)                                                             
#     webview.getSettings().setJavaScriptEnabled(True)                                        
#     wvc = WebViewClient();                                                                  
#     webview.setWebViewClient(wvc);                                                          
#     activity.setContentView(webview)                                                        
#     webview.loadUrl('http://www.google.com')


class ServiceApp(App):                                                                          
    def build(self):                                                                            
        return Wv()                                                                          


if __name__ == '__main__':                                                                      
    ServiceApp().run

【问题讨论】:

    标签: android python kivy pyjnius


    【解决方案1】:

    首先,您应该检查您是否在 Android 环境中运行代码,因为 android.webkit.WebView 仅在 Android 下运行,而不是在 Windows 或 Linux 下的 PC 上运行。

    推荐使用 Android 设备,并使用带有调试选项的Buildozer 命令buildozer android debug deploy run 运行应用程序。

    如果您想在 PC 上运行它,那么您可以从 Kivy 安装 Android VM,然后在 https://kivy.org/docs/guide/packaging-android-vm.html 上按照以下步骤操作:

    • 在虚拟机部分下载Kivy / Buildozer VM。这 下载为1.2GB。提取文件并记住文件的位置 解压目录。

    • 从 VirtualBox 下载区为您的机器下载 VirtualBox 的版本并安装它。

    • 启动VirtualBox,点击“文件”,“导入设备”。

    • 选择解压后的目录,文件命名为“Buildozer VM.ovf”

    • 启动虚拟机并点击“Buildozer”图标。

      并在 kivy.org/docs/guide/packaging-android-vm.html 中运行

    如果您仍然遇到 jnius.JavaException: Class not found 'android/webkit/WebView' 异常的问题,那么您必须将该 jar 文件添加到类路径:

    import os
    os.environ['CLASSPATH'] = 'absolute/path/file.jar'
    

    如果 Class not found 'android/webkit/WebView' 异常,您可以在您的设备上找到该 jar 或下载它并将您存储它的路径添加到类路径中。

    【讨论】:

    • 哪个 .jar 文件?
    • 它正在寻找应该在 findsecbugs-plugin-deps-1.4.2.jar 中的类github.com/aosp-mirror/platform_frameworks_base/blob/master/…
    • 我通过添加我正在使用的代码来编辑我的问题。 @Rene B.
    • @EnkumicahelDereje 另一个问题,您使用的是哪个操作系统? android.webkit.WebView 仅在 Android 下运行。如果你在安卓设备上运行它,那么你应该使用andoird的虚拟机:kivy.org/docs/guide/packaging-android-vm.html
    • @EnkumicahelDereje,我在答案中添加了如何在 Linux 系统上安装 Android VM 的描述。
    【解决方案2】:

    使用 Pydroid3 无需编译即可测试您的应用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-04
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2018-08-22
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多