우리는 네이티브 라이브러리를로드하는이 앱을 가지고 있으며이 라이브러리는 네이티브 메소드를 제공합니다. 일부 휴대 전화에서는 (특히 느린 것) 문제가 발생합니다. UnsatisfiedLinkError는 (필자가 생각하기에) 라이브러리가 여전히 "로드 중"이고 메서드가 이라고 가정 할 때마다 발생합니다.UnsatisfiedLinkError Android
이 문제를 해결할 방법이 있습니까? 라이브러리가 이미로드되었는지 확인하는 것과 같습니다.
우리는 네이티브 라이브러리를로드하는이 앱을 가지고 있으며이 라이브러리는 네이티브 메소드를 제공합니다. 일부 휴대 전화에서는 (특히 느린 것) 문제가 발생합니다. UnsatisfiedLinkError는 (필자가 생각하기에) 라이브러리가 여전히 "로드 중"이고 메서드가 이라고 가정 할 때마다 발생합니다.UnsatisfiedLinkError Android
이 문제를 해결할 방법이 있습니까? 라이브러리가 이미로드되었는지 확인하는 것과 같습니다.
느린 장치에서도 System.loadLibrary()
에 대한 호출은 매우 빠릅니다. 응용 프로그램이 멀티 스레드로 실행되거나 정적 생성자를 포함하는 클래스가 일부 UI 이벤트에 대한 응답으로 만로드되는 경우 경쟁 조건이 발생할 수 있습니다. 현재 존재하는 네이티브 라이브러리에 의존하는 일부 클래스는 충돌을 일으킬 수 있습니다.
네이티브 메소드가있는 모든 클래스에 System.loadLibrary()
을 호출하는 정적 생성자를 사용할 수 없습니다. 로드 된 네이티브 라이브러리에 대한 경고가 표시 될 수 있지만 이는 부정적 결과를 초래하지 않습니다.
lib 디렉토리에 넣는 시스템 설치 프로그램 대신에 사용자 정의 Java 코드를 사용하여 처음으로 응용 프로그램을 실행할 때 기본 라이브러리를 files 디렉토리로 추출하는 경우가 있습니다. 이 작업은 특별한주의를 기울여 수행해야하며 모든 활동 (말장난 의도)은 libs (일반적으로 APK의 assets 폴더에서) 추출이 완료 될 때까지 기다려야합니다.
일부 장치의 경우 시스템 라이브러리에서 라이브러리 이름을 사용할 수 있습니다. 이 경우 System.loadLibrary()
은 앱이 아닌 /system/lib에서 라이브러리를로드합니다. 그러나 이것은 3 초 지연의 효과를 거의 설명 할 수 없습니다.
예, 경쟁 조건이있을 수 있습니다. 그러나 이상한 점은 UnsatisfiedLinkError가 발생하지 않았던 호출 된 원시 메소드 중 하나입니다. 그리고 다른 원시 메소드를 호출하면 UnsatifiedLinkError가 발생합니다. 그러나 세 번째 사례에 대해서는 약간의 지연이있을 경우 실행되는 것처럼 문제가되지 않는 것으로 보입니다. 내 문제는 귀하가 언급 한 첫 번째 사례로 더 많은 것을해야한다고 생각합니다. 그러나 나는 어떻게 진행해야하는지 확신 할 수 없다. 답장 보내 주셔서 감사합니다. 안녕하세요. – hadez30
호출 된 네이티브 메소드 중 하나가 UnsatisfiedLinkError를 발생시키지 않았습니다.그리고 다른 네이티브 메소드를 호출하면, UnsatifiedLinkError_가 실제로이 사실을 알게됩니다. 네이티브 메소드를 호출하기 직전과 직후에 로그 메시지를 포함하는 (필터링 된)'logcat -v threadtime'을 제공하십시오. –
문제는 (아직 미확인) 것으로 보이고, 두 번째 방법 (UnsatisfiedLinkErro를 유발하는 방법)이 1 일 전에 호출됩니다. 다음과 같습니다 : ApiClass.Start() - API를 시작한다고 가정합니다. ApiClass.DoSomething(). 내가 생각하는 것은 ApiClass.DoSomething()이 먼저 호출되었습니다. – hadez30
네이티브 라이브러리가로드되는 방식을 코드로 게시 할 수 있습니까? 나는 보통 정적 범위를 사용합니다. – mar3kk
라이브러리는 .jar 파일에서로드됩니다. 다만, 라이브러리가 일부 전화기에서는 정상적으로로드되고 이러한 문제가 발생하지 않는다는 점을 지적하십시오. 여기에 코드가 있습니다. static { System.loadLibrary ("libraryBeingLoaded"); } – hadez30
라이브러리가 실행중인 아키텍처 용으로 컴파일되어 있습니까? ARMEABI v7 버전 만 포함하고 ARMEABI 버전을 포함하지 않으면 어떻게 될까요? ARMEABI 아키텍처에서는 작동하지 않습니다. – mar3kk