Android bir 32 bit mi yoksa 64 bit bir işletim sistemi mi?


46

Başlık hemen hemen açıklayıcıdır: Android bir 32 veya 64 bit işletim sistemi midir? Hem 32 tane hem de 64 bitlik ikili dosyaları Google Play'de barındırılmaya zorlayacağından, ikisinin de bir diğeri olduğunu varsayıyorum. Bunun basit bir soru olduğunu ve diğer insanların bunu sorduğunu biliyorum, ama benim hayatım boyunca web'de bir cevap bulamadım ve kesinlikle bu SE'de bir tane yok.

Yanıtlar:


48

Ortak faktör olan ARM yonga setleri alanında, tüm Linux yığını, Linux tabanlı benzer çekirdekten, aslında ya 32bit / 64bit bir ana bilgisayar ortamından, ana bilgisayar ortamından çapraz derlenmiş 32bit genellikle Linux'un dağıtımlarından biridir. Android tarafından derlenmesi ve derlenmesi için Google tarafından önerilen dağıtım Ubuntu'dur .

Android çalışma zamanı kitaplığı (medya, grafik, dosya sistemi, ancak birkaç isim) de 32bit, ancak dalvikvm katmanına ulaştığımızda, bit sayısı bu noktada olduğu gibi önemsiz hale geliyor Google Play Store'dan, ham ARM komut setini hedefleyen bayt kodunu çeviren ve çeviren DalvikVM'yi (Sanal Makine) hedef alan, yerel bytecode (taşınabilir bir byte kodunda derlenen oluşturulan Java kodunun "yan ürünü").

Froyo, ARM yonga setini hedef alan çapraz derlemeli 32 bitlik bir barındırılan ortamda derlemeyi sağlayan son Android'di.

Gingerbread, üç yıl önce, o zamanlar inşa edildiği 64bit barındırılan bir ortamın kullanılması şartı getiren “geleceğin” ilk Androidiydi. Gingerbread'i 32bit barındırılan ortamlar altında inşa etmenin birçok yolu vardı.

ICS ve JB ve şimdilerde kesinlikle derlemeyi hızlandırmak ve binadaki geri dönüş süresini azaltmak için 64 bitlik bir ortam gerekiyor.

Sonuç olarak, Google Play Store'da gördüğünüz şey 32bit veya 64bit kullanılıp kullanılmadığı ve dolayısıyla ilgisizliği ile ilgisi yoktur.

Not: Tipik 16GB RAM / Dört çekirdekli / 64bit Linux dağıtımı, ICS'yi sıfırdan inşa etmek için geçen süre, maksimum 30 dakika sürer, bunun 32bit bir Linux dağıtımı olmuştu, aslında daha uzun sürebilirdi, bir CPU'nun erimesine neden olabilirdi basitçe olduğu gibi , çok zorlu ve vergi gerektiren bir işlem olan çapraz derlenmiş kodu çalkalamak ve parçalamak için yeterli işlem gücü yok !

Bunun kanıtı.

Örneğin içinde bulunan herhangi bir yerel ARM ikili kodunu çekin /system/binveya bu, Java'nın ve APK'lerin üst katmanlarından sorumlu olan Dalvik VM ikilisidir./system/xbin/system/bin/dalvikvm

Şimdi, şu komutu vererek ikili dosyayı inceleyin: file dalvikvmBu, hangi dosya türünün bir özetini verir, beklenen çıktı şudur:

dalvikvm: ELF 32-bit LSB çalıştırılabilir, ARM, sürüm 1 (SYSV), dinamik olarak bağlanmış (paylaşılan kütüphaneleri kullanır), soyulmuş

32-bit ELF referansına dikkat edin ve ARM'e çapraz derlendi ve ikili bir çalıştırılabilir dosyadır.

Doğru, devam edersek /system/lib, örneğin /system/lib/libandroid_runtime.soşimdi yayınlanmış sayıdaki yerel bir paylaşılan kütüphaneyi inceleyelim file libandroid_runtime.so, beklenen çıktı şudur:

libandroid_runtime.so: ELF 32-bit LSB paylaşılan nesne, ARM, sürüm 1 (SYSV), dinamik olarak bağlanmış, soyulmuş

Yine, dikkat, 32-bit ELF, ARM ile çapraz derlenmiş ve paylaşılan bir kütüphanedir.

Ev sahibinin çapraz derlemesinin anahtarı, AOSP kaynağında bulunabilir, yani, Gingerbread in temel olarak 64 bitlik bir ana sistem üzerine kurulma zorunluluğu vardı, işte onu oluşturmak için komut dosyalarının nasıl yamalanacağına değinen haber grubu bağlantısı . AOSP'nin Gerrit incelemesinde ( build/core.mkve birleştirilmiş ), burada bulunan iki yaması olan 32bit ana bilgisayar .build/main.mk

Bunu izleyen bir sonuç olarak, bu yama ICS'yi, 3 gün süren ( Zte Blade için bir ICS limanıydı) 32 bitlik bir platformda ICS'yi derleme ayrıcalığına sahip olduğum senaryoları oluşturdu . Şimdi, gereksinimler, hızlandırıldığını olan sen do kesinlikle yukarı doğru ICS AOSP binanın çapraz derleme etkinleştirmek için 64bit host gerekir :)


2
İlginç şeyler, ancak cevapta bazı kaynaklara sahip olmak güzel olurdu.
Fıstık

