파이썬으로 Android에서 Python을 실행할 수있는 방법이 있습니까?




파이썬으로 어플만들기 (20)

우리는 S60 버전을 개발 S60 플랫폼은 멋진 파이썬 API를 가지고 있습니다.

그러나 안드로이드에는 파이썬에 대한 공식은 없지만 Jython 이 존재하기 때문에 뱀과 로봇을 함께 사용할 수있는 방법이 있습니까 ??


Google 직원이 작성한 SL4A 도 있습니다.


BeeWareBeeWare . 이 질문에 답하는 순간 아직 초기 개발 단계에 있습니다. Android를 비롯하여 지원되는 모든 운영체제에 Python으로 기본 앱을 만들 수 있습니다.


채색

Chaquopy 는 Android Studio의 Gradle 기반 빌드 시스템 용 플러그인입니다. 그것은 표준 안드로이드 개발 도구와의 긴밀한 통합 에 중점을 둡니다.

  • Java에서 Python 또는 Python으로 Java 를 호출 할 수있는 완벽한 API를 제공하므로 개발자는 앱의 각 구성 요소에 가장 적합한 언어를 사용할 수 있습니다.

  • PyPI 패키지를 자동으로 다운로드하여 NumPy와 같은 기본 패키지를 포함하여 앱에 빌드 할 수 있습니다.

  • 네이티브 사용자 인터페이스 툴킷 ( 예 : 순수 Python 활동 )을 포함하여 Python의 모든 Android API에 대한 완전한 액세스를 가능하게합니다.

이것은 상용 제품이지만 오픈 소스 용으로는 무료이며 항상 그런 식으로 남을 것입니다.

(나는이 제품의 제작자이다.)



Python 애호가이자 안드로이드 프로그래머로서, 이것이 정말로 좋은 방법이 아니라고 말하는 것은 슬픈 일입니다. 두 가지 문제가 있습니다.

한 가지 문제는 안드로이드 개발 도구에 프로그래밍 언어 이상이 있다는 것입니다. 많은 안드로이드 그래픽은 HTML과 비슷하게 디스플레이를 구성하는 XML 파일을 필요로합니다. 빌트인 자바 객체는 실제로이 XML 레이아웃과 통합되어 있으며 로직에서 비트 맵으로 이동하기 위해 자신의 코드를 작성하는 것보다 훨씬 쉽습니다.

다른 문제는 G1 (그리고 가까운 미래에 아마 다른 안드로이드 장치)이 그렇게 빠르지 않다는 것입니다. 200 MHz 프로세서 및 RAM은 매우 제한적입니다. Java 에서조차도 앱을 완벽하게 매끄럽게 만들고 싶다면 오브젝트 작성을 위해 재 작성 방지 (rewriting-to-avoid-more-object-creation)를해야합니다. 파이썬은 모바일 장치에서 여전히 느려질 것입니다.


플레이 스토어에 QPython3이라는 앱이 있는데 파이썬 스크립트를 편집하고 실행하는 데 사용할 수 있습니다.

Playstore 링크

Termux라는 또 다른 응용 프로그램에서 명령을 사용하여 Python을 설치할 수 있습니다.

pkg install python

Playstore Link


SL4A (다른 답변에서 이미 언급 했음)를 사용하면 완전히 다른 web2py 인스턴스를 run 수 있습니다 (다른 python 웹 프레임 워크 도 후보가 될 수 있습니다). SL4A는 네이티브 UI 구성 요소 (버튼, 스크롤 막대 등)를 허용하지 않지만 WebViews 지원합니다. WebView는 기본적으로 고정 주소를 가리키는 스트라이프 다운 웹 브라우저 이상입니다. 네이티브 Gmail 앱은 일반 위젯 경로로 이동하는 대신 WebView를 사용합니다.

