μ¬μ©μκ° λ³΄κ³ νμ΅λλ€(λΆνμ 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μμ μλνλ λμ.
μλ νμΈμ μ¬λ¬λΆ μ μ κ°μ λ¬Έμ κ° μμ΅λλ€. ν΄κ²° λ°©λ²μ 무μμ λκΉ? buildozer λΉλμμ μ΄μ pyjniusλ₯Ό μ¬μ©ν μ μμ΅λκΉ? κ°μ¬ ν΄μ!
μλ νμΈμ μ¬λ¬λΆ μ μ κ°μ λ¬Έμ κ° μμ΅λλ€. ν΄κ²° λ°©λ²μ 무μμ λκΉ? buildozer λΉλμμ μ΄μ pyjniusλ₯Ό μ¬μ©ν μ μμ΅λκΉ? κ°μ¬ ν΄μ!
requirements = pyjnius==1.2.1,...
λ₯Ό μ¬μ©νμ¬ λ²μ μ κ³ μ νλ©΄ μλν©λλ€.
λλ Kivy μ¬λμ΄ μλμ§λ§ λκ΅°κ°κ° κ΄λ ¨ μμ€ μ½λμ λν λ§ν¬λ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
μλ νμΈμ μ¬λ¬λΆ μ μ κ°μ λ¬Έμ κ° μμ΅λλ€. ν΄κ²° λ°©λ²μ 무μμ λκΉ? buildozer λΉλμμ μ΄μ pyjniusλ₯Ό μ¬μ©ν μ μμ΅λκΉ? κ°μ¬ ν΄μ!
requirements = pyjnius==1.2.1,...
λ₯Ό μ¬μ©νμ¬ λ²μ μ κ³ μ νλ©΄ μλν©λλ€.
κ°μ¬ν©λλ€. μ€μ λ‘ ν¨κ³Όκ° μμμ΅λλ€!
Pyjnius λ²μ μ 1.2.1λ‘ κ³ μ νλ©΄ μ΄ μμ μ΄ κ°λ₯νμ§λ§ v1.2.1μλ λ€λ₯Έ μ ν μ¬νμ΄ μμΌλ―λ‘ μ΄μμ μΌλ‘λ μμΌλ‘ ν΄κ²°ν΄μΌ ν©λλ€....
κ±°κΈ°μμμ κ²μ λλ€ https://github.com/kivy/python-for-android/blob/develop/pythonforandroid/recipes/android/src/android/permissions.py#L513 μ£μ‘ν©λλ€. μ‘°κΈλ.
Activity ν΄λμ€ μ΄λ¦μ΄ 무μμΈμ§ μ½κ² μ μ μκΈ° λλ¬Έμ μ΄λ ΅κ² λμμ΅λλ€.
λλ κ·Έκ²μ΄ https://github.com/kivy/python-for-android/blob/develop/pythonforandroid/bootstraps/sdl2/build/src/main/java/org/kivy/android/PythonActivity.java# μΌ κ²μΌλ‘ μμν©λλ€.
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 μ€λ₯κ° λ λͺ νν μ μλ€κ³ μκ°ν©λλ€. μ¦, λ©μλ μ΄λ¦μ μ°Ύμ μ μκ³ μ΄λ€ κ°μ²΄μμ μ°Ύμ μ μμ΅λλ€!
λλ μ΄κ²μ΄ ν¨κ³Όκ° μμλ€λ κ²μ μ€νλ € λλλ€. ~μ΄λ€ κ²½μ°μ νΈμΆλμμ΅λκΉ? λ ν¬μΈν°? μλλ©΄ ν΄λμ€μ μ€μ μΈμ€ν΄μ€?~
μ΄κ²μ΄ FIXME
μ κ΄λ ¨μ΄ μμ΅λκΉ?
https://github.com/kivy/pyjnius/blob/3371e1012873fe373773c43b556d2796d10d102e/jnius/jnius_export_class.pxi#L815 -L822
https://github.com/kivy/pyjnius/blob/3371e1012873fe373773c43b556d2796d10d102e/jnius/jnius_export_class.pxi#L1079 -L1087
Pyjnius μ€λ₯κ° λ λͺ νν μ μλ€κ³ μκ°ν©λλ€. μ¦, λ©μλ μ΄λ¦μ μ°Ύμ μ μκ³ μ΄λ€ κ°μ²΄μμ μ°Ύμ μ μμ΅λλ€!
:+1:
Pyjnius μ€λ₯κ° λ λͺ νν μ μλ€κ³ μκ°ν©λλ€. μ¦, λ©μλ μ΄λ¦μ μ°Ύμ μ μκ³ μ΄λ€ κ°μ²΄μμ μ°Ύμ μ μμ΅λλ€!
π
PR μ μ‘ - #558 μ°Έμ‘°.
κ·Έλμ μμΌλ‘ μ΄ κΈμ μ½λ λκ΅°κ°λ₯Ό μν μμ½:
ν¨μΉκ° λ³ν©λμμ΅λλ€
μμ§; νμ§λ§ μΉμΈλμμ΅λλ€ :)
λλ κ·Έ FIXME
κ° μ€μ λ‘ κ΄λ ¨μ΄ μλ€κ³ μκ°ν©λλ€. __get__
λ λ°μΈλ©λ λ©μλλ₯Ό λ°ννλ λμ j_self
λ₯Ό μ€μ νκ³ μΈμ€ν΄μ€ λμ ν΄λμ€μμ νΈμΆλ λ λ¨μν self
λ₯Ό λ°ννλ―λ‘ ν΄λμ€μμ λΉμ μ λ©μλλ₯Ό νΈμΆνλ©΄ νΈμΆλ λ§μ§λ§ μΈμ€ν΄μ€λ₯Ό μ¬μ©ν©λλ€(μλ κ²½μ°). λ¬Όλ‘ ν΄λμ€μμ λΉμ μ λ©μλλ₯Ό νΈμΆνλ κ²μ νμ©λμ΄μλ μ λ©λλ€(λ μ΄μ νμ©λμ§ μμ).
λλ κ·Έ
FIXME
κ° μ€μ λ‘ κ΄λ ¨μ΄ μλ€κ³ μκ°ν©λλ€.__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μμ μ΄λ»κ² μμ λμλμ§ μ무λ λͺ¨λ₯΄λ κ² κ°κΈ° λλ¬Έμ, μ°λ¦¬λ λ―Έλμ μ΄μ λμμΌλ‘ νκ·νλ κ²μ λ°©μ§νκΈ° μν΄ ν μ€νΈ μΌμ΄μ€λ₯Ό μΆκ°ν©λλ€. ν μ€νΈ μΌμ΄μ€λ μμ κ²½μ° μμΈλ₯Ό κΈ°λν μ μμ΅λλ€.
κ·Έλ¬λ©΄ FIXMEλ₯Ό μ κ±°ν μ μμ΅λκΉ?
λλ: μ΄κ²μ΄ 1.3.0μμ μ΄λ»κ² μμ λμλμ§ μ무λ λͺ¨λ₯΄λ κ² κ°κΈ° λλ¬Έμ, μ°λ¦¬λ λ―Έλμ μ΄μ λμμΌλ‘ νκ·νλ κ²μ λ°©μ§νκΈ° μν΄ ν μ€νΈ μΌμ΄μ€λ₯Ό μΆκ°ν©λλ€. ν μ€νΈ μΌμ΄μ€λ μμ κ²½μ° μμΈλ₯Ό κΈ°λν μ μμ΅λλ€.
λλ μ΄μ κ·Έκ²μ μ€μ λ‘ μμ λμ΅λλ€. κ·Έλ¦¬κ³ λ¬Έμ λ λΆλΆμ μΌλ‘λ§ μμ λμμ΅λλ€ :sweat_ smile:. #567 μ°Έμ‘°
κ·Έλ¬λ©΄ FIXMEλ₯Ό μ κ±°ν μ μμ΅λκΉ?
μμ§μ μλλΌκ³ μκ°ν©λλ€. #563μ μ°Έμ‘°νμμμ€.
μ°Έκ³ λ‘, λ΄ p4 λΆκΈ°λ₯Ό 'κ°λ°'λ‘ λ³κ²½νμ§λ§ μ¬μ ν μ΄ λ¬Έμ κ° λ°μνμ΅λλ€. λ΄ .buildozer ν΄λλ₯Ό μ§μ°κ³ λ€μ λΉλνλλ° 'develop' λΆκΈ°κ° λ§ν¬ μ€λ₯ μμ΄ μλ‘ λΉλλμ§ μμ΅λλ€(2020-12-13, 16:22 -0500) (νΈμ§: μ£μ‘ν©λλ€. μ΄κ²μ λ€λ₯Έ λ¬Έμ μμ΅λλ€. I μ§κΈμΌλ‘μλ λ΄ μμ€ν μμ buildozerλ₯Ό μ±κ³΅μ μΌλ‘ μ€νν μ μλ κ² κ°μ΅λλ€.)
ν΄λΌμ΄μΈνΈ μ±μμ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ μλμΌλ‘ pyjniusλ₯Ό νΈμΆνμ¬ ν΄λΌμ΄μΈνΈ μ½λλ² μ΄μ€κ° λ€λ₯Έ λ²μ μμλ λκ°μ΄ μ μλνλλ‘ νλ κ²μ λλ€. λΆλͺ ν μ΄κ²μ μμ νλ 릴리μ€κ° μ¬κΈ°μμ μ μ€ν νμν©λλ€.