2010-06-16 3 views
7

나는 운영자를 위해 일하고 있으며 Android 휴대 전화에 응용 프로그램을 미리로드합니다..so 라이브러리 파일이있는 미리로드 된 Android 애플리케이션은 업그레이드 할 수 없습니다.

그러나, 한 번 시장, 충돌에서 업그레이드 일부 사전로드 된 응용 프로그램.

문제는 이것이다 : - 응용 프로그램이 .so를 라이브러리 파일
포함 -
가 전화에 전체 응용 프로그램을 미리로드하기 위해을의 .so는 라이브러리 파일은/(lib 디렉토리에 별도로 배치 할 수있다 시스템/lib 디렉토리/libXXXXjni.so)
- 충돌의 원인 - 사전로드 된 응용 프로그램이 새로운 APK에 대신하는 .so 라이브러리 파일로, 시장에서 업그레이드 및 실행 이전 미리로드하는 .so 파일이 처음 발견, 발견되고 두 개의 .sof 파일의 내용이 다르기 때문에

제안 된 해결 방법이 있거나 도서관 검색에 대한 지식이있어 도움이 될 수 있습니다. 이거 해결해?

한 가지 가능한 솔루션은 단순히 라이브러리 파일의 이름을 바꿀 수 있습니다,하지만 충분? 사전에

감사합니다 ...

답변

0

당신이 미리로드 할 때의 애플리케이션 라이브러리를 넣어보십시오 라이브러리의 이름을 변경 /data/data/com.package.foobar/lib/libXXXXjni.so

것 작업. 아마도 응용 프로그램의 버전 번호를 .so 파일의 이름으로 사용하고있을 것입니다. 빌드가 더 복잡해집니다.

+0

모든 사전로드 상황에서 해당 장치가 해당/data/data 위치에있는 파일의 이름을 바꾸려면 루트 액세스 권한이 필요하지 않습니까? – Maximus

+0

업그레이드 된 버전에서 라이브러리가 새로운 이름을 얻게되었다고 생각했습니다. 이름 바꾸기는 개발자의 컴퓨터 (및 코드의 System.loadLibrary (...) 호출에서 발생합니다.) 가장 좋은 방법은/system/lib 대신 app의 lib 디렉토리에서 라이브러리를 미리로드하는 것입니다. – abh

관련 문제