失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android Studio引入.so文件的正确姿势 以及调用.so 文件时报错has text relocations 解决

Android Studio引入.so文件的正确姿势 以及调用.so 文件时报错has text relocations 解决

时间:2019-09-21 03:27:13

相关推荐

Android Studio引入.so文件的正确姿势 以及调用.so 文件时报错has text relocations 解决

首先在src同级目录下创建libs目录讲需要的.so复制到这里效果如图

然后在app级别的build.gradle配置lib路径,效果如果

完整代码如下:

apply plugin: 'com.android.application'android {compileSdkVersion 24buildToolsVersion "25.0.1"defaultConfig {applicationId "com.liberation.idcarread"minSdkVersion 15targetSdkVersion 24versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles 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)}sourceSets {main {jniLibs.srcDirs = ['libs']}}}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:24.2.1'testCompile 'junit:junit:4.12'}

至此配置完成点击sync即可正常使用。编译运行过程遇到*.so: has text relocations 说明编译.so文件时使用了较低版本sdk 版本 此时降低build.gradle的targetSdkVersion 版本为22以及以下即可 我们这里改为22 最终效果如下

运行时又出现一个异常

**java.lang.UnsatisfiedLinkError: No implementation found for int com.liberation.idcarread.ivsign.IDCReaderSDK.wltInit(java.lang.String) (tried Java_com_liberation_idcarread_ivsign_IDCReaderSDK_wltInit and Java_com_liberation_idcarread_ivsign_IDCReaderSDK_wltInit__Ljava_lang_String_2)**

解决方法:按照官方Demo放好包名路径。包名一定要跟原来的一模一样负责无法调用!

如果觉得《Android Studio引入.so文件的正确姿势 以及调用.so 文件时报错has text relocations 解决》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。