相关疑难解决方法(0)

mylib.so有文本重定位.这会浪费内存并且存在安全风险.请修理

我的Android应用程序(使用本机库)在Android 4.4上打印此警告:

链接器mylib.so具有文本重定位.这会浪费内存并且存在安全风险.请修理.

你知道它是什么以及如何解决它吗?谢谢,

android native android-4.4-kitkat

41
推荐指数
1
解决办法
6万
查看次数

在gradle中使用目标sdk版本23时,ZBAR条形码扫描库无法正常工作

我在我的项目中使用zbar扫描程序库.更新到sdk 23后,Marshmallow扫描仪无法正常工作.以下是gradle文件.如果我将targetSdkVersion设置为23以外的任何东西,扫描仪正在工作.

以下是gradle文件:

    apply plugin: 'com.android.application'

    android {
    compileSdkVersion 15
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "net.sourceforge.zbar.android.CameraTest"
        minSdkVersion 9
        targetSdkVersion 23
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),  'proguard-rules.txt'
        }
    }
  }

 dependencies {
    compile files('libs/zbar.jar')
 }
Run Code Online (Sandbox Code Playgroud)

以下是我获得异常日志的唯一一行:

10-15 21:19:00.682 7719-7719/? E/AndroidRuntime: FATAL EXCEPTION: main
10-15 21:19:00.682 7719-7719/? E/AndroidRuntime: Process: net.sourceforge.zbar.android.CameraTest, PID: 7719
10-15 21:19:00.682 7719-7719/? E/AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/net.sourceforge.zbar.android.CameraTest-2/lib/arm/libiconv.so: has text relocations
10-15 21:19:00.682 7719-7719/? E/AndroidRuntime:     at java.lang.Runtime.loadLibrary(Runtime.java:372)
10-15 21:19:00.682 7719-7719/? E/AndroidRuntime:     at java.lang.System.loadLibrary(System.java:1076) …
Run Code Online (Sandbox Code Playgroud)

sdk android zbar-sdk zbar android-6.0-marshmallow

9
推荐指数
1
解决办法
5148
查看次数

由于targetSdkVersion(armeabi-v7a和libcryptopp.so)找不到库

我创建了一个示例项目,它使用Crypto ++的本机C++库和NDK来生成一些ECDH密钥对.你可以在这里找到这个项目.

这个项目在大多数Android设备上都运行得很好(在少数4.4和5.0设备上运行).但是我最近在运行Android 6.0.1的Nexus 5和Nexus 7上运行了该应用程序,该应用程序因以下错误而崩溃.

java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libcryptopp.so" not found
Run Code Online (Sandbox Code Playgroud)

我不确定这里发生了什么,因为该项目显然有这些文件,他们应该没问题.这似乎可能是某种与NDK相关的问题,但我不太确定.

我尝试删除armeabi-v7a文件夹,这迫使该应用程序使用Nexus设备上的armeabi文件,但它也找不到这些文件.

我打开了apk,所有正确的.so文件都在那里,并带有相应的文件夹.

不确定这是Android Marshmallow问题,Nexus架构问题还是某些.so文件编译问题.我是使用NDK的新手,所以我希望能找到解决这个问题的想法.

编辑:看了一下后,看起来这是一个Android Marshmallow问题.这里提到一个相关的问题.改变我targetSdkVersion22"修复"崩溃.但显然这不是一个非常友好的解决方案.

显然在Android Marshmallow上,他们从OpenSSL切换到BoringSSL.这可能是根本问题,因为我认为Crypto ++使用OpenSSL的功能并链接它?

还在四处寻找能让我真正解决的问题targetSdkVersion 23.可能会尝试本文中列出的一些解决方案,看看会发生什么.

编辑2:Crypto ++没有链接OpenSSL所以那就是理论.这里的帮助仍然很感激.

java java-native-interface android crypto++ android-ndk

5
推荐指数
0
解决办法
878
查看次数