문제

는 사람이 성공적으로 컴파일되는 안드로이드 및 테스트 커널에서 안드로이드 에뮬레이터,그리고 그렇다면 아무거나가 있는 특별한 것을 할 필요가 있겠습니까?

SDK 이 우수하고,그러나 문서 커널을 컴파일하고 설정을 사용자 정의 기계 에뮬레이터에서는 열심히 나를 위해 찾을 수 있습니다.

도움이 되었습니까?

해결책

2009 년 8 월 이후 커널은 더 이상 지침을 따라 Android 오픈 소스 프로젝트의 소스 코드를 다운로드 할 때 얻을 수있는 표준 Repo 매니페스트의 일부가 아닙니다. 에뮬레이터에서 특정 커널을 성공적으로 다운로드, 빌드 및 실행하는 데 필요한 단계는 다음과 같습니다.

  • repo manifest에 추가하여 또는 실행하여 수동으로 안드로이드 커널을 가져옵니다.
    git clone https://android.googlesource.com/kernel/goldfish.git
  • 에뮬레이터 (IE Goldfish)와의 작업을 위해 올바른 지점을 확인하십시오.
    git checkout -t origin/android-goldfish-2.6.29 -b goldfish
  • 에뮬레이터 구성을 생성합니다 (QEMU 에뮬레이터는 ARM 코드를 실행합니다, 즉 ARM 구성) :
    make ARCH=arm goldfish_defconfig
    • 그래도 작동하지 않으면 시도하십시오 make ARCH=arm goldfish_armv7_defconfig
  • 이제 오픈 소스 프로젝트에 배포 된 크로스 컴파일 도구를 사용하여 커널을 빌드하십시오.
    make ARCH=arm CROSS_COMPILE=mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
  • 이 방법으로 구축 된 커널은 커널 트리의 아치/팔/부트 폴더에서 끝나야합니다 (Git Clone에서 코드를 넣음)
  • 커널로 에뮬레이터를 실행하려면 두 가지 대안이 있습니다. 표준 커널을 대체하기 위해 오픈 소스 프로젝트의 사전 제작 된 커널 폴더에 복사하십시오. 다른 옵션은 커널 옵션 세트로 에뮬레이터를 시작하는 것입니다.
    emulator -kernel mydroid/kernel/common/arch/arm/boot/zImage

위의 설명에서 기본 경로를 사용 했으므로 설정에 적용되는 내용으로 변경해야합니다. 내가 이것을 테스트 한 마지막 시간 이후로 시간이 지났지 만 작동해야한다고 생각합니다.

일부 추가 정보 : 표준 Android 오픈 소스 분포에서 커널은 mydroid/prebuilt/android-arm/kernel 폴더와 소스 코드가 포함되어 있지 않습니다. 커널 소스는 내가 가져갈 때 두 가지 이유로 기본 매니페스트에서 제거되었습니다. 하나는 대부분의 사람들이 많이 작동하지 않는 플랫폼 구성 요소를 위해서는 많은 대역 및 디스크 스페이스가 필요하다는 것입니다. 또 다른 이유는 커널이 커널 빌드 시스템으로 제작되었으므로 AOSP 빌드 시스템의 일부가 아니라 분리를 유지하는 것이 합리적이기 때문입니다. 커널의 공통 분기는 에뮬레이터가 사용하는 분기입니다. 실험, MSM (Qualcomm 플랫폼) 및 OMAP (TI 플랫폼)에 대한 지점도 있으며, 아마도 더 많은 것일 수도 있습니다. 하드웨어와 함께 Android 커널을 사용하려면 더 흥미로울 수 있습니다.

다른 팁

BMB의 게시물에서 몇 가지를 수정하기 위해 (나에게 매우 유용한 것은 내 프로젝트를 저장했습니다) :

  • git clone git : //android.git.kernel.org/kernel/common.git (the 핵심 놓친);
  • git 체크 아웃 -t origin/Android -Goldfish -2.6.29 -B 금붕어 (동일);
  • Arch = arm goldfish_defconfig (idem);
  • ARC = ARM Cross_Compile = MyDroid/Prebuilt/Linux-X86/Toolchain/Arm-Abi-4.2.1/bin/arm-ebi- (idem)
  • 에뮬레이터 -avd my_avd -kernel mydroid/kernel/common/arch/arm/boot/zimage (여기에 추가 AVD 명령에서, 그것은 나를 위해 작동하지 않았습니다).

