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 애플리케이션을 실행하는 것이라면 지금까지 가장 쉬운 방법은 에뮬레이터에서 실행하는 것입니다.안드로이드 개발 도구.