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

全部開發(fā)者教程

Android Studio 編輯器教程

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

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

1. 創(chuàng)建項目

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

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

  2. 點擊 Next。

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

  4. 點擊 Next。

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

  6. 點擊 Finish

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

2. 分析代碼

2.1 Cpp 代碼

項目中包含一個 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());
}

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

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

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

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

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

2.2 Java 代碼

項目中包含的 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:加載我們自己的原生庫 native-lib

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

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

3. 運行效果

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

4. 小結(jié)

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

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