2014-02-27 2 views
0

매핑 (ArcGIS)에 여러 .so 라이브러리를 사용하는 수동으로 Google Play를 배포하는 기업용 앱이 있습니다. 그러나 libs 폴더의 .so 파일 (arm, armv7a, x86)은 .apk 크기를 3MB에서 21MB로 줄입니다. 특히 .so 파일 중 하나를 제거 (해당 아키텍처에 대한 지원 제거)하거나 아키텍처 당 하나의 .apk를 사용하고 싶지 않습니다..so에서 .so 라이브러리를 분리합니다.

누구나 각 업데이트 .apk에 .so 파일을 포함하지 않고 내 앱을 업데이트 할 수있는 방법을 생각할 수 있습니까?

답변

0

예. 앱의 Java 부분에 적절한 .so 파일을 수동으로 다운로드하여 앱의 내부 저장 폴더에 넣고 실행 가능으로 표시 할 수 있습니다.

그런 다음 System.load() 및 System.loadLibrary() 및 트리밍 된 라이브러리 이름 대신 .so 파일의 전체 경로 이름으로로드해야합니다.

가장 큰 문제는 이제 자신이 ABI 자체와 일치하는 데 책임이 있으며 더 중요한 것은 앱 이름에 무언가를 할 수있는 수정 된 라이브러리 또는 임 포스터 라이브러리를 속인 것에 대한 자신의 보호를 제공한다는 것입니다. 그것의 권한을 사용합니다.

물론 네이티브 메소드를 설치하기 전에 호출하지 않도록주의해야합니다.

는 또한 메인의 .apk로 (인증서와 일치하는) 자신의 골격의 각 공유 사용자 ID를 가지고 .apk 파일 바이너리 자산으로하는 .so 파일을 제공 고려할 수

또는 당신은 단순히 플랫폼 별 만들 수 .apk는 각 대상에 대해 하나의 .so 만 포함하고 배포 시스템에서 올바른 대상을 선택하게하십시오 (업그레이드 문제는 도움이되지 않지만).

+0

고마워요, 그걸로 가야합니다 – user3330836

+0

첫 번째 방법 (.so 별도로 유지하고 System.load()를 사용하여로드)에서 가야했습니다. 안타깝게도 ArcGIS는 라이브러리로드를 내부적으로 수행하므로 수동으로 lib를로드하더라도 ArcGIS가 .so iteslf를로드하려고 할 때 여전히 충돌하고 레코딩됩니다. .so를 app/devices lib 폴더로 복사하려고했으나 시가 (읽기 전용) – user3330836

+0

로드 할 수있는 작은 더미 파일을 만들 수 있습니다. 그렇지 않으면 실패를 캐치하려고 할 수 있습니다 (실제로는 놀라움). 치명적입니다 - 일반적으로 그렇지 않습니다) 원본이 아니더라도이 라이브러리의 양식을 수정할 수 있습니다. –

관련 문제