第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Android Studio 編輯器教程

Android Studio 開(kāi)發(fā) C/C++ 例子

前面的小節(jié)我們學(xué)習(xí)了 C/C++ 支持環(huán)境的安裝和配置。本小節(jié)我們創(chuàng)建一個(gè)最簡(jiǎn)單的支持 C/C++ 的項(xiàng)目實(shí)例。

1. 創(chuàng)建項(xiàng)目

創(chuàng)建支持原生代碼的新項(xiàng)目的步驟與創(chuàng)建任何其他 Android Studio 項(xiàng)目的步驟相似,但還需要執(zhí)行一個(gè)額外的步驟:

  1. 在向?qū)У?Choose your project 部分中,選擇 Native C++ 項(xiàng)目類型。

  2. 點(diǎn)擊 Next。

  3. 填寫(xiě)向?qū)乱徊糠种械乃衅渌侄巍?br>

  4. 點(diǎn)擊 Next。

  5. 在向?qū)У?Customize C++ Support 部分中,您可以使用 C++ Standard 字段來(lái)自定義項(xiàng)目。使用下拉列表選擇您想要使用哪種 C++ 標(biāo)準(zhǔn)化。選擇 Toolchain Default 可使用默認(rèn)的 CMake 設(shè)置。

  6. 點(diǎn)擊 Finish

至此,項(xiàng)目創(chuàng)建完成,我們可以看到項(xiàng)目中同時(shí)包含了 Java 代碼和 Cpp 代碼。

2. 分析代碼

2.1 Cpp 代碼

項(xiàng)目中包含一個(gè) cpp 源碼文件:native-lib.cpp

extern "C" JNIEXPORT jstring JNICALL
Java_com_imooc_hellojni_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "This string from C++";
    return env->NewStringUTF(hello.c_str());
}

這個(gè)函數(shù)的功能很簡(jiǎn)單,返回一個(gè)字串 “This string from C++”。

我們看到這個(gè)函數(shù)的函數(shù)名很長(zhǎng):Java_com_imooc_hellojni_MainActivity_stringFromJNI,這是按特定的規(guī)范組織的,分解之后各部分的含義如下:

  • Java:表示是給 Java 源碼中調(diào)用的。

  • com_imooc_hellojni_MainActivity:表示由哪個(gè) Java 類(包名類名)來(lái)調(diào)用。

  • stringFromJNI:表示本地方法名稱,會(huì)在 Java 源碼中聲明。

2.2 Java 代碼

項(xiàng)目中包含的 java 源文件:MainActivity.java:

// Used to load the 'native-lib' library on application startup.
static {
    System.loadLibrary("native-lib");
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Example of a call to a native method
    TextView tv = findViewById(R.id.sample_text);
    tv.setText(stringFromJNI());
}

/**
 * A native method that is implemented by the 'native-lib' native library,
 * which is packaged with this application.
 */
public native String stringFromJNI();
  • System.loadLibrary:加載我們自己的原生庫(kù) native-lib;

  • setText(stringFromJNI()):把 stringFromJNI 函數(shù)返回的字串賦給 TextView 顯示出來(lái);

  • public native String stringFromJNI():聲明本地方法 stringFromJNI。

3. 運(yùn)行效果

雖然運(yùn)行效果比較簡(jiǎn)單,但是通過(guò)前面的代碼分析,我們可以知道,“This string from C++” 這個(gè)字串是在 Java 源碼中調(diào)用 Cpp 源碼中的函數(shù)來(lái)獲取的。這是一個(gè)最簡(jiǎn)單的項(xiàng)目支持 C/C++ 的例子。

4. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了如何創(chuàng)建一個(gè)支持 C/C++ 的項(xiàng)目。本節(jié)課程的重點(diǎn)如下:

  • 掌握如何創(chuàng)建支持 C/C++ 的項(xiàng)目;
  • 掌握如何從 Java 中調(diào)用 C/C++ 函數(shù)。