2016-07-15 6 views
0

MapView를 부 풀리는 동안 Arcgis MapView는 일부 장치에서 오류를 제공합니다 (64 비트라고 생각합니다).Arcgis MapView : "libruntimecore_java.so"를 찾을 수 없습니다.

오류가

Binary XML file line #13: Binary XML file line #13: Error inflating class com.esri.android.map.MapView 

로하고 마지막 줄에서 시작 : 그것은 경우에 따라 라이브러리를 찾을 수 없습니다처럼

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.labs.arctest-1/base.apk"],nativeLibraryDirectories=[/data/app/com.labs.arctest-1/lib/arm64, /data/app/com.labs.arctest-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "libruntimecore_java.so" 

것 같습니다.

는 ArcGIS 버전 :

compile 'com.esri.arcgis.android:arcgis-android:10.2.7' 

간단한 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.labs.arctest.MainActivity"> 

    <com.esri.android.map.MapView 
     android:id="@+id/map" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     mapoptions.MapType="Streets" 
     > 
    </com.esri.android.map.MapView> 
</RelativeLayout> 

전체 로그 :

07-15 03:35:52.338 27987 27987 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.labs.arctest/com.labs.arctest.MainActivity}: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class com.esri.android.map.MapView 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.ActivityThread.access$900(ActivityThread.java:154) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.os.Looper.loop(Looper.java:152) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5497) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class com.esri.android.map.MapView 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at com.labs.arctest.MainActivity.onCreate(MainActivity.java:27) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6285) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: ... 9 more 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class com.esri.android.map.MapView 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: ... 17 more 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at java.lang.reflect.Constructor.newInstance(Native Method) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: ... 22 more 
07-15 03:35:52.338 27987 27987 E AndroidRuntime: Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.labs.arctest-1/base.apk"],nativeLibraryDirectories=[/data/app/com.labs.arctest-1/lib/arm64, /data/app/com.labs.arctest-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "libruntimecore_java.so" 

답변

1

64 비트 전용 프로젝트 종속성이 있습니까? Android는 혼합 된 기본 라이브러리를로드 할 수 없으며 32 비트 또는 64 비트를로드하는 방식으로 만 작동합니다. 그리고 10.2.8 런타임은 32 비트 만 사용할 수 있습니다. 따라서 앱에 이미 64 비트 라이브러리가로드되어 있다면 Esri 런타임을로드 할 수 없습니다. 그러나 64 비트 디바이스는 32 비트 라이브러리를 잘로드 할 수 있습니다.

이 문제를 해결하는 한 가지 방법은 64 비트 라이브러리를 제거하여 APK에 포함되지 않고 앱에로드되지 않도록하는 것입니다. 앱의 64 비트 종속성이 빌드에 직접 .so 개의 파일로 포함되어있는 경우 빌드에서 64 비트 폴더 (예 : \jniLibs\arm64-v8a) 만 제거하면됩니다. Android Studio에서 gradle을 사용하고 있고 종속성이 AAR에있는 경우 ABI splits described in the Android doc을 사용하여 64 비트 라이브러리를 제외 할 수 있다고 생각합니다. 예를 들어 Armv8 64 비트 라이브러리를 제외하려면 다음을 포함하도록 gradle 스크립트를 업데이트하십시오.

android { 
    ... 
    splits { 
    abi { 
     exclude 'arm64-v8a' 
    } 
    } 
} 

스플릿에는 몇 가지 옵션이 있습니다 (위의 doc 링크 참조).