이 경로에는 몇 가지 흥미로운 기능이 있습니다.

  • 대부분의 파이썬 웹 프레임 워크의 경우 실제로 안드로이드 장치 나 안드로이드 에뮬레이터를 사용하지 않고도 개발하고 테스트 할 수 있습니다.
  • 어떤 파이썬 코드라도 전화 작성을 끝내면 공개 웹 서버에 수정할 수도 있습니다.
  • 당신은 그곳의 모든 미친 웹 사이트를 이용할 수 있습니다 : 검색어, HTML5, CSS3 등.

Android 용 스크립팅 레이어

SL4A 는 당신이 원하는 것을 해냅니다. 사이트에서 장치에 직접 쉽게 설치할 수 있으며 루트가 필요하지 않습니다.

다양한 언어를 지원합니다. 파이썬은 가장 성숙합니다. 기본적으로 Python 2.6을 사용하지만 대신 사용할 수있는 3.2 포트가 있습니다. 나는 갤럭시 S2에 모든 종류의 것들을 위해 그 항구를 사용했고 그것은 잘 동작했다.

API

SL4A는 지원되는 각 언어에 대한 android 라이브러리의 포트를 제공합니다. 라이브러리는 단일 Android 객체를 통해 기본 Android API에 대한 인터페이스를 제공합니다.

from android import Android

droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade

각 언어에는 거의 동일한 API가 있습니다. 웹 뷰에서 JavaScript API를 사용할 수도 있습니다.

let droid = new Android();
droid.ttsSpeak("hello from js");

사용자 인터페이스

사용자 인터페이스의 경우 세 가지 옵션이 있습니다.

  • API를 통해 일반적인 기본 대화 및 메뉴를 쉽게 사용할 수 있습니다. 이는 확인 대화 및 기타 기본 사용자 입력에 유용합니다.
  • Python 스크립트 내부에서 웹보기를 연 다음 사용자 인터페이스에 HTML5를 사용할 수도 있습니다. 파이썬에서 웹뷰를 사용할 때 웹뷰와 파이썬 프로세스 사이에 메시지를주고받을 수 있습니다. UI는 기본이 아니지만 가질 수있는 좋은 옵션입니다.
  • 네이티브 Android 사용자 인터페이스에 대한 지원이 있지만 잘 작동하는지 잘 모르겠습니다. 나는 그것을 사용하지 못했습니다.

옵션을 혼합 할 수 있으므로 기본 인터페이스에 대한 웹보기를 사용할 수 있으며 여전히 기본 대화 상자를 사용할 수 있습니다.

QPython

http://qpython.com/ 이라는 타사 프로젝트가 http://qpython.com/ . 그것은 SL4A를 기반으로하고 다른 유용한 것들을 던집니다.

QPython은 설치 관리에 더 좋은 UI를 제공하며, 패키지 관리를위한 약간의 터치 스크린 코드 편집기, Python 셸 및 PIP 셸을 포함합니다. 그들은 또한 파이썬 3 포트를 가지고있다. 두 버전 모두 Play 스토어에서 무료로 사용할 수 있습니다. QPython은 또한 Kivy를 포함하여 안드로이드 프로젝트에서 많은 Python 라이브러리를 번들로 제공하므로 SL4A만이 아닙니다.

QPython은 여전히 ​​SL4A 포크를 개발합니다 (단, 정직하지는 않습니다). 메인 SL4A 프로젝트 자체는 거의 죽었습니다.

유용한 링크


한가지 더 많은 옵션은 docs를 인용 한 pyqtdeploy 인 것 같습니다 :

Qt와 함께 제공되는 다른 도구와 함께 Python v2.7 또는 Python v3.3 이상으로 작성된 PyQt4 및 PyQt5 응용 프로그램을 배포 할 수있는 도구입니다. 데스크톱 플랫폼 (Linux, Windows 및 OS X) 및 모바일 플랫폼 (iOS 및 Android)에 대한 배포를 지원합니다.

pyqtdeploy 및 Qt5를 통해 PyQt5 애플리케이션을 Android배포하는 방법 에 따르면 안드로이드 애플리케이션을 사용하는 예나 필요한 모든 라이브러리를 Android로 크로스 컴파일하는 방법에 대한 자습서를 찾는 것이 어렵지만 적극적으로 개발됩니다. 그것은 염두에 두어야 할 재미있는 프로젝트입니다!


