Android 64 bit的一些相容性分析

2021-09-20 08:26:11 字數 674 閱讀 2331

首先在init.zygote32_64.rc裡面有這兩條開機啟動的服務

最終,可以發現這個值是由apk的native 庫決定的,可以得出乙個判斷邏輯:

如果apk中的native庫中含有arm64-v8a,則以64位的模式執行,fork zygote64

如果沒有,則看有沒有armeabi-v7a,armeabi這兩個,如果有,則以32位模式執行,fork zygote

如果apk中這三個庫都沒有,則預設以64位模式執行。

3、64位和32位執行環境的差異:

動態鏈結庫查詢路徑:

32位的環境是ld_library_path=/vendor/lib:/system/lib;

64位的環境是ld_library_path=/vendor/lib64:/system/lib64;

因此,在編寫native層**的時候,如果有一些**硬編碼了lib裡面的so路徑的時候,比如硬編碼了/system/lib/libc.so 這個路徑,在64位執行環境執行就會出錯

參考文章:

檢視系統原始碼

Android的一些詞彙

1 override override是偽 表示重寫 當然不寫也可以 不過寫上有如下好處 1 可以當注釋用,方便閱讀 2 編譯器可以給你驗證 override下面的方法名是否是你父類中所有的,如果沒有則報錯 比如你如果沒寫 override而你下面的方法名又寫錯了,這時你的編譯器是可以通過的 它以為...

Android 一些錯誤

android fragment裡面放viewpager 巢狀fragment 報錯 解決 在adapter的構造方法裡加上 super fragment.getchildfragmentmanager 把android專案變成lib的時候會在switch語句那裡報錯 解決 switch語句的cas...

android開發的一些概念

在安卓開發的時候,不可避免的需要同安卓開發人員進行交流,所以,這就要求我們對安卓開發的一些概念進行熟悉 以下是一些需要掌握的安卓開發概念。sdk software development kit 一般都是一些 軟體工程師 為特定的 軟體包 軟體框架 硬體平台 作業系統 等建立應用軟體時的 開發工具 ...