當前位置:首頁 » 安卓系統 » androidstudio開發jni

androidstudio開發jni

發布時間: 2022-09-04 09:57:56

『壹』 android studio 開發 jni目錄默認放哪個文件夾

1 在交叉編譯的時候怎麼都無法生成so文件,javah生成頭文件沒錯,c文件也沒錯,java文件也沒錯,
2.原因:是JNI文件夾路徑不對
3 在執行javah命令時,我進入的是cd app/src/main/java 這樣jni文件夾在java文件夾下,作為一個包存在,這樣就無法生成so文件
執行javah的正確姿勢:
4 進入app/src/main目錄:cd app/src/main
執行javah命令:javah
javah -d jni -classpath ./Java lab.sodino.jnitest.MainActivity
5, -d jni 頭文件生成到jni文件夾(當前在<Project>\app\src\main目錄下,所以.h所在的目錄為<Project>\app\src\main\jni )
-classpath ./java 指定去當前路徑下java下尋找包名指定的類
這樣再rebuild一下,就會生成so文件了

『貳』 android studio 怎樣進行jni開發

方法如下:
1.添加如下代碼在MainActivity類內
static {
System.loadLibrary("hello_jni");
}
public native String getstringfromC();
2.打開終端,android studio已經提供了終端
3.首先進入java目錄執行命令:
javah -d ../jni com.example.root.ndk_sample.MainActivity
com.example.root.ndk_sample.MainActivity是native函數的所在的包名和類名,中間使用「.」號分開
4.添加*.c文件在jni目錄中
5.編寫Android.mk和Application.mk 放在jni目錄下面
6.Android.mk文件的內容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=hello_jni
LOCAL_SRC_FILES := hello_jni.c
include $(BUILD_SHARED_LIBRARY)
Application.mk 文件內容為:
APP_ABI := all
APP_OPIM :=debug

『叄』 如何使用android studio開發jni程序

NDK:NDK是Native Development Kit的縮寫,是Google提供的一套工具集,可以讓你其他語言(C、C++或匯編)開發 Android的 JNI。NDK可以編譯多平台的so,開發人員只需要簡單修改 mk 文件說明需要的平台,不需要改動任何代碼,NDK就可以幫你編譯出所需的so庫。
JNI:JNI是Java Native Interface的縮寫,它提供了若乾的API實現了Java和其他語言的通信(主要是C&C++)
NDK網盤下載地址

『肆』 如何在Android Studio中導入JNI生成的.so庫

相信很多朋友在使用Android studio開發中,遇到過如何引入第三方so文件的問題,然而第三方官方僅僅給出了ADT環境下的集成方式。

Android studio中默認使用的是gradle編譯方式,與ADT編輯方式不一樣,那麼so文件應當如何引入呢?

其實很簡單。這里以集成JPUSH為例,看一下so文件如何引入到編譯環境,最終到JNI直接可以調用該so文件。

首先,在我們的Mole的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下:

然後就是編寫我們的build.gradle文件。