안드로이드 용 Python 2.7.2를 크로스 컴파일하기위한 지침과 패치를 게시했습니다. 내 블로그 ( http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/ 에서 다운로드 할 수 있습니다. http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

편집 : 나는 오픈 소스 이 그니시바 , 내 2D 게임 엔진, 그것은 파이썬 / SDL을 기반으로하고 안드로이드에 대한 크로스 컴파일합니다. 게임용으로 사용하지 않더라도 코드와 빌더 유틸리티 (Schafer, Tim 다음 ...)에서 유용한 아이디어를 얻을 수 있습니다.


한 가지 방법은 Kivy 를 사용하는 Kivy .

멀티 터치 응용 프로그램과 같은 혁신적인 사용자 인터페이스를 사용하는 응용 프로그램의 신속한 개발을위한 오픈 소스 파이썬 라이브러리.

Kivy는 Linux, Windows, OS X, Android 및 iOS에서 실행됩니다. 지원되는 모든 플랫폼에서 동일한 [python] 코드를 실행할 수 있습니다.

Kivy Showcase 앱



키비

@ JohnMudd 가 이미 대답 한 내용의 연장으로 게시하고 싶습니다 ( 그러나 영어는 제 1 언어가 아니므로 나와 함께 견뎌주십시오 )

그 후로 수년이되었으며 Kivy는 v1.9-dev로 진화했습니다. 제 생각에 Kivy의 가장 큰 판매 포인트는 크로스 플랫폼 호환성입니다. 로컬 환경 (Windows / * nix 등)에서 코드를 작성하고 테스트 할 수 있으며, Android / iOS / Mac / Windows 장치에서 실행되도록 앱을 빌드, 디버그 및 패키징 할 수도 있습니다.

Kivy 자신의 KV 언어를 사용하면 GUI 인터페이스를 쉽게 코딩하고 작성할 수 있습니다 (Java XML과 비슷하지만 TextView 등이 아닌 KV는 비슷한 번역을위한 자체 ui.widgets 을 가지고 있습니다). 채택.

현재 Buildozerpython-for-android 는 앱을 빌드 / 패키징하는 데 가장 권장되는 도구입니다. 나는 그것들을 모두 시험해 보았고 파이썬으로 안드로이드 애플 리케이션을 만들었다 고 단호하게 말할 수있다. 콘솔 / 터미널 / 명령 프롬프트에 익숙하지 않은 사용자는 사용하는 데 문제가 없어야하며 가이드도 잘 설명되어 있습니다.

iOS는 kivy-ios Homebrew 도구를 사용하여 iOS 기기에서 테스트 실행에 필요한 약간의 변경만으로 동일한 코드 기반을 사용할 수 있지만 Kivy의 또 다른 큰 판매 포인트입니다. 실행하기 전에 Xcode를 빌드해야합니다. 그들의 장치 (AFAIK Xcode의 iOS 시뮬레이터는 현재 x86 아키텍처 빌드에서 작동하지 않습니다). 성공적인 빌드를 위해 Xcode에서 수동으로 컴파일 및 처리해야하는 몇 가지 종속성 문제가 있지만 해결하기가 너무 어렵지는 않을 것이며 Kivy Google 그룹의 사람들도 도움이됩니다.

모든 말로, 좋은 파이썬 지식을 가진 사용자는 간단한 애플 리케이션을 만드는 데 몇 주일이 걸리지 만 몇 주 안에 기본 사항을 고르는 데 아무런 문제가 없어야합니다.

또한 언급 할 가치가있는 것은 파이썬 모듈을 빌드에 번들 (빌드 레시피) 할 수 있기 때문에 파이썬이 Kivy의 확장 지원을 통해 Requests & PIL 등과 같은 많은 기존 라이브러리를 실제로 사용할 수 있다는 것입니다.

때로는 애플리케이션에 Kivy가 제공 할 수있는 범위를 벗어나는 기능이 필요하기도합니다. 이러한 경우 외부 소프트웨어 라이브러리에 의존해야합니다. 파이썬 생태계의 풍부함을 감안할 때 이미 간단하게 가져 와서 사용할 수있는 많은 소프트웨어 라이브러리가 이미 있습니다.

마지막으로, Kivy를 더 심각한 / 상업적 프로젝트에 사용하려는 경우 기존 모듈이 만족스럽지 않을 수 있습니다. Android 용 pyobjuspyobjus "진행중인 작업"을 통해 실행 가능한 솔루션이 있습니다. 이제 사용자는 이러한 모듈을 통해 Java / Objective-C 클래스에 액세스하여 일부 원시 API를 제어 할 수 있습니다.

Kivy에서의 경험은 노련한 파이썬 프로그래머와 급속한 개발이나 간단한 코드 기반 유지를 원하는 심각한 프로그래머들에게 가장 적합하다는 것입니다. 고유 한 느낌은 아니지만 여러 플랫폼에서 잘 실행됩니다.

일부 Python 앱 프로그래머가이 정보를 유용하게 사용하고 Kivy를 살펴보기를 바랍니다. 커뮤니티로부터 큰 관심이있는 경우에만 더 많은 지원과 라이브러리 / 모듈이 포팅됨에 따라 더 나아질 수 있습니다.

추신 : 저는 Kivy와 아무런 관계가 없습니다, 저는 파이썬 코딩 재미를 모바일 / 크로스 플랫폼 개발에 실제로 옮기기를 정말로 좋아하는 프로그래머 일뿐입니다.


새로운 Android Scripting Environment (ASE / SL4A) 프로젝트도 있습니다. 그것은 굉장해 보이고 기본 Android 구성 요소와 일부 통합되어 있습니다.

참고 : 더 이상 "활발한 개발"이 아닌 일부 포크가있을 수 있습니다.


QPython 응용 프로그램을 사용합니다. 편집기, 콘솔을 가지고 있으며, 파이썬 프로그램을 실행할 수 있습니다. 응용 프로그램은 무료이며 링크는 http://qpython.com/ 입니다.


여기에 게시 된 것을 보지 못했지만, Necessitas 덕분에 Qt가 Android에서 작동하기 때문에 Pyside 및 Qt로이 작업을 수행 할 수 있습니다.

지금은 꽤 괴상한 것처럼 보이지만 결국 결국 가능한 경로가 될 수 있습니다 ...

http://qt-project.org/wiki/PySide_for_Android_guide



3.4.2 또는 3.5.1을 찾고 있다면 또 다른 옵션은 GitHub의이 아카이브입니다.

Python3-Android 3.4.2 또는 Python3-Android 3.5.1

현재 Python 3.4.2 또는 3.5.1과 NDK의 10d 버전을 지원합니다. 3.3 및 9c, 11c 및 12도 지원할 수 있습니다.

당신이 단순히 그것을 다운로드하고, make를 실행하며, .so 또는 .a를 얻는 것이 좋다.

나는 현재 안드로이드 장치에서 원시 Python을 실행하기 위해 이것을 사용합니다. 빌드 파일을 수정하면 x86 및 armeabi 64 비트를 만들 수도 있습니다


google-opensource.blogspot.com/2009/06/…

SL4A를 통한 Matt Cutts 의 예 - "여기에는 6 줄의 파이썬 코드로 작성된 바코드 스캐너가 있습니다.

import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)

" 안드로이드 용 파이 게임 하위 세트는 안드로이드 플랫폼에 대한 파이 게임 기능의 일부분의 포트입니다.이 프로젝트의 목표는 안드로이드 전용 게임의 생성을 허용하고 PC와 같은 플랫폼에서 안드로이드로의 게임 포팅을 용이하게하는 것입니다 . "

예제에는 APK에 패키지 된 완전한 게임이 포함되어 있습니다.





android-scripting