日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > Android NDK:②第一個NDK程序(創(chuàng)建步驟&一些問題)

Android NDK:②第一個NDK程序(創(chuàng)建步驟&一些問題)

來源:程序員人生   發(fā)布時間:2015-05-21 08:12:44 閱讀次數(shù):2817次

Android NDK:②第1個NDK程序(創(chuàng)建步驟&1些問題)

本節(jié)內(nèi)容是:演示搭建第1個NDK程序

  • Android NDK第1個NDK程序創(chuàng)建步驟1些問題
    • 創(chuàng)建1個Android Project
    • Java代碼中聲明native方法
    • 創(chuàng)建Jni文件夾編寫ccpp代碼
    • 為項目添加NDK支持
    • 新建配置1個Builder
    • 調(diào)用了native方法的地方加載庫
    • 好了把程序跑起來
    • 總結(jié)
    • 遇到的問題

1.創(chuàng)建1個Android Project

直接創(chuàng)建1個新的Android Application Project便可~

這里寫圖片描述

2.Java代碼中聲明native方法:

package com.jay.example.firstndk; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button btnShow; // 聲明native方法 public native String javaFromJNI(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnShow = (Button) findViewById(R.id.btnShow); btnShow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, javaFromJNI(), Toast.LENGTH_SHORT).show(); } }); } }

3.創(chuàng)建Jni文件夾,編寫c/cpp代碼

這里要注意的地方有兩個:

①返回值類型

jni.h文件中中事前定義的數(shù)據(jù)類型,我們可以在ndk/platforms/android-xx/arch-arm/user/include目錄下找到,~xx代表版本號
打開jni.h我們會看到很多數(shù)據(jù)類型,我們這里的是string:

這里寫圖片描述

②方法名:依照下述規(guī)則:

返回值類型 Java_包名_類名_native方法名(JNIEnv* env, jobject obj)

而里頭的參數(shù)是固定的,在jni.h文件我們也能夠查到,他是1個叫做JNINativeInterface的結(jié)構(gòu)體,結(jié)構(gòu)體中定義了很多數(shù)據(jù)類型,我們找到那個返回字符串的:

這里寫圖片描述

好的,那末接下來我們把我們的c代碼寫完,我們在jni目錄下創(chuàng)建1個叫first.c的文件:

#include<stdio.h> #include<jni.h> jstring Java_com_jay_example_firstndk_MainActivity_javaFromJNI(JNIEnv* env, jobject obj) { return (*env)->NewStringUTF(env, "First Blood~"); }

4.為項目添加NDK支持

工程右鍵->Android Tools ->Add Native Support輸入so庫名稱:

這里寫圖片描述

自己給so庫命名:

這里寫圖片描述

這個時候會看到,jni目錄下除我們自己編寫的c文件外,還多了兩個東東,xx.cpp和Android.mk文件,那個cpp可以直接刪掉,接著打開Android.mk件,修改下東西:

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := FirstNDK LOCAL_SRC_FILES := first.c include $(BUILD_SHARED_LIBRARY)

ps:其實這步可以直接在3就進行,會直接生成1個.cpp與Android.mk的文件的~

5.新建&配置1個Builder

右鍵Project->Properties->Builders->New,新建1個Builder,在彈出的對話框上面點擊Program,OK!如圖所示

這里寫圖片描述

雙擊打開,進行配置:

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

點擊肯定,OK,好了,接下來就能夠自定編譯代碼了~比如我們修改代碼后保存,他都會重新編譯下.so

這里寫圖片描述

6.調(diào)用了native方法的地方加載庫:

這里寫圖片描述

7.好了,把程序跑起來~

這里寫圖片描述

8.總結(jié):

好了,第1個NDK程序就這樣完成了,中途磕磕碰碰遇到很多問題,總算是順利地跑起來了,下面歸納下大概步驟:

  • 創(chuàng)建1個普通NDK工程
  • 聲明native方法
  • 創(chuàng)建Jni文件夾,可以自己寫個.c或.cpp文件,或直接第4步直接生成1個.cpp與Android.mk文件
  • 為項目添加NDK支持
  • 新建&配置1個Builder
  • 調(diào)用了native方法的地方加載庫(System.loadLibrary(xxx))
  • 運行程序~~

好了,大概進程就如上面所述~可能還有其他快捷的創(chuàng)建方法吧,后續(xù)遇到的話在給大家介紹哈~最后附上弄這個程序時遇到的1些問題和解決方法!

9.遇到的問題

1.運行后程序直接死掉- -,后來查log發(fā)現(xiàn)是c那里方法名寫錯了,直接報方法找不到!
解決方法:嚴格依照下述規(guī)定寫
返回值類型 Java_包名_類名_native方法名(JNIEnv* env, jobject obj)

2.出現(xiàn)這樣的提示:
Android NDK: WARNING: APP_PLATFORM android⑴7 is larger than android:minSdkVersion 14 in ./AndroidManifest.xml
解決方法:
android-ndk-r8e/build/core/add-application.mk第128行把__ndk_warning改成__ndk_info;然后重新build1次項目便可消除毛病。
或,直接寫成這樣…我們公司是這樣做的…感覺這樣雖然不報錯,但是不好…

這里寫圖片描述

3.用c來寫的出現(xiàn):Method ‘NewStringUTF’ could not be resolved
就是找不到方法,真奇葩…
解決方法:

這里寫圖片描述

比如我的路徑是:
E:NDKandroid-ndk-r10dplatformsandroid⑴7arch-armusrinclude

4.如果你用的是.cpp的話,出現(xiàn)3的問題
解決方法:為供Java調(diào)用的c++函數(shù)前加入extern “C” 修飾
另外輸出字符串的語句也是不1樣的:
(*env)->Method(env, XXX)改成env->Method(XXX)便可.

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品久久久久久久久免费 | 一级欧美 | 欧美精品成人 | 日韩欧美国产高清 | 精品久久99 | 国产精品久久99 | 久久久久玖玖 | 成人毛片网站 | 国产精品美女 | 日韩2区 | 亚洲国产精品一区二区三区 | 欧美日日 | 黄色高清视频 | 精品九九久久 | 欧美少妇一区二区 | 久久成 | 贼王1995| 国产伦精品一区二区三区在线 | 91成人综合 | 麻豆久久精品 | 国产福利网站 | 亚偷熟乱区自拍 | 欧美福利在线 | 欧美视频一区二区 | 亚洲精品一区在线 | 久久久久免费看 | 九色精品| 国产精品自拍一区 | 正在播放日韩 | 午夜精彩视频 | 久久久久美女 | 国产一区二区在线观看视频 | 91九色论坛 | 国产综合一区二区 | www.91av.con| 国产精品成人一区二区 | 爱你啪| 99福利在线| 久久成人综合网 | 久久久久无码国产精品一区 | 国产一区二区三区在线免费观看 |