2013-05-31 5 views
0

은과 같이 안드로이드 앱 내에서 다른 프로세스를 실행할 수 있습니다 :Android 앱에서 프로세스를 생성 할 수 있습니까?

Runtime.getRuntime().exec("dalvikvm ...."); 

나는 그러나, 나는 이 방법으로 "SU"를 실행할 수 있습니다, 보안 예외를 받고있는 것으로 보인다.

+0

일반적으로 현재 작동하지만 모든 세부 사항이 올바른 것이어야합니다. 실행 파일의 경로를 지정해야하거나 인수를 전달할 방법이 필요할 수도 있습니다. 일반 응용 프로그램 프로세스에서 안드로이드가 코드를 실행할 수없는 이유가 있습니까? (당신이 매니 페스트에있는 지정자를 사용하여 다른 응용 프로그램 프로세스에서 실행되도록 할 수 있습니다. 어렴풋한 이유가있을 경우 –

+0

오류가 발생하면 System.exit()을 수행하는 기존 코드를 포함해야합니다. 서비스로 포장 할 수도 있지만 서비스에서도 System.exit()는 효과가 있지만 바람직하지 않습니다. – rustyx

+0

다른 오류 처리 기능을 사용하려면이 문제를 해결해야합니다. 그러나 매니페스트에서 서비스가 자체 프로세스로 실행된다고 말할 수 있습니다. 안드로이드가이를 시작하는 세부 사항을 처리합니다. 그렇지 않으면, VM을 직접 실행하는 방법을 알아 내고 싶다면 (예 : 임의의 원시 실행 파일보다 더 까다 롭습니다) 'am'명령의 소스를 살펴볼 수 있습니다.하지만 Android API를 사용하면 많은 어려움을 겪을 수 있습니다. –

답변

0

응용 프로그램의 데이터 디렉토리에서 이러한 방식으로 프로세스를 실행할 수 있습니다. 예를 들어,이 프로젝트에서 그들은 ffmpeg 바이너리를 실행합니다 (처음에 res/raw를 앱의 dir에 넣었습니다). https://github.com/guardianproject/android-ffmpeg-java/tree/master/src/org/ffmpeg/android

응용 프로그램 디렉토리 밖의 프로세스에 대해서는 알지 못합니다.

+1

파일은 실행 가능하고 읽을 수있는 것으로 표시되어야하며 noexec 마운트 플래그가있는 파티션에 있지 않아야합니다. 앱의 개인 디렉토리는 최근에 보안이 설정된 장치에서 수행 할 수있는 유일한 휴대용 디렉토리 일 가능성이 있지만 다양한 빌드에 다른 가능한 스크래치 디렉토리가 있습니다. 소유하고있는 앱에 설정된 권한 비트에 따라 다른 앱에서도이를 실행할 수 있습니다. –

관련 문제