библиотека недоступна для пространства имен "classloader-namespace" - PullRequest
0 голосов
/ 06 января 2020

Я хочу импортировать ниже библиотеки в моем Android Studio Project, они помещены в / system / lib64 / folder . Я получаю ошибку ниже

2020-01-06 13:23:31.358 5171-5171/org.strongswan.android E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.strongswan.android, PID: 5171
    java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/libstrongswan.so" needed or dlopened by "/system/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namespace"
        at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
        at java.lang.System.loadLibrary(System.java:1669)
        at org.strongswan.android.logic.CharonVpnService.<init>(CharonVpnService.java:730)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateService(AppComponentFactory.java:103)
        at android.app.ActivityThread.handleCreateService(ActivityThread.java:3740)
        at android.app.ActivityThread.access$1400(ActivityThread.java:238)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1803)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7073)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

на линии System.loadLibrary ("strongswan")

        System.loadLibrary("strongswan");

        if (MainActivity.USE_BYOD)
        {
            System.loadLibrary("tncif");
            System.loadLibrary("tnccs");
            System.loadLibrary("imcv");
        }

        System.loadLibrary("hydra");
        System.loadLibrary("charon");
        System.loadLibrary("ipsec");
        System.loadLibrary("androidbridge");
    }

1 Ответ

0 голосов
/ 31 марта 2020

Начиная с Nougat, Android предотвращает связывание во время выполнения частных символов из системных библиотек (см. этот пост в Android Разработчики). У вас есть два варианта:

  1. Включить эти библиотеки в ваш APK, чтобы вам не приходилось искать их в /system/lib/; или
  2. Измените ПЗУ Android, чтобы эти библиотеки считались опубликованными c. Это можно сделать, добавив эти библиотеки в /system/etc/public.libraries.txt.
...