2014-11-28 4 views
0

내가 최근 응용 프로그램 Qt의 일부 은 매우 간단 만들려고 노력했습니다 충돌, 어제 그것이 데스크톱 및 안드로이드 모두에서 제대로 작동하는 데 사용 (안드로이드 NDK를 사용하여, 나는 그것이 좋지 않다 알고 C++에서 안드로이드 앱을 만들려면 시도하고 싶습니다.) error imageQt는 안드로이드 NDK - 응용 프로그램이

가 유일한 I 재 구축, 응용 프로그램의 캐시 및 데이터를 청소 전화를 다시 시작되었다 발견 한 것은, n은 이런 것들을 하나가

을했다 :

오늘, 갑자기, 응용 프로그램의 출력은 다음과 같은 STH 말한다

+0

모든 관련 정보를 연결하지 말고 질문에 넣으십시오. – Michael

+0

휴대 전화에서 읽는 사용자의 경우 텍스트 스크린 샷이 끔찍합니다. ( –

+0

대상 SDK 버전은 무엇이며 휴대 전화는 어떤 버전입니까? –

답변

1

Qt 앱에는 리소스의 어딘가에 사용 된 .so 라이브러리 이름의 배열이 있습니다. 시작시 모든 .so 라이브러리가로드됩니다 (loadLibrary() 통해). 라이브러리가로드되는 순서는 중요합니다. 함수는 아직로드되지 않은 라이브러리에 정의 된 참조 함수를 사용할 수 없습니다. 순환 의존성을 구현하는 것은 까다 롭습니다. libszachy_android_1.so의 일부 기능 (? 그것은 바로 이름이 조금 이상하다) 부터 srand()를 아직로드되지 않은를 호출 것을 내가 볼 로그에서

; 로드리스트에서 나중에 언급 될지도 모르지만, loadLibrary()는 계획된 미래에 대해 알지 못합니다. 따라서, 당신은 이것을 얻습니다.

어제 코드가 작동했다면 변경된 것 같습니다. 버전 관리를 사용하는 경우 현재 버전과 어제 버전을 비교하여 차이점을 확인할 수 있습니다. 어쩌면, 당신은 (하중 목록 의미에서) 앞으로 참조를 삽입했습니다. OTOH, 때로 Eclipse와 make는 소스가 변경되었고 잘못된 빌드를 발견하지 못합니다. (필자는이를 관찰했지만 재현 할 수는 없습니다.) 휴대 전화에서 앱을 제거하려고 했습니까? 빌드 디렉터리 (rm *.so)의 기존 .so 파일을 모두 제거하려고 했습니까?

.so 모듈 중 하나가 손상되었을 수 있습니다. 오류가 발생해도 객체가 생성되고 후속 빌드에서 사용되는 경우가 있습니다 (적어도 빌드 결함을 설명 할 수있는 방법).

아마도 장치에 메모리가 남아 있지 않으며 .so를 올바르게 압축 해제 할 수 없습니다.

뿌리깊은 장치에서 adb shell으로 응용 프로그램 디렉토리를 검사하는 것이 좋습니다.

추신 : 당신은 간신히 읽을 수있는 스크린 샷을 게시했습니다. adb logcat 출력의 관련 부분으로 바꾸십시오 (사용 방법을 알고 싶으면, 먼저 수행해야 할 일은 adb logcatadb shell입니다).

관련 문제