Trong lĩnh vực chipset ARM là yếu tố phổ biến, toàn bộ ngăn xếp Android, từ hạt nhân gần giống dựa trên Linux, trên thực tế, 32 bit, được biên dịch chéo từ thường là môi trường máy chủ 32 bit / 64 bit, môi trường máy chủ thường là một trong những bản phân phối của Linux. Phân phối được đề xuất, bởi Google, để xây dựng và biên dịch chéo Android là Ubuntu .
Thư viện thời gian chạy Android (phương tiện, đồ họa, hệ thống tập tin, chỉ một vài tên) cũng có 32 bit, nhưng khi chúng ta đạt đến lớp của dalvikvm, thì số bit sẽ trở nên không liên quan vì tại thời điểm này, các apks sẽ đến từ Cửa hàng Google Play là mã byte gốc (A "sản phẩm phụ" của mã Java được tạo được biên dịch thành mã byte di động) nhắm mục tiêu DalvikVM (Máy ảo) để lần lượt diễn giải và dịch mã byte mã hóa theo hướng dẫn của bộ lệnh ARM thô.
Froyo là Android cuối cùng cho phép biên dịch trong môi trường lưu trữ 32 bit, trong đó nó được biên dịch chéo nhắm mục tiêu chipset ARM.
Gingerbread là Android đầu tiên của "tương lai", hồi đó là vào khoảng ba năm trước, đã đưa ra yêu cầu sử dụng môi trường lưu trữ 64 bit trong đó nó được xây dựng. Có rất nhiều hack để có được Gingerbread được xây dựng trong môi trường lưu trữ 32 bit.
ICS và JB, và hiện tại chắc chắn cần có môi trường 64 bit để tăng tốc độ biên dịch và giảm thời gian quay vòng trong quá trình xây dựng.
Vì vậy, để tóm tắt, những gì bạn thấy trên Cửa hàng Play không ảnh hưởng đến việc sử dụng 32 bit hay 64 bit và do đó không liên quan.
Lưu ý bên lề: Phân phối RAM 16 GB / lõi tứ / 64 bit điển hình của Linux, thời gian cần thiết để xây dựng ICS từ đầu, mất tối đa 30 phút, nếu đây là bản phân phối Linux 32 bit, thực tế sẽ mất nhiều thời gian hơn, có thể khiến CPU bị hỏng vì đơn giản là, không đủ sức mạnh xử lý để khuấy động và tạo ra mã được biên dịch chéo, đây là một quá trình rất khó khăn và đánh thuế!
Bằng chứng này.
Kéo theo bất kỳ nhị phân ARM gốc nào được tìm thấy trong /system/bin
hoặc /system/xbin
, ví dụ /system/bin/dalvikvm
, đây là nhị phân Dalvik VM chịu trách nhiệm cho các lớp trên của Java và APK.
Bây giờ, kiểm tra nhị phân bằng cách ban hành lệnh này: file dalvikvm
đưa ra một bản tóm tắt về loại tệp, đó là đầu ra dự kiến sẽ là:
dalvikvm: ELF 32-bit LSB thực thi, ARM, phiên bản 1 (SYSV), được liên kết động (sử dụng libs được chia sẻ), tước
Lưu ý tham chiếu đến ELF 32 bit và được biên dịch chéo cho ARM và là tệp thực thi nhị phân.
Phải, tiếp tục, hãy kiểm tra một thư viện chia sẻ riêng được tìm thấy /system/lib
, ví dụ /system/lib/libandroid_runtime.so
, bây giờ vấn đề file libandroid_runtime.so
, đầu ra dự kiến sẽ là:
libandroid_r Yoon.so: Đối tượng chia sẻ LSB 32 bit, ARM, phiên bản 1 (SYSV), được liên kết động, tước
Một lần nữa, hãy chú ý, ELF 32 bit của nó, được biên dịch chéo sang ARM và là một thư viện dùng chung.
Chìa khóa để cross-biên soạn của máy chủ có thể được tìm thấy trong nguồn AOSP, tức là Gingerbread xây dựng ban đầu đã có một yêu cầu được xây dựng trên một hệ thống máy chủ 64bit, đây là nhóm tin linky đề cập đến làm thế nào để vá các kịch bản để có được nó để xây dựng trên Máy chủ 32 bit có hai bản vá, được tìm thấy ở đây, cho build/core.mk
và build/main.mk
( kết hợp ) trong bài đánh giá Gerrit của AOSP.
Kết quả là, bản vá này đã được chuyển sang các tập lệnh xây dựng của ICS, trong đó tôi có đặc quyền biên dịch ICS trên nền tảng 32 bit, mất 3 ngày để xây dựng ( đó là bản port của ICS cho Zte Blade ). Bây giờ, các yêu cầu được đẩy mạnh, bạn làm chắc chắn cần máy chủ 64bit để cho phép cross-biên soạn xây dựng AOSP từ ICS trở lên :)