導航:首頁 > 操作系統 > androidndkr5

androidndkr5

發布時間:2022-05-16 21:56:46

linux下NDK編譯出的SO庫能在WIndows下的android工程直接使用么

可以使用的。

解析:首先Android就是Linux內核。

  1. android應用程序開發環境: 包括eclipse、java、 android sdk、 adt等。

  2. 安裝android-ndk開發包,這個開發包可以在google android 官網下載: 通過這個開發包的工具才能將android jni 的C/C++的代碼編譯成庫

  3. android的NDK開發需要在linux下進行: 因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。

備註:NDK編譯步驟:

1.選擇 ndk 自帶的例子 hello-jni ,位於E:android-ndk-r5sampleshello-jni( 根據具體的安裝位置而定 ) 。

2.運行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進入到 E:android-ndk-r5sampleshello-jni 目錄。

3.輸入 $NDK/ndk-build ,執行成功後,它會自動生成一個 libs 目錄,把編譯生成的 .so 文件放在裡面。 ($NDK是調用我們之前配置好的環境變數, ndk-build 是調用 ndk 的編譯程序 )

4.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 文件,如果有,ndk 就運行正常了。

❷ android ndk zip 怎麼使用

解壓啊!在工具中設置下ndk路徑就行了!

❸ 如何在android app中使用STL庫

方法:

1.在jni目錄下新建Application.mk; 加入 APP_STL := stlport_static右邊的值還可以換成下面幾個:

system - 使用默認最小的C++運行庫,這樣生成的應用體積小,內存佔用小,但部分功能將無法支持

stlport_static - 使用STLport作為靜態庫,這項是Android開發網極力推薦的

stlport_shared - STLport作為動態庫,這個可能產生兼容性和部分低版本的Android固件,目前不推薦使用。

gnustl_static - 使用 GNU libstdc++ 作為靜態庫

默認情況下STLPORT是不支持C++異常處理和RTTI,所以不要出現 -fexceptions 或-frtti;如果真的需要,可以使用gnustl_static來支持標准C++的特性,但生成的文件體積會偏大,運行效率會低一些。

支持C++異常處理,在Application.mk中加入 LOCAL_CPPFLAGS +=-fexceptions這句,同理支持RTTI,則加入LOCAL_CPPFLAGS +=-frtti,這里再次提醒大家,第二條說的使用gnustl靜態庫,而不是stlport。

強制重新編譯 STLPort ,在Application.mk中加入STLPORT_FORCE_REBUILD := true可以強制重新編譯STLPort源碼,由於一些原因可能自己需要修改下STLPort庫,一般普通的開發者無需使用此項

2. 在要使用STL的cpp文件中包含相關的頭文件,並且使用using namespace std;

❹ 如何用Android NDK編譯FFmpeg

1、android的NDK開發需要在linux下進行: 因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。
2、安裝android-ndk開發包,這個開發包可以在google android 官網下載: 通過這個開發包的工具才能將android jni 的C/C++的代碼編譯成庫
android應用程序開發環境: 包括eclipse、java、 android sdk、 adt等。
NDK編譯步驟:
a.選擇 ndk 自帶的例子 hello-jni ,我的位於E:\android-ndk-r5\samples\hello-jni( 根據具體的安裝位置而定 ) 。
b.運行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進入到 E:\android-ndk-r5\samples\hello-jni 目錄。
c.輸入 $NDK/ndk-build ,執行成功後,它會自動生成一個 libs 目錄,把編譯生成的 .so 文件放在裡面。 ($NDK是調用我們之前配置好的環境變數, ndk-build 是調用 ndk 的編譯程序 )
d.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 文件,如果有,ndk 就運行正常啦。

❺ Qt for Android生成的so庫,在Java for Android中被調用,請問有什麼思路嗎

可以調用,但是不能直接調用,要通過代碼目的JNI去調用,在JNI中導入頭文件,通過NDK編譯成功後即可。
NDK編譯步驟:
1.選擇 ndk 自帶的例子 hello-jni ,我的位於E:\android-ndk-r5\samples\hello-jni( 根據具體的安裝位置而定 ) 。
2.運行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進入到 E:\android-ndk-r5\samples\hello-jni 目錄。
3.輸入 $NDK/ndk-build ,執行成功後,它會自動生成一個 libs 目錄,把編譯生成的 .so 文件放在裡面。 ($NDK是調用我們之前配置好的環境變數, ndk-build 是調用 ndk 的編譯程序 )
4.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 文件,如果有,ndk 就運行正常啦。

