導航:首頁 > 操作系統 > androidstudio生成so

androidstudio生成so

發布時間:2023-07-26 07:03:57

A. android studio開發工具編譯C、c++代碼生成so文件

目前android studio 還不支持 ndk開發,如下圖是官網的說明:

B. Android studio如何通過jni調用openssl生成的.so動態鏈接庫

(1)老版本,方法如下:
task NativeLibs(type: Copy) {
from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }
into new File(buildDir, 'native-libs')
}

tasks.withType(Compile) { compileTask -> compileTask.dependsOn NativeLibs }

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
pkgTask.jniDir new File(buildDir, 'native-libs')
}

(2)新版本三種方法:
(2.1)打包前先生成.Jar文件後自動解包到apk文件

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
destinationDir file("$buildDir/native-libs")
baseName 'native-libs'
extension 'jar'
from fileTree(dir: 'libs', include: '**/*.so')
into 'lib/'
}

tasks.withType(Compile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

下面一句話就是打包生成目錄(build\native-libs)中的.jar文件

compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')

(2.2)手動生成.Jar文件後自動解包到apk文件

這個方式需要自己手動進行.SO文件壓縮,具體步驟為:將所有需要使用的.so文件壓縮為.zip文件(zip中的文件目錄結構為: lib/armeabi/*.so)然後把zip文件後綴改為.Jar然後放到libs生成apk就ok

默認就是自動打包所有.Jar文件:

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}

(2.3)這也就是現在正在使用的方式(推薦) ,其實無非就是把.SO文件打包到APK的lib文件夾中,假如仔細閱讀了Gradle的使用方法,自然就知道其實Gradle官方在新版已經自動實現了打包.SO文件的.很簡單級就是在配置的android節點下加入下面的內容就ok:

sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}

其他地方無需修改,整個項目的配置文件如下:

apply plugin: 'android'

android {
compileSdkVersion 19
buildToolsVersion "19.0.0"

defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}

C. 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文件了

D. 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文件了

E. 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();

閱讀全文

與androidstudio生成so相關的資料

熱點內容
android滑動進度條 瀏覽:834
javagmt轉換 瀏覽:826
linux查看snmp 瀏覽:24
ug80車床編程 瀏覽:516
怎麼加速python計算素數 瀏覽:241
腰椎第五節壓縮性骨折 瀏覽:91
程序員開會的句子 瀏覽:993
用哪個app寫編程 瀏覽:645
android通訊錄增刪改查 瀏覽:730
車貸解壓過戶可以同時進行嗎 瀏覽:920
java面向對象編程題目 瀏覽:883
二次元壓縮包 瀏覽:700
stc模擬器編程器 瀏覽:155
伺服器銷售怎麼做好 瀏覽:87
什麼是com編程 瀏覽:849
演算法工程師最新資訊 瀏覽:611
郵政銀行卡怎麼在app簽約綁定 瀏覽:49
壓縮卷一直轉 瀏覽:978
初一編程小程序怎麼做 瀏覽:828
bt軟體文件夾名稱 瀏覽:159