마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Runtime.exec 와 Adb Shell 의 차이?

0 추천

안녕하세요? 

제가 쉘 명령어를 안드로이드 앱 개발에서 실행하려고 하는데요...

쉘 명령어 실행할때 보통 Runtime 의 exec() 함수를 사용하는데,,

여기서 실행하는거랑 Windows 의 command 지령을 이용해 Adb shell 에서 실행하는거랑 같지 않을까요? 

 

그런데, monkey 를 runtime.exec() 로 실행하면 안되고 

Adb shell 에서는 된다는게 잘 이해가 안가네요.. 어차피 실행권한은 user 로 동일한것 같은데.. 

 

ex) runtime.exec("monkey -p com.xxx.xxx -v 500") -> 오류

      (Windows 의 Adb shell 로 쉘 진입 후) monkey -p monkey -p com.xxx.xxx -v 500 -> 정상동작

 

조언 부탁드립니다.

Oneway 님이 2015년 10월 29일 질문

2개의 답변

0 추천
익명사용자 님이 2015년 10월 30일 답변
0 추천
어플리케이션 소스코드 상에서 exec로 monkey실행은 기본적으로 불가능합니다.

adbshell로 접속해서 명령어를 실행할때와 exec로 명령어 실행할때 유저가 다르고

소속 그룹도 다르기 때문에 권한 제한이 많이 걸려있습니다.

그리고 루팅 되지 않는한 일반 어플리케이션에서는 어떤 방법을 쓰더라도

절대로 자기자신 어플 이외의 영역에 터치 이벤트를 발생 시키거나 터치 정보를 수집할 수 없습니다.

보안상 너무 위험하기 때문이죠.
익명사용자 님이 2015년 10월 30일 답변
익명님 저도 많이 찾아 보았는데 ... android의 Monkey클라스를 이용하면 exec로 monkey 명령을 실행할수 있다고 하던데...
Monkey b;
String str[] = ["xxx", "xxxx"...]
b.run(b)...
Monkey.jar라는 게 있다던데... 제가 https://android.googlesource.com/platform/development/+/ecc1a3d0cf3af3dbbf4c190e1060fc1c0f8fb8a6/cmds/monkey/src/com/android/commands/monkey/Monkey.java#
....
...