터미널을 통해 특정 앱의 동작을 실행하는 방법은 무엇입니까?


13

SSH를 통해 원격 컴퓨터에서 안드로이드 앱을 실행해야하지만 명령 줄 전문가가 아니므 로 앱 의 특정 동작 을 실행하는 방법을 알고 싶습니다 . (단지 열지 말고) 다음을 의미합니다. 앱의 가능한 동작에 대한 정확한 구문을 아는 방법은 무엇입니까?

예 : 컴퓨터에서 휴대 전화로 오디오 녹음 앱을 시작하고 원격에서 녹음을 시작하려고합니다. 가능합니까?

고마워, 안드레아

답변:


12

이것을 사용하십시오 :

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

응용 프로그램을 제어하려면, 당신은 올바른 값을 넣어해야합니다 <package_name><full_class_name>명령에 있습니다. 예를 들어 com.google.gmail/com.google.gmail.check_mail(가상 이름)을 명령의 마지막 부분으로 사용할 수 있습니다 .

앱의 패키지 이름을 얻는 것은 쉽지만 클래스 이름을 얻는 것은 쉽지 않습니다. 두 가지 문제가 있습니다.

  1. 많은 앱 개발자는 수업 정보를 비공개로 유지합니다.

  2. 모든 개발자가 스마트 모듈 식 프로그래밍을하는 것은 아닙니다. 의도에 의해 트리거 될 수있는 여러 클래스로 앱을 나누는 것이 좋은 습관이지만 모든 개발자가 똑똑하지는 않습니다.

첫 번째 문제의 해결책 : apktool을 사용하여 앱을 디 컴파일하고 모든 정보를 확인하십시오. 다른 방법도 있지만이 방법은 항상 작동하는 방법입니다 (앱이 SDK 대신 NDK를 기반으로하지 않는 경우).

두 번째 문제의 해결책 : 없음.

걱정하지 마십시오. 대부분의 인기있는 앱은 최상의 프로그래밍 방식을 따르며 Public API클래스 정보를 얻을 수있는 기능을 제공 합니다.


당신은 매개 변수에 대한 몇 가지 설명을 추가 할 수 있습니다 <package_name><full_class_name>방법과이를 얻기 위해? 나에게, 적어도 후자는 명확하지 않다.
Izzy

@Izzy 설명을 추가했습니다 ... 다시 답을 검토하십시오.
Android Quesito

감사! +1 : D 작고 이해하기 쉽습니다. 마음에 들지 않으면 링크를 자유롭게 추가 할 수 있습니다. apktools(개발자가 아닌 개발자는 SDK의 일부라고 생각하여 길을 잃을 수도 있습니다.)
Izzy

@Izzy 내 문제는 다음과 같습니다.이 활동 설정 앱을 시작할 수 없습니다 : com.android.settings/.Settings$StorageSettingsActivity. 직접 해보십시오. 실제로 $부호 뒤에 그 문자열은 무엇 입니까? 설정 활동의 하위 클래스와 같은가요?
Gokul NC

@GokulNC 당신은 전체 것을 인용해야하거나 (작은 따옴표) $StorageSettingsActivity변수로 보이고 빈 문자열로 "확장"될 수 있습니다 (해당 이름으로 정의 된 변수가 없다면).
Izzy

9

Sachin Shekhar가 말했듯이 다음 명령을 사용해야합니다.

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

구체적인 예를 참조하십시오.

  • Android 기기 또는 마켓 플레이스에서 apk 파일 가져 오기
  • 이 명령을 실행 :

aapt dump xmltree com.android.settings*.apk AndroidManifest.xml

"테 더링"메뉴를 시작하고 싶습니다. 출력에서 ​​활동을 검색합니다.

(...)
   E: activity (line=190)
    A: android:name(0x01010003)=".TetherSettings" (Raw: ".TetherSettings")
(...)

최종 명령은 다음과 같습니다.

am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings

aapt명령은 Android SDK의 일부입니다


1
: D 그것을 테스트, 그것은 매력으로 작동합니다. 이것이 실제 © ® ™ 실무 예제입니다.
Gilles Quenot

2
행운과 컴퓨터 과학은 정반대입니다. 그것은의 상대 경로.
Gilles Quenot

2
아니요, com.android.settingsPATH를 생략 할 수 있으므로 상대 경로라고 말했습니다. 원하는 앱에서 테스트하십시오.
Gilles Quenot

2
다른 앱에서는 작동하지 않는다고 말하지 않았습니다. 수업 명 앞에있는 점은 마술을합니다. 그러나 이것은 권장되지 않습니다.
Android Quesito

1
운이 좋다고 말했지만 그렇지 않습니다. 어설 션 소스가 있습니까? 이것이 권장되지 않는 이유는 무엇입니까?
Gilles Quenot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.