adb로 SL4A에 접속 시 Unknown RPC 오류 시간 절약

* 문제 해결책의 출처:http://code.google.com/p/android-scripting/issues/detail?id=449

안드로이드의 SL4A(스크립팅 레이어 포 안드로이드)에서 View - Interpreter - Start Server - Private로 실행해서 127.0.0.1:35194로 실행되었을 경우에 아래와 같이 작업하다보니 오류가 나왔습니다. 

im-macbook:~ imky$ adb devices
List of devices attached 
5d9a31ec device

im-macbook:~ imky$ adb get-state
device
im-macbook:~ imky$ adb forward tcp:9999 tcp:35194
im-macbook:~ imky$ export AP_PORT=9999
im-macbook:~ imky$ python2.6
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import android
>>> droid = android.Android()
com.googlecode.android_scripting.rpc.RpcError: Unknown RPC.
>>> exit()

프로 안드로이드 SL4A라는 책에서도 위 내용 이외에 별 이야기가 없는데 안되더군요. 그래서 구글에서 검색해 보았더니, Python의 lib 디렉터리에 복사해주었던 android.py의 아래 부분(37번째 라인)을 코멘트로 처리하라고 하네요. 

저의 맥에서는 /System/Library/Frameworks/Python.framework/Versions/2.6/lib에 위치합니다. 

class Android(object):

  def __init__(self, addr=None):
    if addr is None:
      addr = HOST, PORT
    self.conn = socket.create_connection(addr)
    self.client = self.conn.makefile()
    self.id = 0
#    self._authenticate(HANDSHAKE)

이렇게 해주었더니, 이상없이 동작이 되었습니다.(안드로이드 기기에 hello 문자가 잠시 떴다가 사라집니다)

im-macbook:~ imky$ python2.6
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import android
>>> droid = android.Android()
>>> droid.makeToast("hello")
Result(id=0, result=None, error=None)
>>> 

파이썬의 다양한 기능들을 이용하여, 나만의 유틸리티를 만들어서 쓸 수 있을 것 같습니다. 예를 들면, 시간 대에 따라 진동 모드라든지 GPS위치를 이용하여 무음 모드로 바꾼다든지... 물론, FTP서버, 웹서버(간단한)도 파이썬을 이용해서 만들 수 있겠지요. 

위 파이썬 코드를 hello.py로 저장한 후, adb push my_script.py /sdcard/sl4a/scripts 와 같이 명령하면, 안드로이드 기기에서 직접 스크립트를 실행해볼 수 있습니다. 간단하네요^^

덧글

  • XKY 2012/12/20 23:13 # 답글

    저도 그 책 가지고 있습니다 ^^
    자바를 싫어하는 저에게는 솔깃한 책이지요..

    맨땅에 삽질한다는 말처럼,
    안드로이드 개발환경도 없이 오로지 안드로이드 기기에서만 코딩하고 테스트 하다가 결국 불편해서 SL4A책에 나와있는 대로 SDK를 내려받는 중이였습니다.

    덕분에 도움이 많이 될 것같아요~ 감사합니다!
  • 무재칠시 2012/12/21 09:47 #

    도움이 되셨다니 메모해놓은 보람이 있네요^^ 파이썬은 왠지 즐겁게 코딩한 기억이 납니다만, 막상 현재 회사의 현업에서는 적용할 부분이 떠오르지는 않는 듯합니다.~
댓글 입력 영역