Linux에서 Android x86 실행 파일을 실행할 수 없는 이유

Linux에서 Android x86 실행 파일을 실행할 수 없는 이유

Android 앱을 Linux로 포팅하려고 하는데(웃지 마세요 :) 문제가 발생했습니다. app_process실행 권한을 추가한 후 Android 실행 파일( )을 실행하려고 하면 작동 ./app_process하지만 존재하지 않는다는 메시지가 나타납니다 cat ./app_process.

또한 내 파일 관리자(Pantheon Files)에서 실행 파일은 공유 라이브러리 아이콘을 표시합니다.

Linux에서 이를 실행할 수 있는 방법이 있습니까?

답변1

안드로이드와 리눅스는 서로 다른 운영 체제입니다.. 한 곳에서 실행 파일을 가져와서 다른 곳에서 실행할 수는 없습니다.

첫 번째 장애물은 커널입니다. Android와 Linux는 동일한 커널을 기반으로 하지만 몇 가지 다른 기능을 가지고 있습니다. 특히 안드로이드는 다음과 같은 기능을 제공합니다.바인더, 버전 3.19 이후 주류 커널(Linux 배포판에 있는 커널)에만 존재합니다. 순수 네이티브 코드 애플리케이션은 바인더를 사용하지 않을 수도 있지만 대부분의 Java 앱은 이를 사용합니다.

두 번째 장애물은 동적 라이브러리입니다. 동적으로 연결된 실행 파일이 있는 경우 동적 링커를 호출합니다. Android와 Linux에는 동적 링커가 다르며, 동적 링커가 없으면실행 파일 자체가 존재하지 않는 것처럼 동일한 오류가 발생합니다..

동적 링커와 필요한 구성 파일, 네이티브 라이브러리를 복사하면 대부분의 네이티브 프로그램을 실행할 수 있습니다. 의 대부분을 복사해야 하며 /system복사본은 에 있어야 합니다 /system.

Java 앱을 실행하려면 더 복잡합니다. Java 런타임 환경(Dalvik/ART)이 필요하며 대부분의 앱에는 일부 Android 데몬도 필요합니다(일부 네이티브 코드 앱에는 이러한 데몬도 필요함).

결론은 두 시스템이 하나의 커널에서 공존할 수 있지만 이는 충분히 최신 커널이거나 Android 커널(Android 커널은 대부분의 Linux 애플리케이션을 실행할 수 있음)이어야 한다는 것입니다.두 운영 체제를 모두 설치해야 합니다.— 서로 애플리케이션을 실행할 수는 없습니다.

Linux 위에 Android용으로 미리 만들어진 설치 프로그램이 있는지는 모르겠습니다. 그러나 특히 반대 방향의 설치 프로그램이 있습니다.리눅스의안드로이드.

목표가 Linux 시스템에서 Android 앱을 실행하는 것이라면 가장 쉬운 방법은 Linux 시스템의 일부인 에뮬레이터 내에서 앱을 실행하는 것입니다.안드로이드 개발 도구.

관련 정보