詳解Android studio中正確引入so文件的方法
相信很多朋友在使用Android studio開發(fā)中,遇到過如何引入第三方so文件的問題,然而第三方官方僅僅給出了ADT環(huán)境下的集成方式。
Android studio中默認(rèn)使用的是gradle編譯方式,與ADT編輯方式不一樣,那么so文件應(yīng)當(dāng)如何引入呢?
其實(shí)很簡單。這里以集成JPUSH為例,看一下so文件如何引入到編譯環(huán)境,最終到JNI直接可以調(diào)用該so文件。
首先,在我們的Module的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下:

然后就是編寫我們的build.gradle文件。
關(guān)于so文件引入的配置很簡單,代碼配置如下:
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
自定義一個(gè)任務(wù),在其中指定項(xiàng)目所依賴的so文件的目錄,這里用了**/*.so來寫,為了省事,指定需要拷入的目錄 into "lib",那么動(dòng)態(tài)運(yùn)行庫就被拷入到lib目錄中。
完整的build.gradle文件如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.wujay.footerballstar"
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
compile files('libs/jpush-sdk-release1.7.2.jar')
compile files('libs/umeng_sdk.jar')
compile files('libs/libammsdk.jar')
}
基于有人在評論區(qū)提問,這里補(bǔ)充一下,有一個(gè)更為快捷輕快的配置方法
那就是在build.gradle配置中,配置如下的信息:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
你的so包可以放在lib目錄下,跟jar包放在同樣的目錄,如lib/armeabi/libjpush172.so。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中RecyclerView實(shí)現(xiàn)商品分類功能
這篇文章主要為大家詳細(xì)介紹了Android中RecyclerView實(shí)現(xiàn)商品分類功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Android 中ListView和GridView賦值錯(cuò)位
這篇文章主要介紹了Android 中ListView和GridView賦值錯(cuò)位的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10
Android SQLite操作之大數(shù)據(jù)處理與同時(shí)讀寫方法
這篇文章主要介紹了Android SQLite操作之大數(shù)據(jù)處理與同時(shí)讀寫方法,實(shí)例分析了Android操作SQLite時(shí)基于事務(wù)的數(shù)據(jù)緩存與批量插入技巧,以及同時(shí)讀寫的相關(guān)實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2016-07-07
Activity透明/半透明效果的設(shè)置transparent(兩種實(shí)現(xiàn)方法)
兩種方法實(shí)現(xiàn)Activity透明/半透明效果的設(shè)置,代碼思路很有調(diào)理,感興趣的朋友可以參考下,希望本文可以幫助到你2013-02-02
Android實(shí)現(xiàn)底部導(dǎo)航欄功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部導(dǎo)航欄功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android的廣播Receiver動(dòng)態(tài)注冊和靜態(tài)注冊示例
本篇文章主要介紹了Android的廣播Receiver動(dòng)態(tài)注冊和靜態(tài)注冊示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
Android自定View流式布局根據(jù)文字?jǐn)?shù)量換行
這篇文章主要為大家詳細(xì)介紹了Android自定View流式布局,根據(jù)文字?jǐn)?shù)量換行,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Android基于方法池與回調(diào)實(shí)現(xiàn)登錄攔截的場景
這篇文章主要為大家介紹了Android基于方法池與回調(diào)實(shí)現(xiàn)登錄攔截的場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

