Kivy pyjnius с Buildozer - добавление jnius в приложение вызывает его падение после запуска

После добавления этих строк кода в мое приложение kivy, когда я запускаю его на моем Android 4.4.4, приложение сразу вылетает

from jnius import autoclass
try:
    Environment = autoclass('android.os.Environment')
    sdpath = Environment.get_running_app().getExternalStorageDirectory()

# Not on Android
except:
    sdpath = App.get_running_app().user_data_dir

Я проверил ADB, чтобы увидеть, появляются ли какие-либо ошибки, но ничего, кроме

03-01 17:44:19.813: E/InputDispatcher(898): channel '437f0100 org.renpy.android.PythonActivity (s)' ~ Channel is unrecoverably broken and will be disposed!

РЕДАКТИРОВАТЬ

Кажется линия sdpath = Environment.get_running_app().getExternalStorageDirectory() является причиной аварии

2 ответа

Решение

На самом деле я проверил adb logcat и заметил, что Environment.get_running_app().getExternalStorageDirectory() повышения

AttributeError: тип объекта "android.os.Environment" не имеет атрибута "get_running_app"

использование sdpath = Environment.getExternalStorageDirectory().getAbsolutePath() вместо.

Вы должны попробовать что-то вроде этого:

from kivy.app import platform
...
if platform() == 'android':
    DATA_FOLDER = os.getenv('EXTERNAL_STORAGE')

Также включите это в вашу спецификацию buildozer:

requirements = kivy, pyjnius
Другие вопросы по тегам