精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android Studio jni開發(fā)入門——看我就夠了!

移動開發(fā) Android
本文記錄一下Android Studio 進行jni開發(fā)的基礎(chǔ)配置以及入門教程,想當初使用eclipse配置ndk環(huán)境都難,現(xiàn)在基本都向AS轉(zhuǎn)型,特此給需要幫助的新手村的同學(xué)們少走彎路。

本文記錄一下Android Studio 進行jni開發(fā)的基礎(chǔ)配置以及入門教程,想當初使用eclipse配置ndk環(huán)境都難,現(xiàn)在基本都向AS轉(zhuǎn)型,特此給需要幫助的新手村的同學(xué)們少走彎路☺

一、環(huán)境配置

主要需要配置的就是NDK(Native Development Kit),現(xiàn)在Android studio很便利,可以一鍵下載: file → setting → 按截圖找到如下路徑 → 選擇NDK → 確定應(yīng)用下載  

 

安裝完成以后就可以開擼了

二、jni hello world!

1. 新建一個項目

新建一個app,測試jni開發(fā)   

 

2.設(shè)置支持jni

打開gradle.properties,添加:

  1. android.useDeprecatedNdk=true 

打開local.properties,添加:

  1. ndk.dir=NDK的路徑 

最后打開app內(nèi)build.gradle,在android/defaultConfig下面添加ndk配置

  1. apply plugin: 'com.android.application' 
  2.  
  3. android { 
  4.  
  5.     compileSdkVersion 25 
  6.  
  7.     buildToolsVersion "25.0.0" 
  8.  
  9.     defaultConfig { 
  10.  
  11.         applicationId "com.lilei.testjni" 
  12.  
  13.         minSdkVersion 15 
  14.  
  15.         targetSdkVersion 25 
  16.  
  17.         versionCode 1 
  18.  
  19.         versionName "1.0" 
  20.  
  21.         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
  22.  
  23.         ndk { 
  24.  
  25.             moduleName "JNISample" 
  26.  
  27.         } 
  28.  
  29.     } 
  30.  
  31.     buildTypes { 
  32.  
  33.         release { 
  34.  
  35.             minifyEnabled false 
  36.  
  37.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
  38.  
  39.         } 
  40.  
  41.     } 
  42.  
  43.  
  44. dependencies { 
  45.  
  46.     compile fileTree(dir: 'libs', include: ['*.jar']) 
  47.  
  48.     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
  49.  
  50.         exclude group'com.android.support', module: 'support-annotations' 
  51.  
  52.     }) 
  53.  
  54.     compile 'com.android.support:appcompat-v7:25.3.1' 
  55.  
  56.     compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' 
  57.  
  58.     testCompile 'junit:junit:4.12' 
  59.  

moduleName 表示編譯出的so文件的名字

3.新建java訪問c層的接口類

