Android의 두 번째 프로젝트에서 .so를 사용하는 방법은 무엇입니까?

텔로 페나 바레 이로

JNI와 함께 네이티브 코드를 사용하는 Android 앱을 만들고 있는데 질문이 있습니다.

.so 라이브러리를 만들기 위해 C ++로 코드를 작성했습니다. 그런 다음이 .so를 내 프로젝트에서 사용하고 Nexus 5에서는 잘 작동하지만 다른 장치에서 시도하면 앱이 충돌합니다.

나는 많은 테스트를했고 내 프로젝트에서 this .so를 사용하여 실패했지만 nexus 5에서는 Ok이고 다른 장치에서는 그렇지 않기 때문에 모르겠습니다.

이것은 내 Android.mk입니다.

LOCAL_PATH := $(call my-dir)

# Create `DSP-prebuilt` local prebuilt library from `DSP.so`
include $(CLEAR_VARS)
LOCAL_MODULE            := DSP-prebuilt
LOCAL_SRC_FILES         := lib/libDSP.so
LOCAL_EXPORT_C_INCLUDES := C:\libreriasSISTOLE\SP++3.0\SP++3.0\include
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_SRC_FILES  := nativo.cpp Parameters.cpp Pre_proc_mono.cpp Calc_ToF_low.cpp Runnable.cpp Trilateracion.cpp Tracking.cpp qr_solve.cpp r8lib.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl 
LOCAL_MODULE     := native_code
# Reference the local prebuilt:
LOCAL_SHARED_LIBRARIES := DSP-prebuilt
include $(BUILD_SHARED_LIBRARY)

그리고 이것은 내 logcat :

01-23 14:42:12.556: E/AndroidRuntime(19380): FATAL EXCEPTION: main
01-23 14:42:12.556: E/AndroidRuntime(19380): java.lang.ExceptionInInitializerError
01-23 14:42:12.556: E/AndroidRuntime(19380):    at com.sistoleaudiocapture.Sistole_main.onCreate(Sistole_main.java:62)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.Activity.performCreate(Activity.java:5244)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2037)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2098)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.ActivityThread.access$600(ActivityThread.java:138)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.os.Looper.loop(Looper.java:137)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at android.app.ActivityThread.main(ActivityThread.java:4905)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at java.lang.reflect.Method.invokeNative(Native Method)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at java.lang.reflect.Method.invoke(Method.java:511)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at dalvik.system.NativeStart.main(Native Method)
01-23 14:42:12.556: E/AndroidRuntime(19380): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1891]:   217 could not load needed library 'libDSP.so' for 'libnative_code.so' (load_library[1093]: Library 'libDSP.so' not found)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at java.lang.Runtime.loadLibrary(Runtime.java:370)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at java.lang.System.loadLibrary(System.java:535)
01-23 14:42:12.556: E/AndroidRuntime(19380):    at com.sistoleaudiocapture.Processing.<clinit>(Processing.java:11)
01-23 14:42:12.556: E/AndroidRuntime(19380):    ... 15 more

마지막으로 이것은 네이티브 라이브러리를로드하는 내 Processing 클래스입니다.

package com.sistoleaudiocapture;
import android.util.Log;
public class Processing {

    private long retorno;
    private double prueba[];

    static {
        System.loadLibrary("native_code");
    }

    public Processing() {
        retorno = init_variables();

    }

    public double[] prueba(byte[] data, int lenbytes) {

        prueba = prueba_nativa(retorno, data, lenbytes);

        return (prueba);

    }

    private static native long init_variables();

    private static native double[] prueba_nativa(long retorno, byte[] data,
            int lenbytes);

}

[해결됨]

System.loadLibrary("DSP");네이티브 라이브러리를로드하기 전에 Processing 클래스에 추가 했습니다.

삼하 인

