日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Studio 之 NDK篇

發布時間:2023/12/10 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Studio 之 NDK篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于工作內容的關系,對于NDK的工作涉及比較廣(保密性,安全性),所以本章內容講述一下NDK的基本使用過程。

  網上也有很多這樣的教程或者描述,但描述的并不完全

  開發工具:Android Studio 2.1.2?

  NDK版本:android-ndk-r10e,支持64位so庫的編譯

  JDK版本:1.8 64位

  使用步驟如下:

  第一步:NDK環境的搭建

  ①jdk,Android SDK這些準備充分(只要能正常使用Android Studio的,這一條基本不用考慮)

  ②下載NDK,可以通過Android Studio的SDK Manager下載,也可以通過這個鏈接下載:下載地址,至于版本的話,根據自己電腦系統自行選擇最新版本,

   如果訪問不了,需要使用FQ的話,可以下載天行VPN(有試用版,一天一個小時,關鍵是不要錢還能FQ),FQ工具下載鏈接:VPN工具下載

  第二步:新建一個Project,完成NDK的配置

  ①在工程的local.properties里面添加NDK的路徑代碼:

ndk.dir=C\:\\android-ndk-r10e

  

  ②在gradle.properties里面聲明使用NDK的代碼

android.useDeprecatedNdk=true

  

  ③在app的build.gradle里面,添加NDK的編譯信息(包括生成的so庫名字,以及編譯出來的各種平臺版本)

apply plugin: 'com.android.application'android {compileSdkVersion 23buildToolsVersion "24.0.0"defaultConfig {applicationId "edan.com.as_ndk_demo"minSdkVersion 11targetSdkVersion 23versionCode 1versionName "1.0"ndk{moduleName "MyTestJniLib" //生成的.so的名字abiFilters "armeabi","armeabi-v7a","x86"}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}sourceSets {main {jniLibs.srcDirs = ['libs']}}}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.4.0' }

  第三步:編輯native方法,生成.h頭文件

  ①編輯native方法

?View Code

  ②點擊Build-->Make Project,生成class文件

  ③找到class文件,在app->build->intermediates->classes->debug目錄下:

  ④通過javah命令生成.h頭文件,點擊Android Studio底下菜單中的Terminal

  依次敲入:

cd app\build\intermediates\classes\debug javah -jni edan.com.as_ndk_demo.ndktest.NdkJniUtils

使用javah的時候,具體的包名按照實際情況來書寫

  沒有什么錯誤的話,可以在debug目錄下看到.h的頭文件

  

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class edan_com_as_ndk_demo_ndktest_NdkJniUtils */#ifndef _Included_edan_com_as_ndk_demo_ndktest_NdkJniUtils #define _Included_edan_com_as_ndk_demo_ndktest_NdkJniUtils #ifdef __cplusplus extern "C" { #endif /** Class: edan_com_as_ndk_demo_ndktest_NdkJniUtils* Method: getCLanguageString* Signature: ()Ljava/lang/String;*/ JNIEXPORT jstring JNICALL Java_edan_com_as_1ndk_1demo_ndktest_NdkJniUtils_getCLanguageString(JNIEnv *, jobject);#ifdef __cplusplus } #endif #endif

  第四步:根據生成.h頭文件,以及新建的.c或者.cpp文件,生成.so庫文件

  ①在app->src->main目錄下新建一個jni文件夾,用來存c/c++的頭文件以及源文件,將剛剛生成.h頭文件剪切到這里來,然后新建一個.c或者.cpp文件

  

#include "edan_com_as_ndk_demo_ndktest_NdkJniUtils.h" /** Class: com_example_edu_ndktest_NdkJniUtils* Method: getCLanguageString* Signature: ()Ljava/lang/String;*/ JNIEXPORT jstring JNICALL Java_edan_com_as_1ndk_1demo_ndktest_NdkJniUtils_getCLanguageString(JNIEnv *env, jobject obj){return (*env)->NewStringUTF(env,"My name is Ouyangshengduo,Hi!");}

  ②點擊Build->Make Project進行編譯,生成.so庫文件,路徑:app->build->intermediates->ndk->debug->lib下:

  

  ③拷貝lib下的這些文件夾,到app->libs下:

  第五步:通過MainActivity的TextView顯示C里面的內容:

  

package edan.com.as_ndk_demo;import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView;import edan.com.as_ndk_demo.ndktest.NdkJniUtils;public class MainActivity extends AppCompatActivity {private TextView mTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView = (TextView) findViewById(R.id.text);NdkJniUtils ndk_util = new NdkJniUtils();mTextView.setText(ndk_util.getCLanguageString());} }

?

  至此,Android Studio 的NDK的基礎篇講述完了,期間遇到任何問題或者錯誤,將錯誤信息copy去google,基本都能解決,當然,也可以留言,知道的必將言無不盡。

  項目源碼下載地址:源碼下載

轉載于:https://www.cnblogs.com/fnlingnzb-learner/p/7207468.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Android Studio 之 NDK篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。