創(chuàng)建一個Jni的工具類,并定義接口函數(shù),函數(shù)關(guān)鍵字用native(static用不用均可)

  1. package com.lilei.testjni; 
  2.  
  3. /** 
  4.  
  5.  * Created by lilei on 2017/3/29. 
  6.  
  7.  */ 
  8.  
  9. public class JniUtils { 
  10.  
  11.     public static native String getJniString(); 
  12.  

getJniString()方法即要與C層的交互的函數(shù)

4.生成頭文件

"make-project"編譯完成

打開終端,運行

運行成功之后打開app/build/intermediates/classes/debug/ 即可找到編譯出的頭文件"com_lilei_testjni_JniUtils.h",不難發(fā)現(xiàn)頭文件名是有原報名+類名組成   

  

  1. cd app/build/intermediates/classes/debug/ 
  2.  
  3. javah com.lilei.testjni.JniUtils 

 5.創(chuàng)建jni開發(fā)的文件夾

點擊app文件夾,New → Folder → JNI Folder, 選擇在main文件夾下即可,生成成功后main目錄下會出現(xiàn)一個jni的文件夾

找到剛才生成到頭文件,復(fù)制到j(luò)ni文件夾下(記得關(guān)閉剛才使用的終端,否則無法復(fù)制)

頭文件有了,現(xiàn)在在jni目錄下創(chuàng)建一個C++文件用于開發(fā)使用,命名與頭文件相同

編寫C++文件中定義函數(shù)的代碼

  1. #include "com_lilei_testjni_JniUtils.h" 
  2.  
  3. JNIEXPORT jstring JNICALL Java_com_lilei_testjni_JniUtils_getJniString 
  4.  
  5.         (JNIEnv *env, jclass) { 
  6.  
  7.     // new 一個字符串,返回Hello World 
  8.  
  9.     return env -> NewStringUTF("Hello World"); 
  10.  

6.java層加載so

回到JniUtils,加上  

  

  1. static { 
  2.  
  3. System.loadLibrary("JNISample"); 
  4.  

 7.運行Run

調(diào)用jni的函數(shù)

  1. package com.lilei.testjni; 
  2.  
  3. import android.support.v7.app.AppCompatActivity; 
  4.  
  5. import android.os.Bundle; 
  6.  
  7. import android.util.Log; 
  8.  
  9. public class MainActivity extends AppCompatActivity { 
  10.  
  11.     @Override 
  12.  
  13.     protected void onCreate(Bundle savedInstanceState) { 
  14.  
  15.         super.onCreate(savedInstanceState); 
  16.  
  17.         setContentView(R.layout.activity_main); 
  18.  
  19.         Log.i("Jni", JniUtils.getJniString()); 
  20.  
  21.     } 
  22.  

至此就成功運行出jni的Hello World了  

 

三、生成so文件

前文介紹如何運行C++程序,但是實際開發(fā)中大多是封裝編譯出so文件后進行開發(fā),就類似java里面的jar包

1.配置NDK環(huán)境變量

找到Android Studio安裝的NDK包的文件目錄(E:AndroidStudioSDKSDKndk-bundle),添加到系統(tǒng)的環(huán)境變量中

2.新建mk文件

在jni目錄下新建Android.mk

  1. LOCAL_PATH := $(call my-dir) 
  2.  
  3. include $(CLEAR_VARS) 
  4.  
  5. LOCAL_MODULE := JNISample 
  6.  
  7. LOCAL_SRC_FILES := com_lilei_testjni_JniUtils.cpp 
  8.  
  9. include $(BUILD_SHARED_LIBRARY) 

在jni目錄下新建Application.mk文件

  1. APP_STL := gnustl_static 
  2.  
  3. APP_CPPFLAGS := -frtti -fexceptions -std=c++0x 
  4.  
  5. APP_ABI := armeabi-v7a 
  6.  
  7. APP_PLATFORM := android-18 

3.編譯生成so

打開終端cd到j(luò)ni目錄下

調(diào)用ndk-build開始編譯so

  1. ndk-build 

運行無誤的話會如圖所示 

 

 

運行成功之后即會看到main文件夾下多了libs和obj的文件夾,里面就是生成的各種CPU的so文件

libs和obj里面都有so文件,兩者的區(qū)別google給出的解釋是: As part of the build process, the files in the libs folder have been stripped of symbols and debugging information. So you'll want to keep two copies of each of your .so files: One from the libs folder to install on the Android device, and one from the obj folder to install for GDB to get symbols from. 也就是說,libs目錄下生成的庫是剝離了符號表與調(diào)試信息的,而obj下的庫是帶有調(diào)試信息的。

至此jni的開發(fā)入門已完成

責(zé)任編輯:龐桂玉 來源: Android技術(shù)之家
相關(guān)推薦

2015-07-29 09:22:25

IOS多線程

2025-02-14 08:53:24

2021-09-30 07:59:06

zookeeper一致性算法CAP

2023-11-16 08:15:33

MySQL索引類型

2023-09-11 08:13:03

分布式跟蹤工具

2015-11-02 09:49:04

Android屏幕適配官方指導(dǎo)

2021-05-14 23:31:50

大數(shù)據(jù)計算機開發(fā)

2021-01-15 12:56:36

人工智能人工智能應(yīng)用

2020-12-09 08:01:38

Mybatis關(guān)系型數(shù)據(jù)庫

2016-03-25 10:08:31

httpios開發(fā)

2020-10-18 07:32:06

SD-WAN網(wǎng)絡(luò)傳統(tǒng)廣域網(wǎng)

2019-11-07 09:20:42

Node.js項目服務(wù)器

2024-08-02 11:51:03

2017-03-07 15:35:26

Android適配 界面

2017-03-10 21:04:04

Android適配

2018-01-17 09:32:45

人工智能卷積神經(jīng)網(wǎng)絡(luò)CNN

2018-11-14 11:57:28

2021-11-24 22:42:15

WorkManagerAPI

2023-10-30 07:12:04

2019-08-16 09:41:56

UDP協(xié)議TCP
點贊
收藏

51CTO技術(shù)棧公眾號

国产麻豆精品视频| 婷婷精品进入| 一本大道久久a久久精二百| 欧美三级电影在线播放| 国产又黄又粗又猛又爽| 亚洲高清网站| 国产亚洲欧美日韩美女| 伊人五月天婷婷| 筱崎爱全乳无删减在线观看 | 欧美性猛交xxxx乱大交3| 亚洲国产午夜伦理片大全在线观看网站 | 老牛国产精品一区的观看方式| 自拍偷拍亚洲精品| 国产a级黄色片| 日韩欧美激情| 欧美日韩一区二区免费在线观看| 中文字幕精品一区日韩| 午夜在线视频观看| 国产一区激情在线| 国产精品video| 久久精品美女视频| 99精品电影| 亚洲视频在线播放| 麻豆精品国产传媒av| 日韩精品一页| 欧洲一区二区三区在线| 欧美成人三级在线视频| 国产视频在线播放| 中文字幕av不卡| 久久综合久久久| 国 产 黄 色 大 片| 精品一区二区三区免费观看| 国产精品aaaa| av网站中文字幕| 国内久久视频| 欧美精品免费在线| 国产精品视频一区二区在线观看| 精品国产91乱码一区二区三区四区| 精品国产乱码久久久久久闺蜜| 三级一区二区三区| 国产精品99| 在线看国产一区二区| 黄色免费观看视频网站| 白白色在线观看| 亚洲综合成人在线| 草草草视频在线观看| 激情影院在线观看| ●精品国产综合乱码久久久久| 少妇免费毛片久久久久久久久| 三级视频在线| 久久久久久免费网| 欧美一区二区福利| 国产在线视频网址| 国产日韩精品一区二区浪潮av | 无码精品视频一区二区三区| 国产99久久久国产精品潘金| caoporn国产精品免费公开| 国产ts变态重口人妖hd| 国产精品综合一区二区| 亚洲一区二区在线| www.色播.com| 成人不卡免费av| 精品久久中出| 欧美亚洲日本| 中文字幕不卡在线播放| 91手机视频在线| 永久免费网站在线| 亚洲一区二区综合| 自拍日韩亚洲一区在线| 欧美大胆性生话| 欧美影院一区二区| 亚洲精品乱码久久久久久动漫| 欧美区一区二区| 欧美精品一区二区三区蜜桃| 超碰男人的天堂| 九九亚洲精品| 日韩在线播放av| 妺妺窝人体色www聚色窝仙踪 | 香蕉视频黄色片| 久久久久久久久99精品| 亚洲精品9999| 成人性生交大片免费看在线播放| 欧美日韩人人澡狠狠躁视频| 成人在线激情网| 国产一区二区三区国产精品| 亚洲大胆人体视频| 日本人亚洲人jjzzjjz| 久久精品一区二区不卡| 久久免费视频在线观看| 自拍偷拍18p| 国产在线精品国自产拍免费| 精品高清视频| 日本中文字幕电影在线免费观看| 亚洲国产日韩a在线播放性色| 日韩久久一级片| 伊人亚洲精品| 精品视频久久久| 成人在线观看免费完整| 香蕉久久久久久久av网站| 成人激情春色网| 五月婷婷在线播放| 综合网在线视频| 777久久久精品一区二区三区| 国产精品久久久久久av公交车| 亚洲精品国产精品乱码不99按摩| 99自拍视频在线| 午夜在线精品偷拍| 99高清视频有精品视频| yiren22亚洲综合伊人22| 亚洲午夜精品网| 国内国产精品天干天干| 亚洲香蕉视频| 久久久噜噜噜久久中文字免| 国产一区二区三区三州| 久久久国产精品麻豆| 97超碰国产精品| 91麻豆精品国产综合久久久| 一区二区三区视频免费在线观看| 国产精品久久久免费视频| 国产自产高清不卡| 亚洲高清视频一区二区| 亚洲最大成人| 亚洲国产精品99| 久草免费新视频| 国产一区二区三区四区五区美女| 神马影院午夜我不卡影院| 福利在线免费视频| 日韩美女视频在线| 卡通动漫亚洲综合| 另类小说欧美激情| 神马影院午夜我不卡影院| 在线女人免费视频| 亚洲国产毛片完整版| 免费网站看av| 国产成人综合在线观看| 一级黄色片播放| 国产精品日本一区二区不卡视频 | 丝袜美腿小色网| 麻豆精品视频在线| 色播亚洲婷婷| 91另类视频| 国产亚洲精品久久久久久牛牛 | 欧美日本在线观看| 手机看片国产日韩| 麻豆精品在线观看| 亚洲一区二区三区加勒比| 巨胸喷奶水www久久久免费动漫| 亚洲人成网站色ww在线| 91视频在线视频| 久久久99免费| 亚洲36d大奶网| 999精品色在线播放| 国产自产女人91一区在线观看| 伊人免费在线| 91精品欧美综合在线观看最新| 熟女少妇a性色生活片毛片| 久久99国产精品免费| 国产手机视频在线观看| 日本在线成人| 国语自产精品视频在线看一大j8| 天天操天天操天天干| 欧美日韩亚洲成人| 久久久久久九九九九九| 日韩电影在线一区二区三区| 正在播放91九色| 午夜久久av| 欧美在线激情视频| 国产小视频免费在线观看| 欧美日韩在线亚洲一区蜜芽| 99久久99久久精品国产| 成人av网站免费观看| 欧美性猛交xxxx偷拍洗澡| 成人性做爰aaa片免费看不忠| 国产一区二区三区网| 国产精品美女在线| a级影片在线观看| 亚洲第一av网站| 中文字幕一区二区三区四区欧美| 中文字幕在线不卡视频| 中文字幕一区二区三区人妻在线视频 | 亚洲最新免费视频| 高潮久久久久久久久久久久久久| 日韩免费观看在线观看| 超碰在线网址| 日韩精品极品在线观看| 老熟妇一区二区三区啪啪| 亚洲六月丁香色婷婷综合久久| 中文字幕第3页| 老司机午夜精品99久久| 免费观看国产精品视频| 欧美精品色图| 国产精品夜夜夜一区二区三区尤| 三上悠亚激情av一区二区三区| 日韩在线观看免费高清| 熟妇人妻系列aⅴ无码专区友真希| 91国偷自产一区二区三区观看| 顶臀精品视频www| 久久综合久久鬼色| 三年中文在线观看免费大全中国| 99在线精品视频在线观看| 一区二区三区四区国产| 日韩精品导航| 亚洲已满18点击进入在线看片| 久久精品女人天堂av免费观看| 精品中文字幕视频| porn视频在线观看| 亚洲精品美女久久| 国产99久一区二区三区a片| 色综合夜色一区| 国产一级一片免费播放放a| 国产精品五月天| 久久久久久久久免费看无码| 国产电影精品久久禁18| 亚洲免费av一区| 三级欧美在线一区| 少妇av一区二区三区无码| 亚洲精品国产首次亮相| 神马影院一区二区三区| 亚洲欧美成人vr| 国产日本一区二区三区| 日韩高清二区| 91精品视频一区| 国产精品99| 国产精品美女www| 2022成人影院| 68精品久久久久久欧美| 欧美午夜大胆人体| 不卡中文字幕av| 国产欧美久久久久久久久| 中文字幕亚洲第一| 丁香婷婷在线| 亚洲人成亚洲人成在线观看| 手机亚洲第一页| 精品在线欧美视频| 日本一区视频| 亚洲美女免费精品视频在线观看| 免费观看成年人视频| 日韩欧美国产综合| av无码精品一区二区三区宅噜噜| 欧美日韩精品欧美日韩精品一| 国产精品免费无遮挡无码永久视频| 疯狂欧美牲乱大交777| 日韩乱码一区二区| 欧美色播在线播放| 亚洲第一在线播放| 色综合久久久久综合| 中文字幕手机在线视频| 在线观看亚洲a| 中文天堂在线视频| 欧美日韩成人一区二区| 国产精品羞羞答答在线| 欧美一级午夜免费电影| 精品人妻久久久久一区二区三区| 日韩视频免费观看高清在线视频| 性欧美18一19性猛交| 精品国产91九色蝌蚪| 完全免费av在线播放| 久久久久久久网站| 天堂av在线| 国产精品久久久久久久久免费 | 日韩欧美亚洲区| 国产精品美女久久久久久不卡| 欧美一区二区三区电影在线观看| 欧美男同视频网| 亚洲午夜精品久久| 欧美精品黄色| 成人免费观看视频在线观看| 天堂成人国产精品一区| 天天干天天草天天| 国产精品18久久久久久久久| 白嫩情侣偷拍呻吟刺激| 久久久综合网站| 午夜国产小视频| 午夜久久久影院| 波多野结衣网站| 91精品在线麻豆| 少妇喷水在线观看| 亚洲一级黄色av| 国产成人无吗| 69影院欧美专区视频| 高清亚洲高清| 国产精品二区三区| 国产一区二区欧美| 台湾无码一区二区| 视频一区欧美日韩| 久久黄色一级视频| 久久久久国产精品人| 久久久久久久久毛片| 色综合一区二区三区| 精品国产亚洲AV| 亚洲午夜激情免费视频 | 欧洲成人免费视频| 日韩av黄色| 欧美精品v日韩精品v国产精品| 999国产精品| 成年人免费在线播放| 国产精品一区一区三区| 国产亚洲精品熟女国产成人| 亚洲一区二区精品视频| 18国产免费视频| 亚洲高清色综合| 国产黄a三级三级三级av在线看| 欧美性视频精品| 日本亚州欧洲精品不卡| 亚洲电影网站| 免费看的黄色欧美网站 | 国产亚洲欧美日韩日本| 国产主播在线播放| 欧美精选午夜久久久乱码6080| 免费资源在线观看| 久久久欧美一区二区| 中文字幕成人| 亚洲国产日韩欧美| 久久精品主播| 少妇饥渴放荡91麻豆| 一区二区三区91| av在线免费在线观看| 中文字幕亚洲综合久久筱田步美 | 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 亚洲天堂免费av| 亚洲深夜福利网站| 欧美aa在线| 国产日韩亚洲精品| 欧美精品国产| 真实乱偷全部视频| 亚洲天堂av一区| 国产又黄又爽视频| 中文字幕不卡在线视频极品| 97久久香蕉国产线看观看| 蜜桃av久久久亚洲精品| 中文国产一区| 偷偷色噜狠狠狠狠的777米奇| 一区二区三区中文字幕电影| 国产老女人乱淫免费| 自拍偷拍亚洲在线| 欧美极品在线| 亚洲一区高清| 老司机一区二区| 成年人二级毛片| 欧美一区二区三区四区五区| 国产不卡在线| av资源一区二区| 亚洲激精日韩激精欧美精品| 日本不卡视频一区| 亚洲成人在线免费| 亚欧在线观看视频| 欧美中在线观看| 国产传媒欧美日韩成人精品大片| 日韩精品一区中文字幕| 国产日产亚洲精品系列| 中文字幕乱码一区二区| 日韩在线视频二区| 国产精品视频一区二区三区综合 | 欧美亚洲在线| 怡红院一区二区三区| 91福利视频网站| 日本三级在线播放完整版| 成人美女免费网站视频| 欧美在线三区| 久久久高清视频| 日韩欧美国产中文字幕| 岛国最新视频免费在线观看| 国产精品色婷婷视频| 亚洲情侣在线| 艳妇乳肉豪妇荡乳xxx| 欧美午夜性色大片在线观看| 国产理论电影在线观看| 91精品视频一区| 国产一区二区三区自拍| 97人妻天天摸天天爽天天| 在线观看免费成人| 好吊日视频在线观看| 国产精品一区二区三区精品| 日韩影院免费视频| 国产一区二区播放| 日韩av有码在线| 久久久久久久性潮| 成人网站免费观看入口| 久久精品网站免费观看| 国产精品特级毛片一区二区三区| 久久久久久久999精品视频| 国产最新精品| 日本在线视频播放| 色婷婷综合久久久| 亚洲婷婷噜噜| 欧美一区二区在线| 国产精品一二二区| 亚洲免费在线视频观看| 久久久国产精品亚洲一区| 久久动漫网址| 日本不卡一区二区在线观看| 亚洲成av人综合在线观看| av在线第一页| 韩国一区二区三区美女美女秀| 美国十次了思思久久精品导航| 日本少妇bbwbbw精品| 爽爽爽爽爽爽爽成人免费观看| 精品嫩草影院| 亚洲网中文字幕| 欧美少妇一区二区|