217 could not load needed library 'libDSP.so' for 'libnative_code.so' (load_library[1093]: Library 'libDSP.so' not found

종속성을 미리로드해야합니다. 그것들도 존재하는지 확인하십시오.

static {
    System.loadLibrary("DSP");
    System.loadLibrary("native_code");
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 번째 쿼리에서 첫 번째 쿼리의 결과를 사용하는 방법은 무엇입니까?

분류에서Dev

awk를 사용하여 첫 번째 열과 두 번째 열의 첫 번째 줄을 단일 열로 인쇄하는 방법은 무엇입니까?

분류에서Dev

WooCommerce 제품에 (두 번째) 사용자 정의 SKU 필드를 추가하는 방법은 무엇입니까?

분류에서Dev

Java의 두 번째 줄에서 CSV를 읽는 방법은 무엇입니까?

분류에서Dev

첫 번째 API 호출의 데이터를 사용하고 두 번째 API 호출에서 사용하는 방법은 무엇입니까?

분류에서Dev

의사 요소를 사용할 때 텍스트의 두 번째 줄을 첫 번째 줄에 정렬하는 방법은 무엇입니까?

분류에서Dev

두 번째 배열의 첫 번째 배열에서 객체를 찾는 방법은 무엇입니까? Swift iOS

분류에서Dev

CHARINDEX 및 SUBSTRING을 사용하여 두 번째와 세 번째 "_"사이의 특정 텍스트를 추출하는 방법은 무엇입니까?

분류에서Dev

두 번째 서버의 키로 다른 서버를 사용하여 서버에 SSH를 사용하는 방법은 무엇입니까?

분류에서Dev

C #에서 두 프로젝트를 결합하는 방법 (1ts 프로젝트에서 두 번째 프로젝트를 열고 두 번째 프로젝트에서 첫 번째 프로젝트를 엽니 다)

분류에서Dev

중첩 된 ngRepeat의 두 번째 ngRepeat에 필터를 적용하는 방법은 무엇입니까?

분류에서Dev

중첩 된 ngRepeat의 두 번째 ngRepeat에 필터를 적용하는 방법은 무엇입니까?

분류에서Dev

XSLT의 두 번째 xml 입력에서 변수를 사용하여 하나의 xml 입력을 수정하는 방법은 무엇입니까?

분류에서Dev

App Script / JavaScript를 사용하여 Google 스프레드 시트의 두 번째 탭에 액세스하는 방법은 무엇입니까?

분류에서Dev

angular2 앱에서 두 번째 라우터 콘센트를 사용하는 방법은 무엇입니까?

분류에서Dev

FabricJS를 사용하여 Textbox 요소의 두 번째 줄에서 텍스트를 선택하는 방법은 무엇입니까?

분류에서Dev

첫 번째 사전의 값을 두 번째 사전의 값에 중첩하는 방법은 무엇입니까?

분류에서Dev

Django의 쿼리 세트에서 두 번째 마지막 레코드를 얻는 방법은 무엇입니까?

분류에서Dev

Eclipse에서 두 Android 프로젝트간에 클래스를 공유하는 방법은 무엇입니까?

분류에서Dev

하나의 배열을 정렬하고 키 순서를 사용하여 PHP에서 두 번째 배열을 정렬하는 방법은 무엇입니까?

분류에서Dev

Jmeter : Regx를 사용하여 두 번째 줄에있는 값을 검색하는 방법은 무엇입니까?

분류에서Dev

하나의 저장소에서 두 개의 작업 프로젝트를 얻는 방법은 무엇입니까?

분류에서Dev

Javascript의 체인 함수에서 두 번째 함수를 먼저 실행하는 방법은 무엇입니까?

분류에서Dev

Javascript에서 7 자리 숫자의 두 번째 자리를 편집하는 방법은 무엇입니까?

분류에서Dev

컨테이너 상단에서 두 번째 수준의 navbar를 표시하는 방법은 무엇입니까?

분류에서Dev

iOS의 두 번째 Scrollview에서 FirstScrollview 이미지를 표시하는 방법은 무엇입니까?

분류에서Dev

apigee에서 ExtractVariables 정책을 사용하여 응답으로 반환 된 xml 항목 목록의 두 번째 요소를 읽는 방법은 무엇입니까?

분류에서Dev

* 포인터를 사용하여 함수에서 두 번째 값을 얻는 방법은 무엇입니까?

분류에서Dev

SQL을 사용하여 postgre SQL에서 두 번째 단어를 바꾸는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    두 번째 쿼리에서 첫 번째 쿼리의 결과를 사용하는 방법은 무엇입니까?

  2. 2

    awk를 사용하여 첫 번째 열과 두 번째 열의 첫 번째 줄을 단일 열로 인쇄하는 방법은 무엇입니까?

  3. 3

    WooCommerce 제품에 (두 번째) 사용자 정의 SKU 필드를 추가하는 방법은 무엇입니까?

  4. 4

    Java의 두 번째 줄에서 CSV를 읽는 방법은 무엇입니까?

  5. 5

    첫 번째 API 호출의 데이터를 사용하고 두 번째 API 호출에서 사용하는 방법은 무엇입니까?

  6. 6

    의사 요소를 사용할 때 텍스트의 두 번째 줄을 첫 번째 줄에 정렬하는 방법은 무엇입니까?

  7. 7

    두 번째 배열의 첫 번째 배열에서 객체를 찾는 방법은 무엇입니까? Swift iOS

  8. 8

    CHARINDEX 및 SUBSTRING을 사용하여 두 번째와 세 번째 "_"사이의 특정 텍스트를 추출하는 방법은 무엇입니까?

  9. 9

    두 번째 서버의 키로 다른 서버를 사용하여 서버에 SSH를 사용하는 방법은 무엇입니까?

  10. 10

    C #에서 두 프로젝트를 결합하는 방법 (1ts 프로젝트에서 두 번째 프로젝트를 열고 두 번째 프로젝트에서 첫 번째 프로젝트를 엽니 다)

  11. 11

    중첩 된 ngRepeat의 두 번째 ngRepeat에 필터를 적용하는 방법은 무엇입니까?

  12. 12

    중첩 된 ngRepeat의 두 번째 ngRepeat에 필터를 적용하는 방법은 무엇입니까?

  13. 13

    XSLT의 두 번째 xml 입력에서 변수를 사용하여 하나의 xml 입력을 수정하는 방법은 무엇입니까?

  14. 14

    App Script / JavaScript를 사용하여 Google 스프레드 시트의 두 번째 탭에 액세스하는 방법은 무엇입니까?

  15. 15

    angular2 앱에서 두 번째 라우터 콘센트를 사용하는 방법은 무엇입니까?

  16. 16

    FabricJS를 사용하여 Textbox 요소의 두 번째 줄에서 텍스트를 선택하는 방법은 무엇입니까?

  17. 17

    첫 번째 사전의 값을 두 번째 사전의 값에 중첩하는 방법은 무엇입니까?

  18. 18

    Django의 쿼리 세트에서 두 번째 마지막 레코드를 얻는 방법은 무엇입니까?

  19. 19

    Eclipse에서 두 Android 프로젝트간에 클래스를 공유하는 방법은 무엇입니까?

  20. 20

    하나의 배열을 정렬하고 키 순서를 사용하여 PHP에서 두 번째 배열을 정렬하는 방법은 무엇입니까?

  21. 21

    Jmeter : Regx를 사용하여 두 번째 줄에있는 값을 검색하는 방법은 무엇입니까?

  22. 22

    하나의 저장소에서 두 개의 작업 프로젝트를 얻는 방법은 무엇입니까?

  23. 23

    Javascript의 체인 함수에서 두 번째 함수를 먼저 실행하는 방법은 무엇입니까?

  24. 24

    Javascript에서 7 자리 숫자의 두 번째 자리를 편집하는 방법은 무엇입니까?

  25. 25

    컨테이너 상단에서 두 번째 수준의 navbar를 표시하는 방법은 무엇입니까?

  26. 26

    iOS의 두 번째 Scrollview에서 FirstScrollview 이미지를 표시하는 방법은 무엇입니까?

  27. 27

    apigee에서 ExtractVariables 정책을 사용하여 응답으로 반환 된 xml 항목 목록의 두 번째 요소를 읽는 방법은 무엇입니까?

  28. 28

    * 포인터를 사용하여 함수에서 두 번째 값을 얻는 방법은 무엇입니까?

  29. 29

    SQL을 사용하여 postgre SQL에서 두 번째 단어를 바꾸는 방법은 무엇입니까?

뜨겁다태그

보관