2
+1, çünkü hiçbir kaynak olmasa bile, araştırma için yapılacak çalışmaların en azından yarısı, neye bakacağını bulmak için yapıldı. Soruyu cevaplamak ve yardım etmek için iyi bir girişimde bulunan adamı -1 yapmayın ...
haylem

1
Şimdi 64 bit Android çalıştıran 64 bit ARM cihazları var.
Matthew

1
Aşağıya iniyorum, çünkü cevabın çoğu Android'i derlemek için hangi ortamların kullanıldığı sorusuyla tamamen alakasız.
Dan Hulme

1
Evet, bu doğru ve bugün durumla ilgili yeni bir cevap göndereceğim, ancak derleme ortamı her zaman kırmızı bir ringa balığı olmuştur.
Dan Hulme

8

Başlangıçta, Android yalnızca 32 bit işlemciler için yazılmıştır: ve özellikle de 32 bit ARM işlemciler. Daha sonra, Intel ve MIPS, Android'in mimarilerini de desteklemesi için çok yatırım yaptı: ama yine de sadece 32 bit işlemciler. Bunu (birçok) uyumluluk problemi olmadan yapabiliyorlardı, çünkü çoğu uygulama ikili dosya olarak gönderilmez. Java'da yazıldığından , uygulama çalıştırıldığında telefondaki sanal makinenin telefonun mimarisine derlendiği bytecode olarak gönderilirler . Bazı uygulamalar yerelİkili olarak gönderilen bileşenler. Bu, bazı uygulamaları daha hızlı hale getirmek (özellikle oyunlar) veya uygulamanın Java'da bulunmayan C kitaplıklarına erişmesine izin vermek için yapılır. Bu uygulamalar, yerel kod bölümleri için, farklı mimarilerde çalışabilmeleri için birden fazla ikili dosya içerebilir. Buna rağmen, uygulamaların çoğu yalnızca Java'dır, bu nedenle yalnızca herhangi bir mimaride çalışırlar.

Yukarıdakiler, bu sorunun (ve diğer cevapların çoğunun) yazıldığı tarihte doğruydu, fakat artık değildi. Lollipop, 64-bit ARM işlemcileri destekledi ( ARMv8)) Intel ve AMD'nin x86_64 işlemcilerinde olduğu gibi, Android artık hem 32 bit hem de 64 bit işlemcileri destekliyor. Nexus 9 ilk 64-bit Android cihazının ilk amiral gemisi oldu. Yeni komut seti uzantılarına erişim sağlamanın yanı sıra, 64 bit desteği, uygulamaların 4 GB RAM'den fazlasını kullanabileceği anlamına gelir. Çoğu uygulama bu kadar ihtiyaç duymayacak, ancak üst seviye oyunlara ve fotoğraf / video oluşturma yazılımına kesinlikle faydalanılabilir: Android'i konsol kalitesinde oyunlar (VR oyunları dahil) ve içerik oluşturmak için bir platform olmaya itmek. Bundan yararlanmak için Java uygulamalarının güncellenmesine gerek yoktur, çünkü sanal makine onları her zaman telefonun mimarisine derler, ancak yerel kod içeren uygulamalar olacaktır.

ARMv8, 32 bit kodla geriye doğru uyumlu olduğundan (x86_64 hala x86 kodunu çalıştırabilir), 32 bit işlemciler için yerel kod içeren uygulamalar bile 64 bit Android'de çalışabilir. Bu yüzden bir uygulamanın sadece yerel kod içeriyorsa ve daha yüksek RAM limitinden veya mimarinin yeni özelliklerinden yararlanmak istiyorsa 64 bit için derlenmesi gerekir .


5

Tüm ARM çipleri şu anda 32 bit. Bu nedenle, Android halen yürüten 32-bit ortamda tüm kodu.

64 bit işlemciler 2014 yılında lanse edildi .


1
Forsyth, “ Bu, akıllı telefonlar biraz daha uzakta” ​​diye alıntı yapmak, sunucular hakkında konuşurken güvenilir bir kaynak değil . , Android / Akıllı Telefonlar / Tabletler bağlamında ARM hakkında konuşuyoruz.
t0mm13b

2

Android bir 32 veya 64 bit işletim sistemi midir? Hem 32 tane hem de 64 bitlik ikili dosyaları Google Play'de barındırılmaya zorlayacağından, ikisinin de bir diğeri olduğunu varsayıyorum.

Hiçbiri aslında. Android, Dalvik VM tabanlı bir işletim sistemidir ve Google Play, Dalvik uygulamalarına ev sahipliği yapmaktadır. Dalvik VM'nin kendisi, Java VM gibi, fiziksel makinenin sıkıntısından bağımsız olarak her zaman 32-bit'tir.

Şüphelendiğiniz gibi, yerel ikili dosyalarla ve NDK uygulamalarıyla birlikte gelen uygulamaların, çalıştırılması amaçlanan her mimaride derlenmiş ikiliklerle birlikte gönderilmesi gerekir. Android'in üzerinde çalıştığı en yaygın mimari ARM 32-bit; ancak x86 ve MIPS üzerinde çalışan cihazlar da var.


0

Sadece tahmin ediyorum ama sanırım bu da basitçe açıklıyor. Hangi cihazı kullandığınıza bağlı olarak, ARM, ARM 64, X84 ve X84_64 olan dört tip os vardır. ARM popüler 32 bit platform, ARM 64 de popüler ama 64 bit platform, X84 nadir görülen bir platformdur ve Zenfones'da kullanılır, X84_64 ile aynıdır ve Android Emülatörlerinde kullanılır. Bu os bilgileri Open Gapps hakkında aldım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.