Kivy: какое имя пакета я должен использовать для файлов.jar, добавленных с помощью add_jars?

1) В проекте моей Киви я создал \platforms\android\test.java со следующим содержанием:

class Test {
    public int test() {
        return 300;
    }
}

И скомпилировал это .jar файл (в том же каталоге).

2) В buildozer.spec Я добавил строку:

android.add_jars = %(source.dir)s/platforms/android/*.jar

3) В проектах main.py Я пытаюсь использовать это:

import logging
from kivy.utils import platform

if platform == "android":
    from jnius import autoclass, cast

    Test = autoclass('test.Test')
    logging.info(Test().test())

4) apk строит нормально, но я получаю ошибку:

jnius.jnius.JavaException: класс не найден 'test/Test'

Я предполагаю, что проблема с именем пакета я использовал autoclass('test.Test'), Какое имя я должен использовать, чтобы заставить вещи работать?

2 ответа

Решение

Вместо добавления .jar файл легче добавить java исходный файл, который будет обрабатываться p4a для использования на Android.

1) у нас есть файл

/java_folder/some/test.java

со следующим содержанием:

package some;

class Test {
    public int test() {
        return 300;
    }
}

2) В buildozer.spec мы добавляем:

android.add_src = %(source.dir)s/java_folder/

3) В проектах:

autoclass('some.Test')

работает просто отлично.

У меня есть некоторые изменения в вашем решении:

  1. /java_folder/some/test.java => /java_folder/some/Test.java
  2. тест класса { => тест открытого класса {

После этого все будет работать.

Другие вопросы по тегам