❻ Android NDK中對STL的兩種支持gnustl和stlport有什麼區別

Android NDK從r5b版本開始有官方支持的STL了,有一個crystax版本早已經支持。官方的支持有兩個版本一個是gnu的,一個是stlport。如果你需要在你的NDK程序中使用STL,那麼需要在Application.mk文件中添加一個選項,就是APP_STL := stlport_static。 其中APP_STL的取值有以下四種: system -- 系統默認的最小支持的C++運行時庫 stlport_static -- 以靜態鏈接的方式使用stlport版本的STL stlport_shared -- 以動態鏈接的方式使用stlport版本的STL gnustl_static -- 以靜態鏈接的方式使用gnu版本的STL如果你和我一樣並沒有使用Android.mk和Application.mk,而是使用Code::Blocks或者Visual studio 2010,那麼在配置環境時,如果需要STL的支持,那麼就需要注意自己要指定stl的包含路徑。鏈接就根據需要自己鏈接不同的版本。請注意,stlport有靜態鏈接和動態鏈接兩種方式,而gnu的僅有靜態鏈接方法。另外一個需要注意的就是官方提供的這個stlport版本不支持RTTI和異常,換言之,如果你使用了stlport版本的STL,則不能使用-fexceptions和-frtti這兩個編譯選項。

❼ android studio怎麼設置用32位ndk

使用多少位的NDK不是由Android Studio決定的,是本身操作系統決定的。畢竟啟動AS的時候,就要選擇是啟動studio或者studio64。

❽ android 編譯好的ndk庫應該放在哪個目錄

可以使用的。 解析:首先Android就是Linux內核。 android應用程序開發環境: 包括eclipse、java、 android sdk、 adt等。 安裝android-ndk開發包,這個開發包可以在google android 官網下載: 通過這個開發包的工具才能將android jni 的C/C++的代碼編譯成庫 android的NDK開發需要在linux下進行: 因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。 備註:NDK編譯步驟: 1.選擇 ndk 自帶的例子 hello-jni ,位於E:\android-ndk-r5\samples\hello-jni( 根據具體的安裝位置而定 ) 。 2.運行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進入到 E:\android-ndk-r5\samples\hello-jni 目錄。 3.輸入 $NDK/ndk-build ,執行成功後,它會自動生成一個 libs 目錄,把編譯生成的 .so 文件放在裡面。 ($NDK是調用我們之前配置好的環境變數, ndk-build 是調用 ndk 的編譯程序 ) 4.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 文件,如果有,ndk 就運行正常了。

❾ sequoyah插件後,為android配置ndk路徑 怎麼配置不成功

閱讀前請確保你已經下載和安裝了:

1、Eclipse

2、Eclipse-adt插件;Android-SDK

3、Android-NDK;cygwin

還需要進行一些准備工作:

1、下載和安裝cdt插件。

可以在eclipse中使用Help->Install New Software直接 安裝

插件比較大,可以只選擇C/C++ Development Tools這一項安裝。

2、下載和安裝sequoyah插件。
注意:需要將Group Items By Category前的勾去掉,然後選擇全部

現在可以進行配置了。(以下使用的android-ndk版本為r7b)

1、配置C語言的INCLUDE路徑和LIB路徑。

打開window菜單下的preference選項。選擇C/C++,Build,environment,向其中添加:

C_INCLUDE_PATH=(Cygwin目錄)\user\include;(ndk目錄)\platforms\(你使用的平台)\(CPU)\usr\include

CPLUS_INCLUDE_PATH=(Cygwin目錄)\user\include;(ndk目錄)\platforms\(你使用的平台)\(CPU)\usr\include

LIBRARY_PATH=(Cygwin目錄)\user\lib;(ndk目錄)\platforms\(你使用的平台)\(CPU)\usr\lib

2、配置Android NDK路徑

注意:在sequoyah插件安裝後才會有這一項。

打開window菜單下的preference選項。選擇Android,Native Development(本地開發)

選擇你的NDK安裝目錄。

但是,這個插件目前僅支持ndk的r4和r5版本,更高版本會提示這個路徑無效。

其實,插件只是需要這個參數向PATH中添加這個路徑,但是不設置這個路徑會導致插件工作不正常。

我的解決方法是,手動創建以下文件:

(NDK目錄)\toolchains\arm-eabi-4.4.0\prebuilt\windows\arm-eabi-4.4.0\bin\gcc.exe

