原文:http://blog.csdn.net/ding_gc/article/details/52669691
版权声明:本文为博主原创文章,未经博主允许不得转载。
-
java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.engine.JNIEngine.initClass:(Ljava/lang/Object;I)I
-
at com.baidu.platform.comjni.engine.JNIEngine.initClass(Native Method)
-
at com.baidu.platform.comjni.engine.AppEngine.InitClass(Unknown Source)
-
at com.baidu.platform.comapi.a.<clinit>(Unknown Source)
-
at com.baidu.platform.comapi.c.a(Unknown Source)
-
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
-
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
在
Android
Studio集成百度地图API时,第一步就遇到了一个问题
“
Java
.lang.UnsatisfiedLinkError”
根本也不知道如何解决,一番折腾后了解到:
原来
android
Studio不支持在.apk文件打包时,自动加载动态库 .so文件。
解决办法:
既然不支持自动加载,那么就需要我们手动去加载。
在工程项目中 app–>gradle中添加
-
sourceSets {
-
main() {
-
jniLibs.srcDirs = [
‘libs’
]
-
}
-
}
即可解决。
全部代码展示为:
-
apply plugin:
‘com.android.application’
-
-
android {
-
compileSdkVersion
23
-
buildToolsVersion
“24.0.0”
-
-
defaultConfig {
-
applicationId
“com.niuduz.baidumap_ding”
-
minSdkVersion
15
-
targetSdkVersion
23
-
versionCode
1
-
versionName
“1.0”
-
}
-
buildTypes {
-
release {
-
minifyEnabled
false
-
proguardFiles getDefaultProguardFile(
‘proguard-android.txt’
),
‘proguard-rules.pro’
-
}
-
}
-
-
/**
-
* 目前 Android Studio不支持自动添加 .so文件(Eclipse是支持的),所以我们需要手动加载libs下的.so的动态库
-
*/
-
sourceSets {
-
main() {
-
jniLibs.srcDirs = [
‘libs’
]
-
}
-
}
-
-
}
-
-
dependencies {
-
compile fileTree(include: [
‘*.jar’
], dir:
‘libs’
)
-
testCompile
‘junit:junit:4.12’
-
compile
‘com.android.support:appcompat-v7:23.3.0’
-
compile files(
‘libs/baidumapapi_base_v4_0_0.jar’
)
-
compile files(
‘libs/baidumapapi_cloud_v4_0_0.jar’
)
-
compile files(
‘libs/baidumapapi_map_v4_0_0.jar’
)
-
compile files(
‘libs/baidumapapi_radar_v4_0_0.jar’
)
-
compile files(
‘libs/baidumapapi_search_v4_0_0.jar’
)
-
compile files(
‘libs/baidumapapi_util_v4_0_0.jar’
)
-
compile files(
‘libs/locSDK_6.13.jar’
)
-
}