2012-04-07 2 views
2

여기 상황이 있습니다. 다른 애플 리케이션에서 재배포하기 위해 기본 라이브러리를 구축했습니다. 우리는 ARMv7 NEON을 사용하기 때문에 두 가지 버전의 라이브러리를 제공합니다. 하나는 대부분의 장치 용이고 다른 하나는 ARMv5/ARMv6 용 "폴백"제한된 기능 버전입니다. 지금까지 그렇게 좋았고 이것은 잘 돌아갔다.Android 4.0에서 포함 된 라이브러리에 대한 잘못된 eabi의 압축을 푸십시오.

그러나 어떤 이유로 Android 4.0.3이 설치된 Nexus S에서 새로 생성 된 앱이 라이브러리의 잘못된 버전 (armeabi-v7a 대신 armeabi)을 선택합니다.

디바이스 파일 시스템을 파고 들면, /data/app/my_app.apk에 올바른 버전의 라이브러리가 포함되어 있습니다. 그러나 Android가/data/data/my_app로 추출하면 /data/data/my_app/lib/my_lib.so가 armeabi 버전이라는 것을 알 수 있습니다. 그러나, 이상하게도 /data/data/my_other_app/lib/my_lib.so가 올바른 armeabi-v7a 버전입니다.

그래서 질문은 다음과 같습니다. 1) WTF ?? 2) Android에서 APK에서 추출 할 eabi를 어떻게 결정합니까?

+0

나는 또한 그 my_app.apk을 언급해야한다는 안드로이드 2.2.1 전화에 완벽하게 실행됩니다. 질문 1로 돌아갑니다. – tomwhipple

답변

2

예, 이것은 ICS의 알려진 버그입니다. 잘못된 라이브러리를 선택합니다. 여기에 대한

읽기 :

+0

이것은 무슨 일이 일어나고있는 것처럼 보이지만 문제는 여전히 남아 있습니다 : 한 번에 문제가 발생하고 두 번 모두 동일한 묶음 라이브러리를 사용하는 경우 다른 문제가 발생하지 않는 이유는 무엇입니까? – tomwhipple

+0

첫 번째 링크에서는 armeabi-v7a에서 언팩 된 라이브러리에 대해 apk 아카이브의 .so 파일 순서에 따라 달라집니다. 어쩌면 그렇게 될 것입니다. –

+0

그건 의미가 있지만, 순서가 각 프로젝트 내에서 일관되고 (그리고 일관되게 다른) 이상한 것 같습니다 ... 저는 문제없이 작동하는 응용 프로그램의 여러 버전을 만들었습니다. 하지만 별도의 기능 라이브러리를 사용하는 것이 효과적 인 것처럼 보이므로 앞으로 더 많이 추구하지 않을 것입니다. 링크 주셔서 감사합니다! – tomwhipple

관련 문제