android導入so
1. android studio怎麼引入.so文件
Android studio方法:
1、先在Android studio導入一個項目,然後進入到項目中,依次進入到app>>src>>main下。
2. android studio怎樣導入.so文件
我最近剛剛好把工作環境從eclipse切換到android studio上,關於你標題上的問題,我剛好遇到過,特來回答,當然我也是網上搜索到的答案:
一般 Android 項目從 Eclipse 導入至 Android Studio(以下簡稱AS) 後,會出現各種問題,最主要的就是 「gradle」 目前為止還不支持 .so 庫文件打包入 apk 。
也就是說,如果你用的第三方庫中包含 .so 文件 (一般是 libs\armeabi\ xxx.so ) , 那麼只要在代碼中出現 「System.loadLibrary( "xxx" ) ; 等代碼出現,一定會在這里拋出異常 UnsatisfiedLinkError 。
解決方案如下: 根據我 Google 了2天的結果,一個比較滿意且所有出現這個問題的人都可行的方案是:
1) 在硬碟任意位置建立空文件夾 "lib" (注意名字是 "lib" 而不是 "libs" )
2) 把原來的 libs 目錄下的 armeabi 文件夾拷貝至 剛建立的 lib 目錄下. (armeabi文件夾中的.so文件也會被一並拷入)
3) 將剛建立的 "lib" 目錄打包壓縮成 .zip 文件, 同時改名為 「armeabi.jar"
4) 將 armeabi.jar 放入原來的 libs 目錄下 (和其他第三方jar包放在一起)
經過這4步之後,只需要再重新更新下AS的第三方庫,就OK了 .
3. so文件怎麼導入android studio
so文件導入android studio步驟方法:
1、在src/main中添加 jniLibs文件夾 ,把.so復制進去
4. 如何在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)
}
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')
}
- sourceSets {
- main { jniLibs.srcDirs = ['libs']
- }
- }
自定義一個任務,在其中指定項目所依賴的so文件的目錄,這里用了**/*.so來寫,為了省事,指定需要拷入的目錄 into "lib",那麼動態運行庫就被拷入到lib目錄中。
完整的build.gradle文件如下:
基於有人在評論區提問,這里補充一下,有一個更為快捷輕快的配置方法
那就是在build.gradle配置中,配置如下的信息:
你的so包可以放在lib目錄下,跟jar包放在同樣的目錄,如lib/armeabi/libjpush172.so。
5. android studio怎麼導入各平台so庫
導入第三方的so庫,可以參考如下:
目前缺少了libjpush215.so文件。奇怪的是這so庫已經在我們項目的libs中,之前在eclipse中這樣完全能跑起來的。問題是Android Studio目前在打包的時候並沒有在libs中復制SO庫到項目中。因此我們需要在build.gradle中告訴AS執行復制so庫文件。
android {
...
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['libs']
}
}
}
然後重新Sync Now一下,整個世界都明亮了
6. android studio 怎麼引入so包
android {
sourceSets.main.jniLibs.srcDirs = ['libs']
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
}
}
7. android studio怎麼導入so文件
首先,在我們的Mole的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下:
然後就是編寫我們的build.gradle文件。
關於so文件引入的配置很簡單,代碼配置如下:
[html] view plain print?
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)
}
自定義一個任務,在其中指定項目所依賴的so文件的目錄,這里用了**/*.so來寫,為了省事,指定需要拷入的目錄 into "lib",那麼動態運行庫就被拷入到lib目錄中。
完整的build.gradle文件如下:
[html] view plain print?
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')
}
8. androidstudio中怎麼引入.so文件
首先,在Mole的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下: 然後就是編寫build.gradle文件。 關於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) } 自定義一個任務,在其中指定項目所依賴的so文件的目錄,這里用了**/*.so來寫,為了省事,指定需要拷入的目錄 into "lib",那麼動態運行庫就被拷入到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') }
9. android studio 怎麼導入.so文件
先在Android studio導入一個項目,然後進入到項目中,依次進入到app>>src>>main下。
在main的文件下進行創建一個jnilibs,然後選中main的文件,進行右鍵,彈出框中點擊「new」,移動下一級菜單中選擇「directory」。
對創建的文件夾進行昵稱,在昵稱中進行輸入「jnilibs」,然後點擊「ok」。
這樣在main的文件中創建一個為jnilibs的文件夾。
然後在jinlibs中文件進行添加so的文件,進入到so文件存放的文件中,直接把so的文件拖動到jinlibs的文件中。
拖動完成之後,會提示一個確認款提示信息,直接點擊「ok」即可。
在non-project file access中第一個我希望編輯文件,第二個為我想在當前會話中編輯任何非項目文件,根據的自己需要進行選擇,可以默認即可,點擊ok。
這樣就把so文件添加到jnilibs的文件中,這樣的話程序的代碼就可以進行調用其中方法