이것은 BMB 및 Arnaud LM의 답변에 대한 업데이트입니다.
2011/03/03 기준으로 Goldfish BranchNames가 변경된 것 같습니다. 금붕어 지점을 확인할 때 다음을 사용하십시오.

git checkout -t origin/archive/android-gldfish-2.6.29 -b goldfish 

Android-Gldfish-2.6.29에서 누락 된 'O'를 기록하십시오!

이것이 누군가를위한 시간을 절약하기를 바랍니다.

2012 년 현재 커널 다운로드는 Source.google.com에 잘 문서화되어 있지만 몇 번의 시도가 걸렸습니다. ARM 에뮬레이터 용 커널을 작성하는 데 사용한 명령은 다음과 같습니다.

cd /kernel/source/root
make mrproper
adb pull /proc/config.gz # from the emulator
gunzip config
mv config .config  # now you have a (perhaps slightly outdated kernel .config)
make ARCH=arm silentoldconfig # update the .config - take the defaults if prompted
make ARCH=arm menuconfig # make any further changes
time make -j4 ARCH=arm CROSS_COMPILE=/path/to/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- 2>&1 | tee ../../logs/$(date +%Y%m%d-%H%M)-make-kernel.log
emulator -kernel /kernel/source/root/kernel/goldfish/arch/arm/boot/zImage -avd myAVD &

이 답변에 대답 한 모든 분들께 감사드립니다.이 답변에서 비트와 조각으로 할 수있었습니다. Amaund의 '당신은 AVD 필요'는 나에게 문제를 일으킨 마지막 작품이었습니다.

완전 자동화된 안드로이드 8.1 게스트 우분투에서 17.10 스

# Download the source. Takes several minutes.
curl https://storage.googleapis.com/git-repo-downloads/repo >repo
chmod a+x repo
./repo init -b android-8.1.0_r1 --depth 1 -u https://android.googlesource.com/platform/manifest
./repo sync -c  -j $(($(nproc) - 2)) --no-tags --no-clone-bundle

# Do the actual build. Takes minutes / hours.
. build/envsetup.sh
lunch aosp_x86_64-eng
USE_CCACHE=1 CCACHE_DIR=ccache make -j $(($(nproc) - 2))

# Run the emulator.
emulator -show-kernel

out/ 디렉터리를 구성하는 대 90Gb,나머지의 트리에 대한 40Gb 제외하고,CCACHE.

약 1~2 분 후 시뮬레이터,홈 화면에 보여줍니다:

고 enter 키를 누르면 호스트에서 터미 안드로이드에서 시작되었다,당신은 쉘에 안드로이드 시스템은 호스트에서 터미널:

enter image description here

