Pyjnius: 1.3.0 يكسر طلب android

تم إنشاؤها على ٢٢ مايو ٢٠٢٠  ·  23تعليقات  ·  مصدر: kivy/pyjnius

أبلغ عنها مستخدم (Matrix0206 على الخلاف).

from android import request_permission, Permission

request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE])
05-22 20:08:20.301 10976 11090 I python  :  Traceback (most recent call last):
05-22 20:08:20.301 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/app/main.py", line 300, in <module>
05-22 20:08:20.301 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/app.py", line 949, in run
05-22 20:08:20.302 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/app.py", line 919, in _run_prepare
05-22 20:08:20.302 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/app/main.py", line 132, in build
05-22 20:08:20.302 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/uix/relativelayout.py", line 274, in __init__
05-22 20:08:20.303 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/uix/floatlayout.py", line 65, in __init__
05-22 20:08:20.303 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/uix/layout.py", line 76, in __init__
05-22 20:08:20.303 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/uix/widget.py", line 359, in __init__
05-22 20:08:20.304 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/uix/widget.py", line 463, in apply_class_lang_rules
05-22 20:08:20.304 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/lang/builder.py", line 539, in apply
05-22 20:08:20.304 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/lang/builder.py", line 661, in _apply_rule
05-22 20:08:20.304 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/lang/builder.py", line 661, in _apply_rule
05-22 20:08:20.305 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/kivy/lang/builder.py", line 657, in _apply_rule
05-22 20:08:20.305 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/app/screens/main_screen/home.py", line 36, in __init__
05-22 20:08:20.305 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/android/permissions.py", line 570, in request_permissions
05-22 20:08:20.305 10976 11090 I python  :    File "/run/media/matrix/New_Volume/Developments/kivy-music-player/.buildozer/android/platform/build-arm64-v8a/build/python-installs/music_player/android/permissions.py", line 513, in request_permissions
05-22 20:08:20.306 10976 11090 I python  :    File "jnius/jnius_export_class.pxi", line 1134, in jnius.jnius.JavaMultipleMethod.__call__
05-22 20:08:20.306 10976 11090 I python  :  jnius.jnius.JavaException: No methods matching your arguments, requested: (['android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE'],), available: []

بينما كان هذا يعمل في 1.2.1.

ال 23 كومينتر

مرحباً يا رفاق لدي نفس المشكلة ، كيف أحلها؟ هل من الممكن استخدام Pyjnius أقدم في بناء buildozer؟ شكرا!

مرحباً يا رفاق لدي نفس المشكلة ، كيف أحلها؟ هل من الممكن استخدام Pyjnius أقدم في بناء buildozer؟ شكرا!

يجب أن يعمل تثبيت الإصدار باستخدام requirements = pyjnius==1.2.1,... .

أنا لست شخصًا تابعًا لـ Kivy ، ولكن هل يمكن لأي شخص لصق رابط إلى شفرة المصدر ذات الصلة؟

مرحباً يا رفاق لدي نفس المشكلة ، كيف أحلها؟ هل من الممكن استخدام Pyjnius أقدم في بناء buildozer؟ شكرا!

يجب أن يعمل تثبيت الإصدار باستخدام requirements = pyjnius==1.2.1,... .

شكرا ، إنفاكت عملت!

على الرغم من أن ربط إصدار Pyjnius بـ 1.2.1 قد يعمل من أجل ذلك ، فإن الإصدار 1.2.1 له قيود أخرى ، لذلك يجب معالجة ذلك بشكل مثالي من الآن فصاعدًا ...

سيكون هناك https://github.com/kivy/python-for-android/blob/develop/pythonforandroid/recipes/android/src/android/permissions.py#L513 آسف لم آخذ الوقت الكافي للتحقيق في هذا على الاطلاق.

أصبح الأمر صعبًا لأننا لا نستطيع بسهولة رؤية اسم فئة النشاط

أتوقع أن يكون https://github.com/kivy/python-for-android/blob/develop/pythonforandroid/bootstraps/sdl2/build/src/main/java/org/kivy/android/PythonActivity.java# L42 ولكنها يمكن أن تكون الفئة المكافئة في تمهيد آخر (https://github.com/kivy/python-for-android/tree/develop/pythonforandroid/bootstraps)

يبدو أن python_activity.requestPermissions طريقة غير ثابتة. لكن يتم استدعاؤها كما لو كانت ثابتة. والتي لسبب ما تستخدم للعمل مع الإصدارات القديمة من Pyjnius. يبدو أن استخدام python_activity.mActivity.requestPermissions يعمل مع 1.3.0.

لذلك يبدو أنه خطأ في مكتبة p4a android بدلاً من ذلك.

بقعة جيدة. في الواقع؛ كما هو الحال في Java ، لن يسمح المترجم باستدعاء طريقة غير ثابتة على كائن ثابت. obfusk هل يمكنك تحديث https://github.com/kivy/python-for-android/issues/2304؟

أعتقد أن خطأ Pyjnius يمكن أن يكون أكثر وضوحًا أيضًا - أي لم يتم العثور على اسم الطريقة وفي أي كائن!

