Android Studio下Jni開發(fā)簡單demo

開發(fā)環(huán)境:

Android studio2.0
ndk r10 64位

準(zhǔn)備工作:

NDK下載地址:http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html
Android Studio下載地址:http://www.android-studio.org/
新建Android工程逊彭;
配置ndk路徑尸饺,F(xiàn)ile>Project Structure
工程目錄:
QQ截圖20160816114035.jpg

步驟一:

打開File>Settings>Tools>External Tools
點(diǎn)擊“加號”添加javah命令行,如圖:


步驟二:

創(chuàng)建JniTest.class骡和,代碼如下

/**
* Created by h0nes1pr09rammer on 2016/8/16.
*/
public classJniTest {
static{
System.loadLibrary("jni-test");
}
public static nativeStringgetStrFromJni();
}

步驟三:

在main目錄下新建jni目錄眉反,右鍵JniTest.class,選中NDK>javah,jni中生成“包名_JniTest.h”

步驟四:

編寫jni-test.c搭伤,代碼如下:

#include"com_ctwl_lzq_hellojnidemo_JniTest.h"
JNIEXPORT jstring JNICALL Java_com_ctwl_lzq_hellojnidemo_JniTest_getStrFromJni(JNIEnv * env,jobject obj){
char* cstr ="jni test";
return(*env)->NewStringUTF(env,cstr);
}

步驟五:

配置app下build.gradle,添加如下配置

buildTypes {
release {
...
ndk{
moduleName"jni-test"http://生成的so名字
abiFilters"armeabi","armeabi-v7a","x86"http://輸出指定三種abi體系結(jié)構(gòu)下的so庫袜瞬。
}
}
debug{
ndk{
moduleName"jni-test"http://生成的so名字
abiFilters"armeabi","armeabi-v7a","x86"http://輸出指定三種abi體系結(jié)構(gòu)下的so庫怜俐。
}
}
}

makeproject,在app>build>intermediates>ndk下生成對應(yīng)的.so文件邓尤。

步驟六:

修改MainActivity.class代碼拍鲤,如下:

public classMainActivityextendsAppCompatActivity {
@Override
protected voidonCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  TextView textView = (TextView) findViewById(R.id.tv);
  JniTest jniTest =newJniTest();
  textView.setText(jniTest.getStrFromJni());
  }
}

運(yùn)行。

報錯:

Error:Execution failed for task ':app:compileDebugNdk'.

Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental.
Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.

解決辦法:

在gradle.properties中添加

android.useDeprecatedNdk=true

報錯:

Error:Execution failed for task ':app:compileDebugNdk'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: ... finished with non-zero exit value 2

解決辦法:

在jni目錄下新建空的.c文件汞扎,比如"empty.c"(具體原因自行g(shù)oogle)季稳。

報錯:

java.lang.UnsatisfiedLinkError

解決辦法:

在gradle中指定jniLibs路徑,示例如下(根據(jù)自己的實際路徑配置):

sourceSets {    
main {        
manifest.srcFile 'AndroidManifest.xml'        
java.srcDirs = ['src']        
resources.srcDirs = ['src']        
aidl.srcDirs = ['src']        
renderscript.srcDirs = ['src']        
res.srcDirs = ['res']        
assets.srcDirs = ['assets']        
jniLibs.srcDirs = ['libs']    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澈魄,一起剝皮案震驚了整個濱河市景鼠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痹扇,老刑警劉巖铛漓,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鲫构,居然都是意外死亡浓恶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門结笨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來包晰,“玉大人昂秃,你說我怎么就攤上這事《耪” “怎么了肠骆?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長塞耕。 經(jīng)常有香客問我蚀腿,道長,這世上最難降的妖魔是什么扫外? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任莉钙,我火速辦了婚禮,結(jié)果婚禮上筛谚,老公的妹妹穿的比我還像新娘磁玉。我一直安慰自己,他們只是感情好驾讲,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布蚊伞。 她就那樣靜靜地躺著,像睡著了一般吮铭。 火紅的嫁衣襯著肌膚如雪时迫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天谓晌,我揣著相機(jī)與錄音掠拳,去河邊找鬼。 笑死纸肉,一個胖子當(dāng)著我的面吹牛溺欧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柏肪,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼姐刁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了预吆?” 一聲冷哼從身側(cè)響起龙填,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤胳泉,失蹤者是張志新(化名)和其女友劉穎拐叉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扇商,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凤瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了案铺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔬芥。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笔诵,到底是詐尸還是另有隱情返吻,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布乎婿,位于F島的核電站测僵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谢翎。R本人自食惡果不足惜捍靠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望森逮。 院中可真熱鬧榨婆,春花似錦、人聲如沸褒侧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷供。三九已至拖吼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間这吻,已是汗流浹背吊档。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唾糯,地道東北人怠硼。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像移怯,于是被迫代替她去往敵國和親香璃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容