Ubuntu Touch 에서 Android 앱을 기본적으로 실행할 수없는 이유가 궁금 합니다. 내 말은, 전부 리눅스 만 아니야?
Ubuntu Touch 에서 Android 앱을 기본적으로 실행할 수없는 이유가 궁금 합니다. 내 말은, 전부 리눅스 만 아니야?
답변:
짧은 대답은 "아니오"입니다.
엄밀히 말하면, Linux 커널은 실행중인 하드웨어에 대한 직접적인 인터페이스 이상을 제공하지 않습니다. Android 애플리케이션에 의존하는 추가 Android 전화 별 API, 프로그램, 애플리케이션 등의 전체 스택이 있습니다. 또한 Android는 일반적인 Linux 커널에서 실행되는 것이 아니라 OS를 실행하려는 특정 목적으로 Google에서 고도로 맞춤 설정된 커널에서 실행됩니다.
기술적으로 다른 응용 프로그램에서 Android 응용 프로그램을 실행하는 데 필요한 전체 스택을 재현 할 수 있어도 비효율적입니다.
Nokia n900은 maemo witch를 실행하는 Linux OS이지만 여전히 dalvik environement wich를 통해 안드로이드 앱을 실행할 수는 있지만 시장이나 레시피를 판매하지는 않습니다. 왜? n900을 위해 달빅을 개발 한 사회 만이 알고 있습니다. 이제 또 다른 이니셔티브 호출 apkenv가있었습니다. n900에서 일부 안드로이드 게임을 실행하기 위해 추가해야 할 것이 많지 않은 것으로 보입니다 .gpu 또는 cpu power 또는 maemo의 데스크톱에 관계없이 앱은 에뮬레이션에서와 같이 호수에서 실행되지만 일부는 완벽하게 실행되지 않습니다. 그래서 우분투 터치에 관해서는 기술의 문제가 아닙니다 (내가 틀렸을 수도 있지만 공식 우분투의 터치 폰은 샤오 미 테크가 안드로이드에 사용되기 때문에 하드웨어 도이 문제가 아닙니다).
귀하의 질문에 대한 답변은 BIG NO입니다.
안드로이드 는 리눅스 커널을 기반으로하지만 안드로이드의 기본 애플리케이션이 리눅스에서 실행될 수 있고 그 반대도 마찬가지라는 의미는 아니지만 안드로이드는 우분투 터치와 완전히 다릅니다 .
다른 OS 간 커널의 유사성으로 인해 이러한 다른 OS에서 응용 프로그램을 실행할 수있는 것은 아닙니다. 커널은 시스템의 가장 낮은 소프트웨어 계층입니다. 커널 위에는 시스템 소프트웨어와 응용 프로그램 인터페이스 로 구성된 사용자 공간 이 있습니다 .
동일한 커널을 가진 OS는 완전히 다른 사용자 공간을 가질 수 있으며 고유 응용 프로그램은 특정 사용자 공간에서 실행됩니다.
또한 Android 앱은 일반적으로 java 및 Android 앱을 사용하여 개발되며 JVM 에서 바이트 코드 를 입력 으로 사용하는 런타임 환경 ( Dalvik 또는 ART ) 에서 실행 되는 반면 Linux 애플리케이션은 컴파일시 머신 코드 로 직접 변환됩니다 .
C ++를 사용하여 안드로이드 용으로 개발 된 애플리케이션은 Linux 환경에서 직접 실행할 수 없으며, Linux 시스템 용으로 먼저 컴파일해야합니다.