Android là hệ điều hành 32 bit hay 64 bit?


46

Tiêu đề là khá nhiều tự giải thích: Android là hệ điều hành 32 hoặc 64 bit? Tôi giả định rằng đó là một hoặc khác chứ không phải cả hai, vì điều đó sẽ buộc cả hai nhị phân 32 và 64 bit được lưu trữ trên Google Play. Tôi biết rằng đây là một câu hỏi đơn giản và những người khác đã hỏi nó, nhưng trong cuộc sống của tôi, tôi không thể tìm thấy câu trả lời trên web, và chắc chắn không có ai trên SE này.

Câu trả lời:


48

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 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/binhoặ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.mkbuild/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 :)


2
Công cụ thú vị, nhưng sẽ rất tốt nếu có một số nguồn trong câu trả lời.
Đậu phộng

2
+1, bởi vì ngay cả khi không có nguồn, ít nhất một nửa công việc nghiên cứu đã được thực hiện để giúp tìm ra những gì cần tìm. Đừng -1 anh chàng đã cố gắng giúp đỡ và trả lời câu hỏi ...
haylem

1
Hiện tại có các thiết bị ARM 64 bit chạy Android 64 bit.
Matthew Đọc

1
Tôi đang từ chối vì hầu hết câu trả lời là về môi trường nào được sử dụng để biên dịch Android, điều này hoàn toàn không liên quan đến câu hỏi.
Dan Hulme

1
Vâng, đó là sự thật, và tôi sẽ đăng một câu trả lời mới về tình huống ngày hôm nay, nhưng môi trường biên soạn luôn luôn là một cá trích đỏ.
Dan Hulme

8

Ban đầu, Android chỉ được viết cho bộ xử lý 32 bit: và cụ thể là bộ xử lý ARM 32 bit. Sau đó, Intel và MIPS đã đầu tư rất nhiều vào việc làm cho Android cũng hỗ trợ kiến ​​trúc của họ: nhưng vẫn chỉ là bộ xử lý 32 bit. Họ đã có thể làm điều này mà không có (nhiều) vấn đề tương thích, vì hầu hết các ứng dụng không được vận chuyển dưới dạng nhị phân. Được viết bằng Java, thay vào đó, chúng được vận chuyển dưới dạng mã byte , một máy ảo trên điện thoại sẽ biên dịch sang kiến ​​trúc điện thoại khi ứng dụng được chạy. Một số ứng dụng bao gồm bản địacác thành phần, được vận chuyển như một nhị phân. Điều này được thực hiện để làm cho một số loại ứng dụng nhanh hơn (đặc biệt là các trò chơi) hoặc để ứng dụng truy cập các thư viện C không có sẵn trong Java. Những ứng dụng đó có thể bao gồm nhiều hơn một nhị phân cho các phần mã gốc, để cho phép chúng chạy trên các kiến ​​trúc khác nhau. Mặc dù vậy, phần lớn các ứng dụng chỉ dành cho Java, vì vậy chúng chỉ hoạt động trên mọi kiến ​​trúc.

Trên đây là tất cả sự thật tại thời điểm câu hỏi này (và hầu hết các câu trả lời khác) đã được viết, nhưng không còn nữa. Lollipop giới thiệu hỗ trợ cho bộ xử lý ARM 64 bit mới ( ARMv8) cũng như cho bộ xử lý x86_64 của Intel và AMD, điều đó có nghĩa là Android hiện hỗ trợ cả bộ xử lý 32 bit và 64 bit. Nexus 9 là thiết bị Android 64 bit hàng đầu đầu tiên. Cũng như cấp quyền truy cập vào các tiện ích mở rộng tập lệnh mới, hỗ trợ 64 bit có nghĩa là các ứng dụng có thể sử dụng hơn 4 GB RAM. Hầu hết các ứng dụng sẽ không cần nhiều như vậy, nhưng các trò chơi cao cấp và phần mềm tạo ảnh / video chắc chắn có thể sử dụng nó: đẩy Android trở thành nền tảng cho các trò chơi chất lượng bảng điều khiển (bao gồm cả trò chơi VR) và để tạo nội dung. Các ứng dụng Java không cần phải được cập nhật để tận dụng lợi thế này, vì máy ảo luôn biên dịch chúng theo kiến ​​trúc điện thoại, nhưng các ứng dụng có mã gốc sẽ.

Do ARMv8 tương thích ngược với mã 32 bit (giống như cách x86_64 vẫn có thể chạy mã x86), ngay cả các ứng dụng bao gồm mã gốc cho bộ xử lý 32 bit vẫn có thể chạy trên Android 64 bit. Vì vậy, một ứng dụng chỉ cần được biên dịch cho 64 bit nếu nó chứa mã gốc nó muốn tận dụng giới hạn RAM cao hơn hoặc các tính năng mới của kiến ​​trúc.


5

Tất cả các chip ARM hiện tại là 32 bit. Vì điều này, Android hiện thực thi tất cả mã trong môi trường 32 bit.

Bộ xử lý 64 bit được thiết lập để khởi chạy vào năm 2014 .


1
Đó không chính xác là một nguồn đáng tin cậy vì điều này đã nói về các máy chủ, để trích dẫn điện thoại thông minh trên điện thoại thông minh xa hơn một chút, theo For Forthth. , chúng ta đang nói về ARM trong bối cảnh Android / Điện thoại thông minh / Máy tính bảng.
t0mm13b

2

Android là hệ điều hành 32 hay 64 bit? Tôi giả định rằng đó là một hoặc khác chứ không phải cả hai, vì điều đó sẽ buộc cả hai nhị phân 32 và 64 bit được lưu trữ trên Google Play.

Thật ra cũng không. Android là một hệ điều hành dựa trên máy ảo Dalvik và Google Play lưu trữ các ứng dụng Dalvik. Bản thân Dalvik VM, giống như Java VM, luôn luôn là 32 bit bất kể độ bit của máy vật lý.

Như bạn nghi ngờ, các ứng dụng gửi các tệp nhị phân gốc và các ứng dụng NDK phải gửi cùng với các nhị phân được biên dịch cho mọi kiến ​​trúc mà nó dự định chạy. Kiến trúc phổ biến nhất mà Android chạy trên là ARM 32-bit; tuy nhiên cũng có những thiết bị chạy trên x86 và MIPS.


0

Tôi chỉ đoán nhưng tôi nghĩ điều này cũng giải thích nó chỉ đơn giản. Nó phụ thuộc vào thiết bị bạn đang sử dụng, có bốn loại os đó là ARM, ARM 64, X84 và X84_64. ARM là nền tảng 32 bit phổ biến, ARM 64 cũng là nền tảng phổ biến nhưng 64 bit, X84 là nền tảng không phổ biến và được sử dụng trên Zenfones, giống như X84_64 không phổ biến và được sử dụng trên Trình giả lập Android. Tôi đã nhận được thông tin os này trên Open Gapps

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.