社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
问题描述:将eclipse Demo导入Ubuntu Aandroid studio3.6.1,程序能够run起来,但是在APP中需要调用.so文件时报错:解决方案如下:
1.找到原eclipse工程中的.so所在目录(一般包含三个文件夹:‘armeabi’, ‘armeabi-v7a’, ‘x86’):
在文件管理器中将整个lisbs文件夹拷贝到Android Srudio工程目录src/main/下
然后再在Android Studio工程/app/src/main/下新建jniLibs文件夹,并将libs文件夹中的所有文件复制到jniLibs文件中,两个文件夹都保留:
2.app的build.gradle添加如下代码(注意:红框出的注释处,如果代码中用注释掉的默认位置[‘libs’],在我的系统上编译后则不会自动添加库到Project->Android视图下):
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "android_serialport_api.sample"
minSdkVersion 20
targetSdkVersion 29
ndk {
//moduleName "serial_port"
abiFilters 'armeabi', 'armeabi-v7a', 'x86'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets
{
main
{
jni.srcDirs = []
//jniLibs.srcDirs = ['libs']
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
}
dependencies {
implementation 'com.android.support:support-v4:24.0.0'
implementation 'com.android.support:appcompat-v7:24.0.0'
implementation fileTree(include: ['*.jar'], dir: 'libs')
}
3.在gradle-wrapper.properties中添加如下代码
Android.useDeprecatedNdk=true
4.重新sync编译工程,如果Android Studio没有安装NDK工具或者原来的NDK版本不同的话,系统会提示更新安装适配版本的NDK,点击安装即可。
(如果没有提示安装NDK那么很有可能是某个步骤没有配置好,编译后运行依旧会报错)
编译完成以后会发现Project->Android视图下自动加入了jniLibs文件夹:
在实际设备中调用.so运行正常,问题解决!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!