Android64位系統
㈠ 安卓64位系統是什麼意思,和安卓4.4有什麼區別為什麼要叫64位系統呢
安卓64位系統是運行64位框架,支持64為處理器的安卓系統。
區別:位數不同,安卓4.4隻支持32位,而64位系統支持64位。
名稱:因為支持了64位框架和64位CPU。
從安卓5.0以後,安卓就支持了64位系統,因此5.0以後的安卓系統都可以叫做安卓64位系統。
(1)Android64位系統擴展閱讀
安卓升級64位原因
「多構」取代「多核」成為硬體發展趨勢,更豐富的感測器將被引入。同時iPhone 5s引領的64位處理器風尚也將迫使Android必須支持ARM V8構架。
64位系統簡介
在計算機架構中,64位整數、內存地址或其他數據單元,是指它們最高達到64位(8位元組)寬。此外,64位CPU和算術邏輯單元架構是以寄存器、內存匯流排或者數據匯流排的大小為基準。
64 位CPU在1960年代,便已存在於超級計算機,且早在1990年代,就有以 RISC 為基礎的工作站和伺服器。2003年才以 x86-64 和 64 位 PowerPC 處理器架構的形式引入到(在此之前是 32 位)個人計算機領域的主流。
㈡ Android手機64位和32位的軟體存在兼容問題嗎
Android手機64位和32位的轎信軟體存在兼容。
關於Android 64位系統兼容32位應用的實現的簡單分析:
Android 的zygote進程的實現不同於之前的版本,除了有zygote進程之外還有zygote64進程。
在做裂init.zygote32_64.rc中有明確指出:
service zygote /system/bin/app_process32 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote
...
service zygote_secondary /system/bin/app_process64 -Xzygote /system/bin --zygote --socket-name=zygote_secondary
...
其中app_process32 和app_process64 就純帆閉是zygote進程的可執行程序,啟動後會改名成zygote。
顧名思義,zygote32即app_process32是一個運行在32位的進程,它所連接的庫也都是32位的。而zygote64就是運行在64位的進程,它所連接的庫都是64位的。
在不考慮有32/64兼容庫的情況下,一個進程如果要正確運行,就必須從可執行程序入口開始到所有使用的庫都保持32/64位的一致性。
因為zygote進程是所有第三方應用程序的父進程,所以可以認為,如果應用程序是32位的,那沒他的父進程也肯定是32位,換句話說,如果需要啟動某個32位的應用,那麼肯定是通過32位的zygote進程fork出來的。
這個一點可以在ActivityManagerService上得到驗證。
ActivityManagerService中startProcessLocked方法實現啟動應用,主要通過Process中的startViaZygote方法
這個方法最終是向相應的zygote進程發出fork的請求 zygoteSendArgsAndGetResult(openZygoteSocketIfNeeded(abi), argsForZygote);
其中openZygoteSocketIfNeeded(abi)會根據abi的類型,選擇不同的zygote的socket監聽的埠
在之前的init文件中可以看到zygote32位監聽的埠就是–socket-name=zygote另外一個就是–socket-name=zygote_secondary
因此可以證實,之前的猜測,即32應用進由32位zygote進程fork出來,64位應用進程由64zygote進程fork出來。那麼之前說的abi參數就是決定應用是32還是64位的關鍵所在,跟蹤這個參數,發現這個參數在ApplicationInfo的primaryCpuAbi中決定
這個值由PackageManagerService在做scanPackageLI的時候決定,具體這個值的得出有一個公式化的過程,主要就是判斷這個apk有沒有使用native的庫
如果使用了,那就看使用了的是32位的還是64位的,另外還要看系統支持的是32位還是64位的。
在64位設備上,如果app的 lib 目錄下 存在armeabi,則以32位兼容方式運行。
如果存在arm64-v8a 則已64位運行。如果沒有任何 so,則 primaryCpuAbi 為空,按照系統的默認配置決定,也就是64位運行。
根據這些因素就可以決定這個apk是應該是32位的還是64位的。以上就是Android L 64位系統兼容32位應用的基本實現過程。另外記錄一點,在源碼環境下如果要PREBUILT第三方的so
如果是32位的需要專門標注 LOCAL_MULTILIB := 32以此告訴編譯系統so位32位,防止編譯到64位下去。
(2)Android64位系統擴展閱讀:
64位和32位晶元的區別
其實手機處理器和PC處理器對於位數的概念是相同的,這里我就用PC的處理器來說明了。對CPU有些了解的人大概都知道Pentium 3和Pentium 4,了解更深的,還會知道是i386處理器在20幾年前把處理器從16位帶入32位時代。
處理器經過了近30多年的考驗後,到現在已經躍升到64位,這可不同1GHz到3GHz的頻率提升。如果說頻率的提升是把一條4車道高速公路的時速限制從120公里提升到了360公里的話
那麼從32位到64位的提升就是將這條提升了3倍時速限制的高速公路從4車道拓寬到了8車道,也就是說,這條公路的運力提升了一倍,這可是質的飛躍。
㈢ Android APK 在32bit 和64bit 的區別問題
32位系統對應的是32位操作系統,而64位系統則是64位的操作系統。32位操作系統在運行速度上理論上比64位操作系統慢兩倍,盡管這種差距在實際使用中並不明顯。
32位操作系統在內存支持方面存在一定的限制,理論上最多隻能支持4GB內存,但實際上只能使用到大約3.25GB。相比之下,64位操作系統則可以支持更多內存,從4GB到32GB甚至更高,這取決於主板的內存插槽數量。
在軟體兼容性方面,32位操作系統能夠兼容大多數民用化的軟體,但64位操作系統需要安裝64位驅動才能確保軟體的正常運行。這意味著64位操作系統能夠更好地支持最新的硬體和軟體技術,從而提供更好的性能和體驗。
值得注意的是,盡管64位操作系統在內存支持和軟體兼容性方面具有明顯優勢,但32位操作系統仍然在某些特定場景下被廣泛使用。例如,在一些老舊的硬體設備上,32位操作系統可能仍是唯一的選擇。
總的來說,選擇32位還是64位操作系統,需要根據實際需求來決定。對於需要大量內存和高性能的應用場景,64位操作系統無疑是更好的選擇。但對於一些基本的日常使用,32位操作系統也完全足夠。