相关疑难解决方法(0)

在我的情况下,System.loadLibrary(...)找不到本机库

我想使用来自另一个 Android项目的现有本机库,所以我只是将NDK构建库(libcalculate.so)复制到我的新Android项目中.在我的新Android项目中,我创建了一个文件夹libs/armeabi/并将libcalculate.so放在那里.有没有 JNI /文件夹.我的测试设备有ARM架构.

在我的java代码中,我通过以下方式加载库:

  static{
    System.loadLibrary("calculate");
  }
Run Code Online (Sandbox Code Playgroud)

当我运行我的新Android项目时,我收到错误:

java.lang.UnsatisfiedLinkError:  ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
Run Code Online (Sandbox Code Playgroud)

所以,正如错误所说,复制的本机库不在/ verdor/lib或/ system/lib中,如何在我的情况下解决这个问题?

(我解压缩了apk包,在lib /下有libcalculate.so)

==== UPDATE =====

我还尝试在项目根目录下创建一个jni /文件夹,并在jni /下添加一个Android.mk文件.Android.mk的内容是:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := libcalculate
LOCAL_SRC_FILES := libcalculate.so
include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

然后,在项目根目录下,我执行了ndk-build.之后,armeabi /和armeabi-v7a /目录由ndk-build生成(文件夹中有libcalculate.so).

然后我运行我的maven成功构建项目.在最终的apk包中,有:

lib/armeabi/libcalculate.so
lib/armeabi-v7a/libcalculate.so
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的应用程序时,同样的错误抛出:

java.lang.UnsatisfiedLinkError:  ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
Run Code Online (Sandbox Code Playgroud)

android android-ndk

80
推荐指数
8
解决办法
11万
查看次数

在Android应用程序中添加优酷播放器库

我必须在我的Android应用程序中使用优酷播放器库并执行所需的一切.加入YoukuPlayerConfig我的Application班级

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        YoukuPlayerConfig.setLog(false);
        YoukuPlayerConfig.setClientIdAndSecret(CLIENT_ID_WITH_AD, CLIENT_SECRET_WITH_AD);
        YoukuPlayerConfig.onInitial(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的AndroidManifest.xml文件中添加所有权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
Run Code Online (Sandbox Code Playgroud)

但收到此错误:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.randa.android-1/base.apk"],nativeLibraryDirectories=[/data/app/com.randa.android-1/lib/x86, /data/app/com.example.android-1/base.apk!/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libnetcache.so"
        at java.lang.Runtime.loadLibrary0(Runtime.java:972)
        at java.lang.System.loadLibrary(System.java:1530)
        at com.youku.uplayer.NetCache.<clinit>(NetCache.java:17)
        at com.youku.uplayer.NetCache.SetUserAgent(Native Method)
        at com.youku.uplayer.PlayerNetCache.setUserAgent(PlayerNetCache.java:32)
        at com.youku.cloud.playercore.PlayerCoreManager.initNetCache(PlayerCoreManager.java:48) …
Run Code Online (Sandbox Code Playgroud)

android video-player youku

8
推荐指数
1
解决办法
148
查看次数

在64位android设备上找不到.so文件

使用aviary android sdk使用android studio和gradle build.应用程序生成在具有32位架构的所有设备上运行正常.

相同的应用程序在64位设备中给出以下错误[例如.索尼C4]

    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file 
"/data/app/com.myapp/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libaviary_moalite.so"
Run Code Online (Sandbox Code Playgroud)

gredle.build部分

dependencies {
    ...
    compile 'com.android.support:multidex:1.0.0'
    compile 'com.facebook.fresco:fresco:0.8.1+'
    compile 'com.facebook.fresco:imagepipeline-okhttp:0.8.1+'
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.adobe.creativesdk:image:4.0.0'
}
Run Code Online (Sandbox Code Playgroud)

参考那没用

使用Android Studio找不到ARM64 NDK本机库(1.3 RC)

如果使用任何解决方案,则出现相同的错

如何在64位Android设备上使用32位本机库

得到错误就像

Error:(16, 0) Error: NDK integration is deprecated in the current plugin.  Consider trying the new experimental plugin.  For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental.  Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
Run Code Online (Sandbox Code Playgroud)

我不确定我在做什么错,或者根本不支持.

android android-ndk aviary adobecreativesdk

4
推荐指数
2
解决办法
7879
查看次数