2016-11-19 14 views
5

Tôi đang cố gắng tích hợp React Native với Ứng dụng Android hiện có của tôi. Tôi nhận được ngoại lệ sau, khi khởi tạo React Native Screen:Phản hồi truy vấn gốc java.lang.UnsatisfiedLinkError: dlopen không thành công: "/data/data/{package}/lib-main/libgnustl_shared.so" là 32-bit thay vì 64-bit

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.snapdeal.main/lib-main/libgnustl_shared.so" is 32-bit instead of 64-bit

Ứng dụng chỉ gặp sự cố trên thiết bị 64 bit.

Theo nghiên cứu của tôi cho đến nay, tôi đã tìm thấy số này issue được báo cáo trên React Native Repo, nhưng đề xuất trong đề tài này không hữu ích vì tôi không sử dụng bất kỳ thư viện SO bên ngoài nào trong Ứng dụng hiện có.

Ngoài những điều trên, tôi đã nhận ra sự khác biệt về cấu trúc thư viện trên thiết bị mà Ứng dụng của tôi được cài đặt. Tôi đang so sánh cấu trúc của Ứng dụng của tôi so với ứng dụng bản gốc phản ứng.

Phản ứng bản demo App

[email protected]_x86_64:**/data/data/com.react.demo/lib** # ls 
libfb.so 
libfolly_json.so 
libglog.so 
libglog_init.so 
libgnustl_shared.so 
libicu_common.so 
libimagepipeline.so 
libjsc.so 
libreactnativejni.so 
libreactnativejnifb.so 

[email protected]_x86_64:/data/data/**com.react.demo**/lib-main # ls 
dso_deps 
dso_lock 
dso_manifest 
dso_state 

My App

[email protected]_x86_64:/data/data/**com.my.app**/lib-main # ls 
dso_deps 
dso_lock 
dso_manifest 
dso_state 
libfb.so 
libfolly_json.so 
libglog.so 
libglog_init.so 
libgnustl_shared.so 
libicu_common.so 
libimagepipeline.so 
libjsc.so 
libreactnativejni.so 
libreactnativejnifb.so 

Chia sẻ vài chi tiết về dự án của tôi:

package.json

{ 
    "name": "projectname", 
    "version": "1.0.0", 
    "description": "Native NPM", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "start": "node node_modules/react-native/local-cli/cli.js start" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "" 
    }, 
    "author": "Ishan D", 
    "license": "ISC", 
    "dependencies": { 
    "react": "^15.3.2", 
    "react-native": "^0.37.0", 
    "react-native-linear-gradient": "^1.5.15", 
    "rn-viewpager": "^1.1.3" 
    }, 
    "devDependencies": {} 
} 

phụ thuộc được sử dụng trong dự án có nguồn gốc android

ext { 
    compileSdkVersion = 24 
    buildToolsVersion = '24.0.2' 
    minSdkVersion = 16 
    targetSdkVersion = 24 
    supportLibrariesVersion = '23.0.1' 
    playServiceVersion = '9.0.2' 

    dep = [ 
      fabricPlugin   : 'io.fabric', 
      fabricMavenUrl  : 'https://maven.fabric.io/public', 
      fabricClasspath  : 'io.fabric.tools:gradle:1.+', 

      playServiceClasspath : 'com.google.gms:google-services:1.3.0-beta1', 
      playServicePlugin  : 'com.google.gms.google-services', 

      playServiceAppindexing: "com.google.android.gms:play-services-appindexing:$playServiceVersion", 
      playServiceLocation : "com.google.android.gms:play-services-location:$playServiceVersion", 
      playServiceVision  : "com.google.android.gms:play-services-vision:$playServiceVersion", 
      playServiceAuth  : "com.google.android.gms:play-services-auth:$playServiceVersion", 
      playServiceBase  : "com.google.android.gms:play-services-base:$playServiceVersion", 
      playServiceIdentity : "com.google.android.gms:play-services-identity:$playServiceVersion", 
      playServiceAnalytics : "com.google.android.gms:play-services-analytics:$playServiceVersion", 
      playServiceGcm  : "com.google.android.gms:play-services-gcm:$playServiceVersion", 

      underCouchClasspath : 'de.undercouch:gradle-download-task:2.0.0', 
      underCouchPluigin  : 'de.undercouch.download', 

      crashlytics   : 'com.crashlytics.sdk.android:crashlytics:[email protected]', 

      moengage    : 'com.moengage:moe-android-sdk:6.0.29', 

      supportV4    : "com.android.support:support-v4:$supportLibrariesVersion", 
      supportAppCompatV7 : "com.android.support:appcompat-v7:$supportLibrariesVersion", 
      supportCardviewV7  : "com.android.support:cardview-v7:$supportLibrariesVersion", 
      supportDesignV7  : "com.android.support:design:$supportLibrariesVersion", 

      okhttp    : 'com.squareup.okhttp:okhttp:2.5.0', 
      junit     : 'junit:junit:4.12', 
      mockito    : 'org.mockito:mockito-core:1.10.19' 
    ] 
} 

Bất kỳ đầu mối được đánh giá cao.

PS: Tôi biết rằng bản địa phản ứng không hỗ trợ các tệp nhị phân 64 bit và tôi không sử dụng bất kỳ thư viện bên ngoài nào.

Trả lời

10

Thêm dòng sau vào ứng dụng/gradle tập tin

defaultConfig { 
.... 

    ndk { 
     abiFilters "armeabi-v7a", "x86", 'armeabi', 'arm64-v8a' 
    } 

    packagingOptions { 
     exclude "lib/arm64-v8a/libgnustl_shared.so" 
    } 
} 

cũng chắc chắn rằng bạn làm việc với cùng một cổng.

adb reverse tcp:8081 tcp:8081 
+1

Đồng thời xem vấn đề này: https://github.com/facebook/react-native/issues/11027 – ADev

+1

Cổng phải làm gì với lỗi của OP? –

+1

cũng thêm "armeabi" vào abiFilters, nếu không có nó thì không. làm việc trên một số điện thoại như samsung s7, facebook nên làm tốt hơn. công việc thêm tất cả các bộ lọc. người ta cần phải thêm để đảm bảo điều này hoạt động trên tất cả các thiết bị. – amIT

Các vấn đề liên quan