Ładowanie rodzimej biblioteki w teście JUnit dla Androida
Wygenerowałem bibliotekę natywną za pomocąndk-build
które mogę załadować i używać w mojej aplikacji na Androida. Chcę jednak napisać testy na tej części mojej aplikacji.
Podczas wywoływania funkcji natywnej w moich testach otrzymuję ten komunikat wyjątku:
java.lang.UnsatisfiedLinkError: no process in java.library.path
...gdzieprocess
to moja rodzima biblioteka do importowania, nazwanalibprocess.so
.
Używam Roboelectric do moich testów i prowadzę ten konkretny za pomocąRobolectricTestRunner
, jeśli to robi różnicę.
Jak mogę uzyskać, aby mój projekt testowy „zobaczył” bibliotekę macierzystą?
Edytować: Ładuję bibliotekę w mojej aplikacji tak:
static {
System.loadLibrary("process");
}
public static native int[] process(double[][] data);
powołanieProcess.process(array)
działa dobrze w aplikacji (biblioteka jest załadowana), ale kończy się niepowodzeniem po uruchomieniu z testów z wyjątkiem podanym powyżej.
Edytuj 2: Jeśli ustawię-Djava.library.path="<the directory of libprocess.so>"
jako argument VM, a następnie:
System.out.println(System.getProperty("java.library.path"));
pokazuje ścieżkę, którą ustawiłem, ale nadal otrzymuję ten sam wyjątek. Ustawiam katalog jako:
<project-name>/libs/x86
... ale jako absolutna ścieżka.