關於so文件引入的配置很簡單,代碼配置如下:

  • tasknativeLibsToJar(type:Zip,description:""){

  • destinationDirfile("$projectDir/libs")

  • baseName"Native_Libs2"

  • extension"jar"

  • fromfileTree(dir:"libs",include:"**/*.so")

  • into"lib"

  • }

  • tasks.withType(JavaCompile){

  • compileTask->compileTask.dependsOn(nativeLibsToJar)

  • }



  • 自定義一個任務,在其中指定項目所依賴的so文件的目錄,這里用了**/*.so來寫,為了省事,指定需要拷入的目錄 into "lib",那麼動態運行庫就被拷入到lib目錄中。

    完整的build.gradle文件如下:

  • applyplugin:'com.android.application'

  • android{

  • compileSdkVersion21

  • buildToolsVersion"21.1.0"

  • defaultConfig{

  • applicationId"com.wujay.footerballstar"

  • minSdkVersion8

  • targetSdkVersion21

  • versionCode1

  • versionName"1.0"

  • }

  • buildTypes{

  • release{

  • runProguardfalse

  • ('proguard-android.txt'),'proguard-rules.pro'

  • }

  • }

  • tasknativeLibsToJar(type:Zip,description:""){

  • destinationDirfile("$projectDir/libs")

  • baseName"Native_Libs2"

  • extension"jar"

  • fromfileTree(dir:"libs",include:"**/*.so")

  • into"lib"

  • }

  • tasks.withType(JavaCompile){

  • compileTask->compileTask.dependsOn(nativeLibsToJar)

  • }

  • }

  • dependencies{

  • compilefileTree(dir:'libs',include:['*.jar'])

  • compile'com.android.support:appcompat-v7:21.0.0'

  • compilefiles('libs/jpush-sdk-release1.7.2.jar')

  • compilefiles('libs/umeng_sdk.jar')

  • compilefiles('libs/libammsdk.jar')

  • }

  • 基於有人在評論區提問,這里補充一下,有一個更為快捷輕快的配置方法

    那就是在build.gradle配置中,配置如下的信息:

  • sourceSets {

  • main { jniLibs.srcDirs = ['libs']

  • }

  • }

  • 你的so包可以放在lib目錄下,跟jar包放在同樣的目錄,如lib/armeabi/libjpush172.so。

『伍』 android studio怎麼使用jni

需要使用到NDK來開發jni
安裝NDK: https://segmentfault.com/a/1190000005152343
使用jni的簡單教程: http://blog.csdn.net/eastmoon502136/article/details/50759209

『陸』 AndroidStudio如何配置NDK/JNIAndroidStudio怎麼調用so動態鏈接庫

AndroidStudio怎麼調用so動態鏈接庫?在我們日常開發中,經常會用到一些復雜的加密演算法以保證通信的安全。通常這些演算法會用C或C++實現後打包成.so動態鏈接庫並向Java層開發介面方便調用。


以AndroidStudio為例

1 . 首先去下載NDK包,下載路徑如下可根據自己系統定點下載

https://developer.android.google.cn/ndk/downloads/index.html

static{
System.loadLibrary("jnitext");
}
publicnativeStringget_1111CLang_1String();

『柒』 android studio JNI開發時 編譯成功 但是沒有生成.so文件 什麼原因

1
在交叉編譯的時候怎麼都無法生成so文件,javah生成頭文件沒錯,c文件也沒錯,java文件也沒錯,
2.原因:是JNI文件夾路徑不對
3
在執行javah命令時,我進入的是cd
app/src/main/java
這樣jni文件夾在java文件夾下,作為一個包存在,這樣就無法生成so文件
執行javah的正確姿勢:
4
進入app/src/main目錄:cd
app/src/main
執行javah命令:javah
javah
-d
jni
-classpath
./Java
lab.sodino.jnitest.MainActivity
5,
-d
jni
頭文件生成到jni文件夾(當前在<Project>\app\src\main目錄下,所以.h所在的目錄為<Project>\app\src\main\jni

-classpath
./java
指定去當前路徑下java下尋找包名指定的類
這樣再rebuild一下,就會生成so文件了

『捌』 安卓開發在android studio中使用jni能一次開發兩個so庫嗎

可以生產多重類型的so庫,例如armeabi、armeabi-v7a等,但是無法使用一套jni代碼生成兩個so庫

熱點內容
指法運演算法 發布:2024-05-07 09:24:26 瀏覽:194
兜享花為什麼伺服器錯誤 發布:2024-05-07 09:12:55 瀏覽:125
西門子編程模擬軟體 發布:2024-05-07 09:12:04 瀏覽:127
腳本舉例 發布:2024-05-07 09:04:41 瀏覽:818
php經歷 發布:2024-05-07 08:59:25 瀏覽:419
knd系統編程 發布:2024-05-07 08:55:38 瀏覽:218
大話2無限自動腳本 發布:2024-05-07 08:42:06 瀏覽:78
朋友圈視頻壓縮 發布:2024-05-07 08:33:01 瀏覽:871
MAC賬戶登錄如何進入忘記密碼 發布:2024-05-07 08:14:52 瀏覽:671
相機存儲卡要求格式化 發布:2024-05-07 08:08:44 瀏覽:16