欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android NDK開發(fā)簡單程序分享(Hello Word!)

 更新時(shí)間:2016年12月20日 16:24:58   作者:小破孩123  
本文主要對Android NDK開發(fā)簡單程序(Hello Word!)的實(shí)現(xiàn)步驟及方法進(jìn)行詳細(xì)介紹。具有很好的參考價(jià)值,需要的朋友一起來看下吧

在之前的博客中已經(jīng)為大家介紹了,如何在win環(huán)境下配置DNK程序,本篇我將帶大家實(shí)現(xiàn)一個(gè)簡單的Hello jni程序,讓大家真正感受一下NDK開發(fā)的魅力。這里我們選擇使用C+JAVA開發(fā)Android程序,首先你必須了解C語言、JAVA語言以及Linux操作系統(tǒng),這樣可以幫助你開始上手,當(dāng)然不是說你必須是大牛才能進(jìn)行NDK開發(fā),下面我們來一起實(shí)現(xiàn)一個(gè)簡單的NDK程序。

第一步,創(chuàng)建Android工程

打開開發(fā)環(huán)境eclipse,在左側(cè)空白區(qū)域,右鍵單擊創(chuàng)建Android工程(非常簡單,不再贅述)。

第二步,編譯頭文件

打開我們的主Activity,在里面定義一個(gè)native類型的方法:

public class MainActivity extends Activity {
 public static native String getStringFromC();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 }
}

創(chuàng)建好我們的Android工程后,并定義好方法之后,然后在目錄下新建一個(gè)jni目錄,之后點(diǎn)擊運(yùn)行輸入cmd回車-->通過cd命令進(jìn)入當(dāng)前的工程目錄

然后通過javah命令生成我們的頭文件,下面先看一下javah命令吧:

這里我們主要使用到-d、-jni、 -classpath,下面我們來生成我們的頭文件,在命令行輸入:

javah -classpath bin/classes -d jni com.edu.hpu.jni.MainActivity

遇到這個(gè)問題是因?yàn)槲覀兊腸alsspath在編譯時(shí),沒有找到Android.jar文件導(dǎo)致的,錯(cuò)誤信息如下:

這個(gè)問題很好解決,第一種方式,我們在環(huán)境變量calsspath下添加一個(gè)Android.jar文件的目錄即可,Android.jar文件存在于我們的Android SDK文件夾,platforms文件夾下存在很多Android版本,我們?nèi)我膺x一個(gè)打開,我們就找到了我們需要的Android.jar文件,然后將地址配置到環(huán)境變量classpath下即可;第二種方式我們在命令行設(shè)置一個(gè)路徑即可:

這樣我們的頭文件就生成了,最下化我們的命令行窗口,因?yàn)殡S后我們還要使用,完成上面的操作,我們刷新一下工程,這是在jni目錄下會(huì)對一個(gè)頭文件:com_edu_hpu_jni_MainActivity.h(文件名因工程而異),下面我們在jni目錄下新建一個(gè).c文件:

#include <stdio.h>
#include <stdlib.h>
#include "com_edu_hpu_jni_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_edu_hpu_jni_MainActivity_getStringFromC(JNIEnv* env, jclass this){
 return (*env)->NewStringUTF(env, "Hello from JNI !");
}

Java_com_edu_hpu_jni_MainActivity_getStringFromC簡單說一下這個(gè)名字,Java_是固定前綴,com_edu_hpu_jni_MainActivity:主activity包名+類名,getStringFromC:方法名

這里為了防止我們寫錯(cuò),我們打開剛剛生成的頭文件,從里面拷貝出來:

到這里我們的任務(wù)即將完成,下面我們將之前demo工程的jni目錄下的Android.mk拷貝到我們的工程jni目錄下,然后雙擊打開:

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

LOCAL_MODULE:指我們.c文件的訪問標(biāo)記;LOCAL_SRC_FILES:指我們在jni目錄下新建的.c文件。

最后我們需要在我們的主Activity中進(jìn)行調(diào)用.C類庫:

public class MainActivity extends Activity {
 static{
 System.loadLibrary("hello");
 }
 public static native String getStringFromC();
 private TextView text;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 text = (TextView) findViewById(R.id.hello);
 text.setText(getStringFromC());
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 }
}

做完上面的工作,我們打開我們的命令行窗口,輸入ndk-build編譯生成.so類庫

操作成功后,我們刷新一下工程,會(huì)發(fā)現(xiàn)obj目錄下增加了一個(gè).so文件:

然后我們點(diǎn)擊運(yùn)行工程,這樣我們的第一個(gè)NDK程序就算完工了,最后附一張圖:

上面提到的命令行方式生成.so文件是不是感覺很麻煩,接下來請和我一起探究一下如何使用編譯工具eclipse完成上面的操作。

第一步:安裝ndk

安裝方式詳見Android NDK開發(fā)入門

第二步:配置eclipse

首先我們需要將ndk環(huán)境配置到eclipse:點(diǎn)擊 window-->perferences:

然后選擇Android-->ndk-->將我們的ndk安裝目錄添加進(jìn)來:

到這里我們的配置基本完成,最后給我們的工程配置一個(gè)啟動(dòng)ndk-build的路徑,選擇我們的工程右鍵單擊選擇properties:

 

好了,我們的eclipse編譯ndk程序的配置就算大功告成,大家快去試一下吧,超級(jí)方便。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Android開發(fā)之自定義加載動(dòng)畫詳解

    Android開發(fā)之自定義加載動(dòng)畫詳解

    這篇文章主要介紹了Android開發(fā)的自定義加載動(dòng)畫,效果為一個(gè)連續(xù)的動(dòng)畫,就是這個(gè)大圓不停地吞下小圓,文中示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-03-03
  • Android自定義倒計(jì)時(shí)按鈕

    Android自定義倒計(jì)時(shí)按鈕

    這篇文章主要為大家詳細(xì)介紹了Android自定義倒計(jì)時(shí)按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android 通過cmake的方式接入opencv的方法步驟

    Android 通過cmake的方式接入opencv的方法步驟

    這篇文章主要介紹了Android 通過cmake的方式接入opencv的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Android以對話框形式制作數(shù)字軟鍵盤示例

    Android以對話框形式制作數(shù)字軟鍵盤示例

    大家好,本篇文章主要講的是Android以對話框形式制作數(shù)字軟鍵盤示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Flutter異步操作實(shí)現(xiàn)流程詳解

    Flutter異步操作實(shí)現(xiàn)流程詳解

    在Flutter中,借助 FutureBuilder 組件和 StreamBuilder 組件,可以非常方便地完成異步操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • Android AOP框架AspectJ使用詳解

    Android AOP框架AspectJ使用詳解

    本篇文章主要介紹了Android AOP框架AspectJ使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android 自定義輸入支付密碼的軟鍵盤實(shí)例代碼

    Android 自定義輸入支付密碼的軟鍵盤實(shí)例代碼

    這篇文章主要介紹了Android 自定義輸入支付密碼的軟鍵盤實(shí)例代碼的相關(guān)資料,并附簡單實(shí)例代碼和實(shí)現(xiàn)效果圖,需要的朋友可以參考下
    2016-11-11
  • Android中自定義進(jìn)度條詳解

    Android中自定義進(jìn)度條詳解

    這篇文章主要介紹了Android中自定義進(jìn)度條詳解,本文講解了變換進(jìn)度條前背景、縱向進(jìn)度條、弧形bar等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Android編程圖片加載類ImageLoader定義與用法實(shí)例分析

    Android編程圖片加載類ImageLoader定義與用法實(shí)例分析

    這篇文章主要介紹了Android編程圖片加載類ImageLoader定義與用法,結(jié)合實(shí)例形式分析了Android圖片加載類ImageLoader的功能、定義、使用方法及相關(guān)操作注意事項(xiàng),代碼中備有較為詳盡的注釋便于理解,需要的朋友可以參考下
    2017-12-12
  • Android ShareSDK快速實(shí)現(xiàn)分享功能

    Android ShareSDK快速實(shí)現(xiàn)分享功能

    這篇文章主要介紹了Android ShareSDK快速實(shí)現(xiàn)分享功能的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評(píng)論