Notes:

  • ./repo init -b 를 가리켜야 합니다 태그. master 점은 항상 깨어지고,그렇게 했 -release 가지입니다.

    태그의 목록에서 찾을 수 있습니다: https://android.googlesource.com/platform/manifest 또는 복제는 repo.

    가능성이 있다는 두 가지 이유를 가지는 항상 깨:

    • 안드로이드 개발 뒤에 닫힌 문와 코어.........따라서 Google 및 OEM 요 이미 톤의 paches 에서 최고의 공"master",그리고 이미정 문제입니다.

      같은 이유로 그것을 가능성이 쓸모를 시도하고 보고하고 구축에 오류가 마스:그들은 이미 보고되고 해결되었습니다.또한 저는 감히 당신을 찾을 오른쪽에 공식적인 장소 보고서를 구축 실패입니다.

    • repo sync 는 지점에는 단순히 끌어 무엇이든 최신 버전의 모든 650git repos 만 AOSP 위해 주어진 지점이 없이 동기화 같은 서브 모듈.따라서 아무것도 보장하는 호환됩니다.태그 그러나 가정 태그의 모든 repos.

  • --depth 1sync -c --no-tags --no-clone-bundle 었하려는 시도들에게 고통스럽게 느린 복제 더 빠르다.지 얼마나 성공적이었다.도 참조하십시오: AOSP repo sync 너무 오래 걸립

  • 우리가 사용하는 lunch aosp_x86_64-eng 대신 팔기 때문에 그것은 훨씬 빠르게 실행됩 때문에 호스트 x86 가상화 확장.

    를 구축하 팔 버전을 대신 사용 lunch aosp_arm-eng 대신 합니다.

    또한,팔미지는 버그로 인해 느림?때 GUI 시작(당신이 운이 좋은 경우),그것을 보여줍니다"시스템 UI 응답하지 않".도 참조하십시오: 프로세스 시스템에 응답하지 않 안드로이드 에뮬레이터

  • -show-kernel 링크 터미널 시리얼,즉당신이 볼 수은 부팅 메시지를 얻을 쉘에서 끝나는 것은 매우 유용한 디버깅하는 것들입니다.

  • type emulator 는 것을 보여줍니다 그냥 별칭 emulator 없이 모든 인수입니다. 실행할 사용자의 의 안드로이드 에뮬레이터 요청을 전달하는 방법 중 일부는 인수하는 명시적으로 선택하 ROM.

    에뮬레이터 -help 대상은 놀라 울 정도로 통찰력:

    emulator -help
    emulator -help-build-images
    emulator -help-disk-images
    

    을 결정할 수 있는 정확한 질의 명령으로 주어:

    emulator -verbose | grep 'emulator: argv'
    

    에서 언급했듯이: 는 방법을 보여주는 옵션을 통과하는 QEMU 을 시작할 때 android emulator?

    이 중 일부를 보여 줍니다 예를 들어 사용자 정의 옵션 -android-hw, 그래서 그들은 있어야 한 갈래 QEMU: QEMU vs 안드로이드 에뮬레이터:명령행 옵션 이동 소스 위치 5 분마다 분명히: 수정하여 안드로이드 소스 코드 에뮬레이터

쉽습니다. 지침을 따르십시오 http://source.android.com/download 전체 안드로이드의 소스 코드를 얻고 컴파일하는 데. 시간이 걸리지 만 그렇게 복잡하지는 않습니다.

그것을 만들면 당신은 당신이 <android>/out 예배 규칙서. 여기에는 ROM 이미지 외에 에뮬레이터를 포함한 많은 도구도 포함됩니다. 내 에뮬레이터가 있습니다 <android>/out/host/linux-x86/bin/emulator. 이름이 지정된 환경 변수를 설정하십시오 ANDROID_PRODUCT_OUT 에게 <android>/out/target/product/generic, 옵션없이 에뮬레이터를 실행하면 컴파일 된 ROM이 실행됩니다.

2012 년 5 월 현재 커널을 컴파일하기 위해 'Goldfish_Defconfig'를 사용할 수 없다는 것을 알았습니다. goldfish_armv7_defconfig '를 사용해야합니다. 이것은 Jonnylambada의 에뮬레이터에서 구성을 추출하는 방법 (사전 제작 된 커널의 경우)이 작동하는 이유를 설명합니다.

goldfish_defconfig는 ARM 926 프로세서에서 실행되도록 커널을 구성하지만 에뮬레이터는 Coretex A8 (ARM V7 CPU)으로 실행되도록 구성됩니다. 따라서 작동하려면 최신 DEFCONFIG를 사용해야합니다 (또는 에뮬레이터에서 구성을 당기십시오).

그냥 참고로.

내가 컴파일 한 AOSP ROM을 부팅 할 수있는 방법은 ~/.Android/avd/froyo.avd/로 컴파일 된 System.img를 복사하는 것이었지만 System.img를 추출하고 루팅 된 버전의 SU를 추가 할 때 그리고 BusyBox, 그런 다음 System.img, 에뮬레이터가 부팅되지 않습니다. 나는 아직도 그 부분을 알아 내려고 노력하고있다 : S

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top