国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android架構(gòu) 架構(gòu)和 CPU ABI - NDK

這篇具有很好參考價值的文章主要介紹了Android架構(gòu) 架構(gòu)和 CPU ABI - NDK。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

查看設(shè)備架構(gòu)

adb -s emulator-5554 shell getprop ro.product.cpu.abi

C:\Users\liyd>adb -s emulator-5554 shell getprop ro.product.cpu.abi
x86_64

C:\Users\liyd>adb -s 804c11f1 shell getprop ro.product.cpu.abi
arm64-v8a

mumu模擬器12

C:\Users\liyd>adb -s 127.0.0.1:7555 shell getprop ro.product.cpu.abi
x86_64

架構(gòu)和 CPU

使用原生代碼時,硬件很重要。NDK 提供各種 ABI 供您選擇,可讓您確保針對正確的架構(gòu)和 CPU 進行編譯。

本部分介紹了在構(gòu)建時如何面向特定的架構(gòu)和 CPU,如何使用 ARM Neon 擴展指令集,以及在運行時如何使用 CPU 功能庫查詢可選功能。

Android ABI - NDK

bookmark_border
不同的 Android 設(shè)備使用不同的 CPU,而不同的 CPU 支持不同的指令集。CPU 與指令集的每種組合都有專屬的應(yīng)用二進制接口 (ABI)。ABI 包含以下信息:

可使用的 CPU 指令集(和擴展指令集)。
運行時內(nèi)存存儲和加載的字節(jié)順序。Android 始終是 little-endian。
在應(yīng)用和系統(tǒng)之間傳遞數(shù)據(jù)的規(guī)范(包括對齊限制),以及系統(tǒng)調(diào)用函數(shù)時如何使用堆棧和寄存器。
可執(zhí)行二進制文件(例如程序和共享庫)的格式,以及它們支持的內(nèi)容類型。Android 始終使用 ELF。如需了解詳情,請參閱 ELF System V 應(yīng)用二進制接口。
如何重整 C++ 名稱。如需了解詳情,請參閱 Generic/Itanium C++ ABI。
本頁列舉了 NDK 支持的 ABI,并且介紹了每個 ABI 的運行原理。
ABI 還可以指平臺支持的原生 API。如需影響 32 位系統(tǒng)的此類 ABI 問題列表,請參閱 32 位 ABI 錯誤。

支持的 ABI

Android架構(gòu) 架構(gòu)和 CPU ABI - NDK,android,java,android,java文章來源地址http://www.zghlxwxcb.cn/news/detail-695445.html

ZygoteInit.java

private static final String ABI_LIST_ARG = "--abi-list=";
private static final String SOCKET_NAME_ARG = "--socket-name=";


public static void main(String argv[]) {
566        try {
567            RuntimeInit.enableDdms();
568            // Start profiling the zygote initialization.
569            SamplingProfilerIntegration.start();
570
571            boolean startSystemServer = false;
572            String socketName = "zygote";
573            String abiList = null;
574            for (int i = 1; i < argv.length; i++) {
575                if ("start-system-server".equals(argv[i])) {
576                    startSystemServer = true;
577                } else if (argv[i].startsWith(ABI_LIST_ARG)) {
578                    abiList = argv[i].substring(ABI_LIST_ARG.length());
579                } else if (argv[i].startsWith(SOCKET_NAME_ARG)) {
580                    socketName = argv[i].substring(SOCKET_NAME_ARG.length());
581                } else {
582                    throw new RuntimeException("Unknown command line argument: " + argv[i]);
583                }
584            }
585
586            if (abiList == null) {
587                throw new RuntimeException("No ABI list supplied.");
588            }
589
590            registerZygoteSocket(socketName);
591            EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_START,
592                SystemClock.uptimeMillis());
593            preload();
594            EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_END,
595                SystemClock.uptimeMillis());
596
597            // Finish profiling the zygote initialization.
598            SamplingProfilerIntegration.writeZygoteSnapshot();
599
600            // Do an initial gc to clean up after startup
601            gcAndFinalize();
602
603            // Disable tracing so that forked processes do not inherit stale tracing tags from
604            // Zygote.
605            Trace.setTracingEnabled(false);
606
607            if (startSystemServer) {
608                startSystemServer(abiList, socketName);
609            }
610
611            Log.i(TAG, "Accepting command socket connections");
612            runSelectLoop(abiList);
613
614            closeServerSocket();
615        } catch (MethodAndArgsCaller caller) {
616            caller.run();
617        } catch (RuntimeException ex) {
618            Log.e(TAG, "Zygote died with exception", ex);
619            closeServerSocket();
620            throw ex;
621        }
622    }

