當前位置:首頁 » 安卓系統 » androidstudio生成so文件

androidstudio生成so文件

發布時間: 2025-02-18 19:12:29

㈠ 如何在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 生成的so文件只有arm64-v8a

1.新建一個Project2.創建native方法3.執行Build-MakeProject方法4.命令行生成com_jni_example_NativeUtilsh頭文件5.實現h中的方法6.配置NDK7.打開Project的localproperties文件添加NDK路徑8.打開appMole的buildgradle文件在defaultConfig節點里添加一下代碼並執行同步操作9.生成SO文件10.使用生成SO文件

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

(1)老版本,方法如下:taskNativeLibs(type:Copy){from(newFile(project(':MyProject').buildDir,'native-libs')){include'**/*.so'}intonewFile(buildDir,'native-libs')}tasks.withType(Compile){compileTask->compileTask.dependsOnNativeLibs}clean.dependsOn'cleanCopyNativeLibs'tasks.withType(com.android.build.gradle.PackageApplicationTask){pkgTask->pkgTask.jniDirnewFile(buildDir,'native-libs')}(2)新版本三種方法:(2.1)打包前先生成.Jar文件後自動解包到apk文件tasknativeLibsToJar(type:Zip,description:''){destinationDirfile("$buildDir/native-libs")baseName'native-libs'extension'jar'fromfileTree(dir:'libs',include:'**/*.so')into'lib/'}tasks.withType(Compile){compileTask->compileTask.dependsOn(nativeLibsToJar)}下面一句話就是打包生成目錄(build\native-libs)中的.jar文件compilefileTree(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{compilefileTree(dir:'libs',include:'*.jar')}(2.3)這也就是現在正在使用的方式(推薦),其實無非就是把.SO文件打包到APK的lib文件夾中,假如仔細閱讀了Gradle的使用方法,自然就知道其實Gradle官方在新版已經自動實現了打包.SO文件的.很簡單級就是在配置的android節點下加入下面的內容就ok:sourceSets{main{jniLibs.srcDirs=['libs']}}其他地方無需修改,整個項目的配置文件如下:applyplugin:'android'android{"19.0.0"defaultConfig{"1.0"}buildTypes{release{('proguard-android.txt'),'proguard-rules.txt'}}sourceSets{main{jniLibs.srcDirs=['libs']}}}dependencies{compilefileTree(dir:'libs',include:['*.jar'])}

熱點內容
區域網內如何搭建資料庫伺服器 發布:2025-03-17 00:45:04 瀏覽:31
c語言求正整數的位數 發布:2025-03-17 00:38:06 瀏覽:746
動態窗演算法 發布:2025-03-17 00:25:25 瀏覽:345
怎麼找回k寶密碼 發布:2025-03-17 00:17:23 瀏覽:246
方舟有電腦如何做伺服器 發布:2025-03-17 00:02:08 瀏覽:728
升級fw用ftp伺服器 發布:2025-03-16 23:27:35 瀏覽:345
汽車安全配置哪些好 發布:2025-03-16 23:16:42 瀏覽:176
vcmfc源碼 發布:2025-03-16 23:14:17 瀏覽:505
如何設置禁止訪問伺服器ip 發布:2025-03-16 23:14:07 瀏覽:501
linuxloadrunner 發布:2025-03-16 23:12:18 瀏覽:766