pyjnius的java类

unhi4e5o  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(390)

我已经创建了一个java类,在pyjnius的python中使用,但是我不能使用它,因为pyjnius找不到它,pyjnius文档说我必须将java类移动到src/org,我已经做了,但是没有成功,有人能告诉我如何使用pyjnius的java类吗。

yebdmbv4

yebdmbv41#

确保您告诉buildozer您打包的java源代码在哪里。
例如,如果你有 java/org/test/TestClass.java 你能做到的。

android.add_src = java/

确保您的java包与您希望从jnius导入的内容相匹配。

package org.test;
from jnius import autoclass
autoclass('org.test.TestClass')

一个完整的例子 app/main.py ```
"""Demonstrate loading custom java code using jnius
"""
from kivy.app import App
from jnius import autoclass

class Application(App):
"""see module documentation
"""

def test_jnius(self, name):
    """Lookup our test class, instanciate and call its method
    """
    cls = autoclass("org.test.TestClass")
    result = cls(name).get_result()
    self.root.ids.result_box.text = result

if name == "main":
Application().run()
`app/application.kv`
FloatLayout:
BoxLayout:
orientation: 'vertical'
size_hint: .5, .5
pos_hint: {'center': (.5, .5)}
spacing: '20dp'

    Label:
        text: 'Please enter your name'

    TextInput:
        id: ti
        multiline: False
        size_hint_y: None
        height: self.minimum_height

    Button:
        text: 'hit me!'
        on_release: app.test_jnius(ti.text)
        size_hint_y: None
        height: '38dp'

    Label:
        id: result_box

`buildozer.spec`
[app]
title = Kivy With Java App
package.name = kivyjavaapp
package.domain = org.test
source.dir = app/
source.include_exts = py,png,jpg,kv,atlas
version = 0.1
requirements = python3,kivy
orientation = portrait
fullscreen = 0
android.add_src = java/
android.arch = armeabi-v7a
android.allow_backup = True
ios.kivy_ios_url = https://github.com/kivy/kivy-ios
ios.kivy_ios_branch = master
ios.ios_deploy_url = https://github.com/phonegap/ios-deploy
ios.ios_deploy_branch = 1.10.0
ios.codesign.allowed = false

[buildozer]
log_level = 2
warn_on_root = 1
`java/org/test/TestClass.java`
package org.test;
import java.lang.String;

public class TestClass {
private String _name;

public TestClass(String name) {
    _name = name;
}

public String get_result() {
    return "Hello " + _name;
}

}

(可选,如果要在桌面上测试java代码,请使用 `ant all` 以及 `export CLASSPATH=build/` 跑步前 `python app/main.py` ) `build.xml` ```
<project>
    <property name="ant.build.javac.source" value="1.7" />
    <property name="ant.build.javac.target" value="1.7" />

    <target name="clean">
      <delete dir="build"/>
    </target>

    <target name="test-compile">
        <mkdir dir="build"/>
        <javac srcdir="java/" destdir="build"
               includeantruntime='false'
               encoding="UTF-8"/>
    </target>

    <target name="jar" depends="test-compile">
        <jar destfile="build/org.test.jar" basedir="build/">
        </jar>
    </target>

    <target name="all" depends="jar,test-compile"/>
</project>

您可以在这个存储库中找到这个完整的示例https://github.com/tshirtman/android_jnius_custom_java

相关问题