أنا مندهش إلى حد ما من أن هذا كان يعمل. ~ ما هو المثال الذي تم استدعاؤه؟ مؤشر فارغ؟ أو بعض الأمثلة الفعلية للفئة؟ ~

أعتقد أن خطأ Pyjnius يمكن أن يكون أكثر وضوحًا أيضًا - أي لم يتم العثور على اسم الطريقة وفي أي كائن!

: +1:

أعتقد أن خطأ Pyjnius يمكن أن يكون أكثر وضوحًا أيضًا - أي لم يتم العثور على اسم الطريقة وفي أي كائن!

👍

تم إرسال العلاقات العامة - راجع # 558.

إذن الملخص لأي شخص يقرأ هذا في المستقبل:

تم دمج التصحيح

ليس بعد؛ لكن تمت الموافقة عليه :)

أعتقد أن هؤلاء FIXME s مرتبطون بالفعل. نظرًا لأن __get__ يعيّن j_self بدلاً من إرجاع طريقة ملزمة وإرجاع self عند استدعاء فئة بدلاً من مثيل ، فإن استدعاء طريقة غير ثابتة في فئة ما استخدام آخر مثيل تم استدعاؤه (إن وجد). بالطبع ، لا ينبغي أبدًا السماح باستدعاء طريقة غير ثابتة في الفصل (ولم يعد كذلك).

أعتقد أن هؤلاء FIXME s مرتبطون بالفعل. نظرًا لأن __get__ يعيّن j_self بدلاً من إرجاع طريقة ملزمة وإرجاع self عند استدعاء فئة بدلاً من مثيل ، فإن استدعاء طريقة غير ثابتة في فئة ما استخدام آخر مثيل تم استدعاؤه (إن وجد). بالطبع ، لا ينبغي أبدًا السماح باستدعاء طريقة غير ثابتة في الفصل (ولم يعد كذلك).

هل يمكنك إظهار حالة اختبار أبسط ، ثم نقوم بعمل إصدار جديد؟

هل يمكنك إظهار حالة اختبار أبسط ، ثم نقوم بعمل إصدار جديد؟

مع 1.2.1:

>>> from jnius import autoclass
>>> s = autoclass("java.lang.String")
>>> s.toString()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "jnius/jnius_export_class.pxi", line 755, in jnius.JavaMethod.__call__
  File "jnius/jnius_export_class.pxi", line 699, in jnius.JavaMethod.ensure_method
jnius.JavaException: Unable to find a None method!
classname: None, definition: ()Ljava/lang/String;
>>> s("foo").toString()
'foo'
>>> s.toString()
'foo'

مع 1.3.0:

>>> from jnius import autoclass
>>> s = autoclass("java.lang.String")
>>> s("foo").toString()
'foo'
>>> s.toString()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "jnius/jnius_export_class.pxi", line 1134, in jnius.JavaMultipleMethod.__call__
jnius.JavaException: No methods matching your arguments, requested: (), available: []

نظرًا لأن استدعاء طريقة غير ثابتة في الفصل لم يعد يعمل ، فقد تم إصلاح المشكلة بالفعل.
والآن نحن نفهم سبب المشكلة.
لذلك لا أعتقد أننا بحاجة إلى إصدار جديد.

أو: نظرًا لأن لا أحد يبدو على دراية بكيفية إصلاح ذلك في 1.3.0 ، فإننا نضيف حالة اختبار لمنع الانحدار المستقبلي إلى السلوك السابق. يمكن أن يتوقع testcase الاستثناء في الحالة أعلاه.

وهل يمكننا إزالة FIXME إذن؟

أو: نظرًا لأن لا أحد يبدو على دراية بكيفية إصلاح ذلك في 1.3.0 ، فإننا نضيف حالة اختبار لمنع الانحدار المستقبلي إلى السلوك السابق. يمكن أن يتوقع testcase الاستثناء في الحالة أعلاه.

لقد اكتشفت ذلك بالفعل الآن. وتم إصلاح المشكلة جزئياً فقط: العرق_ الإبتسامة:. انظر # 567

وهل يمكننا إزالة FIXME إذن؟

ليس بعد على ما أعتقد. انظر # 563.

مجرد ملاحظة ، لقد غيرت فرع p4a الخاص بي إلى "تطوير" وما زلت أعاني من هذه المشكلة. لقد قمت بمسح مجلد .buildozer الخاص بي وأعدت بنائه ، ولن يتم إنشاء فرع "التطوير" جديدًا بالنسبة لي بدون ربط الأخطاء (2020-12-13 ، 16:22 -0500) (تحرير: عذرًا ، كانت هذه مشكلة مختلفة. لا يمكن تشغيل buildozer بنجاح على نظامي ، على الإطلاق ، في الوقت الحالي.)

أعتقد أن الطريقة التي يجب اتباعها للتغلب على هذا الأمر في تطبيقات العميل هي إجراء استدعاء pyjnius يدويًا ، لذا سيعمل قاعدة بيانات العميل بشكل جيد على الإصدارات المختلفة. من الواضح أن هناك حاجة ماسة للإصدارات التي تصلح هذا الأمر هنا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات