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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android开发之JNI(一)--HelloWorld及遇到的错误解析

發(fā)布時間:2025/3/20 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之JNI(一)--HelloWorld及遇到的错误解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android開發(fā)之JNI(一)--HelloWorld及遇到的錯誤解析


1.NDK環(huán)境搭建

參考http://blog.csdn.net/xiaoliouc/article/details/8705560

2.HelloWorld編寫

(1)新建一個AndroidprojectJniDemo,這個名字能夠隨便起;
(2)新建一個HelloWorld.java類,里面的內(nèi)容例如以下: public class HelloWorld {public native String print();static {System.loadLibrary("hello-jni");} }
(3)在MainActivity.java類中調(diào)用,例如以下所看到的: private TextView mTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView = (TextView) findViewById(R.id.text_view);String helloWorld = new HelloWorld().print();mTextView.setText(helloWorld);}
(4)打開cmd,進入到projectHelloWorld.java類所在文件夾。執(zhí)行例如以下命令 javac HelloWorld.java 生成了一個HelloWorld.class的文件 (5)用cmd返回到projectsrc文件夾。執(zhí)行下面命令 javah ?com.example.jnidemo.HelloWorld,這時生成一個com_example_jnidemo_HelloWorld.h文件 也能夠用命令?javah -classpath . -jni ?com.example.jnidemo.HelloWorld ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?javah -classpath . ?com.example.jnidemo.HelloWorld 可是必需在src文件夾下
? ? (6)右擊project名。新那一個folder,起名jni,從android ndk文件夾下copy這個兩個文件, android-ndk\samples\hello-jni\jni\Application.mk android-ndk\samples\hello-jni\jni\Android.mk 然后把com_example_jnidemo_HelloWorld.h重命名為HelloWorld.h這個名字能夠任意命也copy到j(luò)ni文件夾下
(7)編寫h文件的實現(xiàn)文件c,此處實現(xiàn)文件為HelloWorld.c。內(nèi)容例如以下: (8)打開cygdrive,進入到項目的根文件夾,執(zhí)行例如以下命令$NDK/ndk-build,?$NDK改成自己配的名字;完畢后刷新項目,文件夾下多了obj文件夾 #include <string.h> #include <jni.h>#include "HelloWorld.h"JNIEXPORT jstring JNICALL Java_com_example_jnidemo_HelloWorld_print(JNIEnv* env, jobject thiz) {return (*env)->NewStringUTF(env, "Hello World!"); }
(9)Android.mk文件配置例如以下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := HelloWorld.cinclude $(BUILD_SHARED_LIBRARY) LOCAL_MODULE后面的值和ystem.loadLibrary("hello-jni");里面的字符串保持一致,表示要載入的模塊庫 LOCAL_SRC_FILES的值為要編譯的源文件 編譯好后執(zhí)行項目。得到了想要的結(jié)果

3.在初次編寫NDK時可能遇到的一些問題總結(jié):

1.?Type '*****' could not be resolved? ? Method '******' could not be resolved等等 解決方法:左鍵->Properties->C/C++ General->Paths and Symbols->Includes->Add->加入D:\adt-bundle-windows\android-ndk\platforms\android-19\arch-arm\usr\include,NDK的路徑
2. 假設(shè)還報1的錯誤,Window->Show View->Problems,清除全部錯誤,這樣就好了。有時候弄好之后。在幾個文件之間切換。又會報這種錯誤,做法繼續(xù)2.
3.Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8

這是由于NDK指定的版本號與minSdkVersion不一致的問題,這本身僅僅是一個警告。可是在eclipse下就會編譯報錯,那么怎樣修復呢?

僅僅須要在你的project的:

Application.mk

文件里加入例如以下代碼就可以:

[cpp]?view plaincopy
  • APP_PLATFORM?:=?android-8 ?
  • 當中8就是指的minSdkVersion,依據(jù)自己的實際情況進行替換!

    4.ANDROIDNDK:WARINGUnsupported source file extensions in jni/Android.mk for module XXXX 這是由于我在做的時候把 [cpp]?view plaincopy
  • LOCAL_SRC_FILES := HelloWorld.h 改成?LOCAL_SRC_FILES := HelloWorld.c

  • 5.obj/local/armeabi-v7a/objs/xxxxx ?****multiple target patterns. Stop 這是刪掉obj這個目錄,又一次生成$NDK/ndk-build就OK!
    假設(shè)大家在開發(fā)的過程中還遇到別的錯誤,請在留言貼出問題并附上解決方法,供其它人參考,謝謝!

    總結(jié)

    以上是生活随笔為你收集整理的Android开发之JNI(一)--HelloWorld及遇到的错误解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。