從第二級目錄開始可能就是不存在的,最後的gcc.exe可以是0位元組。

這樣插件就配置完成了。

3、注意:需要將cygwin的bin目錄添加到windows 的PATH中

現在,差不多就可以正常使用了。

新建Android工程後,右鍵選擇Android Tools-->Add Native Support...

插件會自動創建jni文件夾一個cpp文件和Android.mk文件。

寫好你的代碼後,就可以直接通過Run As-->Android Application運行了。

最後,你很可能遇到如下錯誤信息:

Error: Cannot run program "ndk-build": Launching failed解決方法是打開工程屬性,選擇C/C++ Build
設置Build command為 bash (ndk目錄)\ndk-build
轉載

❿ android studio ndk怎麼調用

android studio ndk調用過程如下:

通過jniaes案例說明調用NDK層配置過程

而我們通過底層來判斷簽名是否正確,如果正確則繼續執行核心代碼,否則退出程序,這樣就可以防止別人惡意反編譯,並進行二次打包。

首先去官網下載一個最新的NDK,隨便放到哪都行,像我放在D:DevAndroidandroid-ndk-r10d.

(1) 新建一個項目:名稱JniAes

首先在java類中添加native介面,注意寫好native介面和System.loadLibrary()即可。代碼如下:

1 public synchronized static native String getFromNativeIv();
2 public synchronized static native String getStringFromNative();
3 public synchronized static native int jniCheckAPP(Context context);
4

然後build project得到其中中間文件,我們關注的是.class文件。編譯OK以後生成的class文件在AS工程的如下目錄:

aesapp

(2)接下來跟class文件生成相應的.h頭文件,執行如下命令即可

點擊"View->Tool Windows->Terminal" 即在Studio中進行終端命令行工具.執行如下命令生成c語言頭文件.
javah -d jni -classpath c:
android-16android.jar;....uildintermediatesclassesdebug com.aes.jniaes.MainActivity

(3)然後將剛才的 .h文件剪切過來。在jni目錄下新建一個c文件,隨意取名,我的叫strk.c 。

strk.c文件,用於實現核心代碼邏輯,判斷包名.哈希值是否合法,如果返回1,為合法。反之,則不合法。入口方法為:
jint Java_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv* env, jobject context,
jobject thiz)

接下來在工程的local.properties文件中添加NDK路徑(上面下載好的那個NDK),類似其中的SDK路徑一樣,我的添加後如下:

sdk.dir=D:\Dev\Android\android-sdk-windows
ndk.dir=D:\Dev\Android\android-ndk-r10d

(4)接下來在app mole目錄下的build.gradle中設置庫文件名(生成的so文件名)。找到gradle文件的defaultConfig這項,在裡面添加如下內容:

defaultConfig {
applicationId "com.aes.jniaes"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"

ndk {
moleName "checkapp-jni" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定三種abi體系結構下的so庫。目前可有可無。
}
}

(5)最後就是添加靜態初始化loadLibrary代碼,添加如下:

static {
System.loadLibrary("checkapp-jni"); //so文件的名字
}

編譯出來的so文件在aesappuildintermediates dkdebuglib目錄下

那麼如何將編譯好的so文件進行使用,可以通過如下方式:

二 .引用so文件

(1).在「src/main」目錄中新建名為「jniLibs」的目錄;

(2).將so文件復制、粘貼到「jniLibs」目錄內。

閱讀全文

與androidndkr5相關的資料

熱點內容
程序員直播機器人舞團 瀏覽:767
devc指針編譯問題 瀏覽:998
支持dsd硬解壓音效卡 瀏覽:769
怎麼查看u盤加密區 瀏覽:181
台電加密是什麼格式 瀏覽:155
php論壇版塊在哪個文件夾 瀏覽:442
暗黑的伺服器為什麼維護 瀏覽:624
android內存溢出的原因 瀏覽:18
標志307的壓縮比是多少 瀏覽:636
伺服器啟動為什麼叫三聲 瀏覽:997
追風箏的人英文pdf 瀏覽:940
解壓小熊手機殼 瀏覽:347
成都市區建成面積演算法 瀏覽:662
智能家居單片機 瀏覽:98
買男裝用什麼app好 瀏覽:856
文件夾合並了怎麼拆開 瀏覽:261
波段副圖源碼無未來函數 瀏覽:90
livecn伺服器地址 瀏覽:259
程序員這個工作真的很吃香嗎 瀏覽:848
程序員和數學分析師待遇 瀏覽:681