2016-01-06 20 views
6

Tôi đang phát triển một ứng dụng Android sẽ sử dụng băng đeo Myo. Tôi muốn triển khai dịch vụ đó dưới dạng dịch vụ trợ năng, do đó cử chỉ được phát hiện bởi băng tay có thể, ví dụ: hướng nhà vvLỗi liên kết không hài lòng khi khởi tạo trung tâm Myo trên Android

Tôi đang cố gắng để khởi tạo các trung tâm, nhưng ứng dụng dừng với lỗi chồng sau:

01-06 23:42:41.222 11979-11979/eu.miko.myoid E/AndroidRuntime: FATAL EXCEPTION: main 
                  Process: eu.miko.myoid, PID: 11979 
                  java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/eu.miko.myoid-1/base.apk"],nativeLibraryDirectories=[/data/app/eu.miko.myoid-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libgesture-classifier.so" 
                   at java.lang.Runtime.loadLibrary(Runtime.java:367) 
                   at java.lang.System.loadLibrary(System.java:1076) 
                   at com.thalmic.myo.scanner.Scanner.<clinit>(Scanner.java:31) 
                   at com.thalmic.myo.Hub.init(Hub.java:201) 
                   at eu.miko.myoid.MyoidAccessibilityService.onCreate(MyoidAccessibilityService.java:21) 
                   at android.app.ActivityThread.handleCreateService(ActivityThread.java:2877) 
                   at android.app.ActivityThread.-wrap4(ActivityThread.java) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:148) 
                   at android.app.ActivityThread.main(ActivityThread.java:5417) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Đây là mã tôi sử dụng cho trung tâm khởi, theo tài liệu hướng dẫn Myo. Tôi đã thử đặt nó trong cả hai phương thức onCreate và onServiceConnected của dịch vụ trợ năng, lỗi xảy ra dù sao đi nữa.

Hub hub = Hub.getInstance(); 
    if (hub.init(this, getPackageName())) { 
     Intent intent = new Intent(this, ScanActivity.class); 
     startActivity(intent); 

     hub.setLockingPolicy(Hub.LockingPolicy.NONE); 

     hub.addListener(mListener); 
    } 
    else { 
     Log.e(TAG, "Could not initialize the Hub."); 
    } 

Tôi đang sử dụng SDK Android mới nhất của tôi. Thử nghiệm trên Nexus 5 với phần mềm mới nhất.

Đối với tôi, có vẻ như lỗi bên trong SDK, nhưng có lẽ đó là điều gì đó liên quan đến cấu hình của tôi? Bất kỳ trợ giúp sẽ được đánh giá cao.

Các mẫu được cung cấp trong SDK dường như không gặp phải vấn đề tương tự.

Về lý thuyết, các tập tin libgesture-classifier.so được thêm vào, thông qua như sau:

  1. tôi bao gồm Myo SDK trong dự án thông qua các tập tin build.gradle:

    dependencies { 
        ...  
        repositories { 
         maven { 
          // this must point to the myorepository distributed with the Myo SDK 
          url '../myorepository' 
         } 
        } 
    compile('com.thalmic:myosdk:[email protected]') 
    } 
    
  2. Các myorepository chứa myosdk-0.10.0.aar.

  3. nào, khi tôi kiểm tra nó như là một zip, chứa libs/mẹ đẻ-libs.jar

  4. nào, đến lượt nó khi xem xét như một zip, chứa a list of architecture folders, mỗi trong số đó có chứa các tập tin duy nhất libgesture- classifier.so

+0

Bạn có thêm tệp 'libgesture-classifier.so' vào ứng dụng của mình không? – geisshirt

+0

Có, xem chỉnh sửa trong câu hỏi :) –

+0

@ user2363767: Bạn đã tìm thấy giải pháp thích hợp cho điều này chưa? Tôi đã sao chép các tệp .so theo cách thủ công vào thư mục 'src/main/jniLibs' như một giải pháp. – JiTHiN

Trả lời

1

Tôi có thể khắc phục sự cố bằng cách chuyển về phiên bản trước của plugin gradle cho Android. Dường như có sự cố với thư viện gốc trong myosdk, chúng không được sao chép chính xác.

Chỉ cần chỉnh sửa tệp build.gradle từ dự án. Phiên bản 1.3.0 đã làm việc cho tôi.

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     **classpath 'com.android.tools.build:gradle:1.3.0'** 
    } 
} 
Các vấn đề liên quan