到了這里,關(guān)于Android架構(gòu) 架構(gòu)和 CPU ABI - NDK的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Mac系統(tǒng)配置java、Android_sdk、gradle、maven、ndk、flutter、tomcat環(huán)境變量

    Mac系統(tǒng)配置java、Android_sdk、gradle、maven、ndk、flutter、tomcat環(huán)境變量

    搞了三天,終于搞定MAC系統(tǒng)下的各種環(huán)境變量了…… 舊版本10.13.6或者更老的MAC系統(tǒng),只用在.bash_profile文件編輯就行了;新版本10.14.2、10.15.7或者更高的,還要去.zshrc文件加一句source ~/.bash_profile,才能使所有環(huán)境永久生效。 打開終端(相當(dāng)于Windows系統(tǒng)的命令提示符),運行

    2024年02月05日
    瀏覽(31)
  • Android NDK介紹 Android NDK靜態(tài)注冊 動態(tài)注冊:

    ????????Application.mk(ARM硬件指令集/工程編譯腳本/stl支持等) ????????Android.mk(編譯選項/頭文件/源文件及依賴庫等) ????????local_path(call my-dir) ????????include $(clear_vars) ????????local_arm_mode:= arm指令模式 ????????local_module:=模塊名稱 ????????local_src_files

    2024年02月16日
    瀏覽(27)
  • Android Studio 進行NDK開發(fā),實現(xiàn)JNI,以及編寫C++與Java交互(Java調(diào)用本地函數(shù))并編譯出本地so動態(tài)庫

    Android Studio 進行NDK開發(fā),實現(xiàn)JNI,以及編寫C++與Java交互(Java調(diào)用本地函數(shù))并編譯出本地so動態(tài)庫

    1.首先認(rèn)識一下NDK。 (1)什么是NDK? NDK全稱是Native Development Kit,NDK提供了一系列的工具,幫助開發(fā)者快速開發(fā)C/C++的動態(tài)庫,并能自動將so和java應(yīng)用一起打包成apk。NDK集成了交叉編譯器(交叉編譯器需要UNIX或LINUX系統(tǒng)環(huán)境),并提供了相應(yīng)的mk文件隔離CPU、平臺、ABI等差異,

    2024年02月11日
    瀏覽(35)
  • 【Android -- JNI 和 NDK】認(rèn)識 NDK

    【Android -- JNI 和 NDK】認(rèn)識 NDK

    定義 :Native Development Kit ,是 Android 的一個工具開發(fā)包。 NDK 是屬于 Android 的,與 Java 并無直接關(guān)系 作用 :快速開發(fā) C、 C++ 的動態(tài)庫,并自動將 so 和應(yīng)用一起打包成 APK 即可通過 NDK 在 Android 中 使用 JNI 與本地代碼(如C、C++)交互 應(yīng)用場景 :在 Android 的場景下使用 JNI 。

    2024年02月11日
    瀏覽(33)
  • Android NDK開發(fā)詳解之Android.mk探秘

    Android NDK開發(fā)詳解之Android.mk探秘

    本頁介紹了 ndk-build 所使用的 Android.mk 構(gòu)建文件的語法。 概覽 Android.mk 文件位于項目 jni/ 目錄的子目錄中,用于向構(gòu)建系統(tǒng)描述源文件和共享庫。它實際上是一個微小的 GNU makefile 片段,構(gòu)建系統(tǒng)會將其解析一次或多次。Android.mk 文件用于定義 Application.mk、構(gòu)建系統(tǒng)和環(huán)境變量

    2024年02月06日
    瀏覽(26)
  • android使用ndk開發(fā)

    ndk sdk要單獨下載和android sdk不同 https://developer.android.google.cn/ndk/downloads?hl=zh-cn 解壓后添加ndk路徑到path即可 gradle下載太慢使用國內(nèi)鏡像 distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-all.zip 執(zhí)行g(shù)radlew.bat gradlew //檢查環(huán)境,下載gradle依賴項 gradlew tasks //查看可執(zhí)行任務(wù) gr

    2024年01月17日
    瀏覽(26)
  • Android進階-NDK技術(shù)

    Android進階-NDK技術(shù)

    一.介紹 1.什么是ndk技術(shù)? 在學(xué)習(xí)ndk技術(shù)前,我們需要先了解一下JNI(Java Native Interface)技術(shù),JNI技術(shù)是一種實現(xiàn)Java代碼和C/C++代碼之間交互的技術(shù),它提供了一組編程接口,使得Java程序可以調(diào)用C/C++代碼并與其進行通信。通過JNI技術(shù),開發(fā)者可以將C/C++代碼嵌入Java項目中,并在

    2024年02月16日
    瀏覽(20)
  • Android NDK開發(fā)詳解之ndk-build 腳本

    Android NDK開發(fā)詳解之ndk-build 腳本

    ndk-build 腳本使用 NDK 的基于 Make 的構(gòu)建系統(tǒng)構(gòu)建項目。我們針對 ndk-build 使用的 Android.mk 和 Application.mk 配置提供了更具體的文檔。 內(nèi)部原理 運行 ndk-build 腳本相當(dāng)于運行以下命令: $GNUMAKE 指向 GNU Make 3.81 或更高版本, 則指向 NDK 安裝目錄。您可以根據(jù)這些信息從其他 Shell 腳

    2024年02月06日
    瀏覽(28)
  • Android集成OpenCV(NDK)

    Android集成OpenCV(NDK)

    1.下載OpenCv的動態(tài)庫(.so) OpenCv官網(wǎng),這邊下載的是4.6.0 2.解壓opencv-4.6.0-android-sdk.zip 復(fù)制目錄 opencv-4.6.0-android-sdkOpenCV-android-sdksdknativejni 的 include 文件夾,和 opencv-4.6.0-android-sdkOpenCV-android-sdksdknativelibsarmeabi-v7a 目錄對應(yīng)的cpu架構(gòu)類型.項目沒有對應(yīng)目錄,手動創(chuàng)建一下. 3.配置

    2024年02月06日
    瀏覽(22)
  • [Android] Android版本 和 SDK / NDK / Qt 版本對應(yīng)關(guān)系

    平臺版本? API級別(SDK版本) 版本代號 發(fā)布時間 Android 11 30 R 2020.9 Android 10.0 29? Q 2019.8 Android 9.0 28 Pie 2018.8 Android 8.1? 27? Oreo 2017.12 Android 8.0? 26?? ? Oreo 2017.8 Android 7.1.1? 25?? ? Nougat 2016.10 Android 7.0 24?? ? Nougat 2016.8 Android 6.0.1 23?? ? Marshmallow 2015.12 Android 6.0 23?? ? Marshma

    2024年01月17日
    瀏覽(40)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包