2012-01-15 3 views
1

터미널에 dalvikvm이 설치된 응용 프로그램을 시작하려고합니다.터미널 실행 dalvikvm with am.jar

dalvikvm -cp system/framework/am.jar com.android.commands.am.Am 
: dalvikvm cannot find a main class

그래서 내가 dalvikvm에서 "시작입니다"를 실행하려고 :

dalvikvm -cp /system/app/Calculator.apk com.android.calculator2/.Calculator 

그런 다음 실패 메시지 제공 : 난 그냥 이렇게 이렇게하려고하면 그것은 작동하지 않습니다

정말 작동합니다. 하지만 앱을 시작하려고한다면 :

dalvikvm -cp system/framework/am.jar com.android.commands.am.Am start -n com.android.calculator2/.Calculator 

그것은 작동하지 않습니다.

누군가 제발 나를 도와 줄 수 있습니까?

답변

2

점 몇 :

  1. 당신은 터미널에서 안드로이드 응용 프로그램을 실행할 수 없습니다. 첫 번째 명령에서 Calculator 클래스에 static void main (String []) 메서드 이 있으면이를 실행합니다. 은 이러한 방식으로 응용 프로그램을 "실행"할 수 없습니다.

  2. am을 사용하면 터미널에서 특정 활동을 시작하는 올바른 방법입니다. 제공된 "am"스크립트 (/ system/bin/am)를 사용하면됩니다. 또는 적어도 해당 스크립트를보고 올바르게 호출하는 방법을 확인하십시오. 예를 들어

, am start -n com.android.calculator2/.Calculator

+0

감사합니다. 하지만 dalvikvm 앱부터 시작하고 싶습니다. 그리고 그럴 수 있다고 생각합니다. 'dalvikvm -cp system/framework/am.jar com.android.commands.am.Am'을 실행하면 터미널에'am -help'를 줄 때와 같은 메세지가됩니다. 그래서 저는 dalvikvm에서 시작해서 내 앱을 시작하라는 명령을 내리고 싶습니다. 나는 당신의 방식이 더 간단하다는 것을 알고있다. 그러나 나는 dalvikvm을 수정하고 기존 dalvikvm을 통해 내 dalvikvm을 응용 프로그램으로 시작하기를 원한다. – Aprel

+0

아마도 당신은 zygote를보고 싶어 할 것이고, 어떻게 안드로이드 응용 프로그램이 낮은 수준에서 시작될 것인가. dalvik의 수정 된 버전에서 am 명령을 실행하는 것만으로 원하는 것을 수행 할 수 있다고 생각하지 않습니다. 만약 내가 추측했다면 보통 dalvik을 통해 평소와 같이 안드로이드 응용 프로그램을 시작한 다음 exec 시스템 호출을 사용하여 새로운 dalvikvm 인스턴스를로드하고 실행해야하며 안드로이드 응용 프로그램에 필요한 다양한 핸들을 전달해야합니다 이것은 접합자 과정이 작동하는 방식과 유사합니다. – JesusFreke

+1

이것은 매우 나쁜 생각 일 가능성이 높습니다. 모든 안드로이드 프로세스는 일부 공통 메모리를 공유하므로 사용자는이를 활용할 수 없습니다. 예를 들어 모든 프레임 워크 클래스는 한 번로드되고 모든 dalvik 프로세스는 동일한 공유 메모리 조각을 볼 수 있습니다. 새 dalvik VM 인스턴스는 이러한 모든 프레임 워크 클래스 자체를로드해야하므로 앱에 과도한 메모리 사용이 발생할 수 있습니다. – JesusFreke

0

당신은 vogar에 dalvikvm 헤드리스를 실행할 수 있습니다 원하는 일을해야한다. SVN에서 빌드해야합니다. 미리 만들어진 항아리가 오래되었습니다!

+0

흠 ... 왜 그런 식으로해야할까요? 나는 휴대 전화를 가지고 있고 터미널을 사용할 수있다. – Aprel

관련 문제