2013-05-09 2 views
1

Android 용 c4droid 앱을 다운로드했으며 system();을 통해 명령을 실행했습니다. 나는 다른 사람들이하지 않고 일하는 것은 일하는 것을 배우고 있습니다. 멋진 것들 대부분은 작동하지 않으며 이것은 리눅스 사용자 수준에서 그러한 명령을 실행할 수있는 권한이 사용자 프로필에 주어지지 않은 것 같습니다.네이티브 응용 프로그램을 실행할 수있는 Android 권한?

다른 실험을 시도했습니다. ARM 프로세서를위한 특별한 Gnu 컴파일러를 얻었고 간단한 hello world app을 컴파일했습니다. 그런 다음 휴대 전화를 끼고 system("./myapp.bin");과 같은 c4droid 앱을 통해 실행하려고했습니다. permission denied 메시지가 있습니다.

그래서 나는 내가 할 수있는 일과 좋은 돈을 지불 한 내 전화로 할 수없는 것을 이해하려고 노력하고있는 중입니까? 나 같은 안녕하세요 세계 애플 리케이션을 실행할 수 있습니까? 내가 만든 응용 프로그램을 실행하려면 루트 액세스가 필요합니까? 내 코드를 안드로이드/자바 코드로 래핑하여 실행할 수있는 방법이 있습니까? 이걸 달릴 수 있도록 달비크 즘을 통과해야합니까?

나는 이것을 루팅하거나 busybox와 같은 것을 다운로드하고 su를 사용하지 않고 이것을 수행 할 방법을 찾고 있습니다.

답변

1

많은 다양한 문제가 있습니다.

  1. permission denied는 기본 쉘이 알고있는 몇 가지 오류 메시지 중 하나이며,이 요청 된 명령을 찾지 못하는 경우를 포함하여 실패의 많은 다른 유형에 사용됩니다.

  2. 일반적인 도구 모음에는 많은 일반적인 유닉스 명령이 없습니다. 사람들은 종종 포괄적 인 보완 물로 busybox를 설치합니다.

  3. 실제로 수행하려는 작업 중 일부는 실제로 shell (또는 더 많은 응용 프로그램 사용자 ID) 계정에없는 권한이 필요합니다. 에뮬레이터 또는 엔지니어링 장치에서만 adb 셸이 기본적으로 루트로 실행되지만 '루트'장치에서는 루트 셸에 연결할 수 있습니다.

  4. 컴파일 된 코드를 실행하기 위해 루트 액세스가 필요하지 않지만 코드에 적합한 ABI가 있어야하고 모든 라이브러리 종속성이 충족되어야하며 실행 가능 플래그가있는 파일에 다음과 같은 파티션에 설치되어야합니다. 비 실행 플래그로 마운트되지 않았습니다. 당신이 직면 한 이슈 중 일부는 glibc (또는 다른) vs Android의 bionic libc입니다. 실행 가능한 스크래치 디렉토리는 안드로이드 버전에 따라 다르지만, 앱이 파일을 세계에서 읽을 수 있고 실행 가능하도록 설정 한 경우 앱의 개인 저장 영역은 옵션입니다.

  5. 기본 코드를 실행하는 일반적인 방법은 android 's Bionic libc에 링크 된 공유 라이브러리로 빌드하고 JNI를 사용하여 dalvik/java 앱에서 호출하는 것입니다.

+0

예. 알고 있습니다. 하지만'./myapp.bin'은 기술적 인 문제를 제외하고는 실행될 수 있다고 생각합니다. –

+0

일반적으로 파일 실행 플래그, 파티션 실행 플래그 및 libc (in) 호환성이라는 세 가지 문제가 있습니다. –

+0

표준 Android 애플리케이션을 통해 실행 파일을 실행하는 방법은 무엇입니까? –

관련 문제