Android Studio - problem z biblioteką

0

Witam. Mam problem z dodaną biblioteką w Android Studio. Oto mój program.

package com.example.local_adm.myapplication8;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.boschrexroth.mlpi.*;

import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity {
    Button b_connect;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b_connect = (Button) findViewById(R.id.button);

        b_connect.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v){
                btn_connection_Clicked();
            }
        });
    }
    private void btn_connection_Clicked(){
        MlpiConnection m_connection = new MlpiConnection();

    }
}

Zaimplementowałem bibliotekę javamlpi.jar w której to mam MlpiConnection, lecz po naciśnięciu przycisku "connect" aplikacja zostaje zatrzymana i wyrzuca błędy:

01-22 03:58:26.526 27021-27021/com.example.local_adm.myapplication8 E/AndroidRuntime: FATAL EXCEPTION: main
                          Process: com.example.local_adm.myapplication8, PID: 27021
                          java.lang.UnsatisfiedLinkError: Could not find valid MLPI JNI library.
                          at com.boschrexroth.mlpi.MlpiConnection.<clinit>(MlpiConnection.java:93)
                          at com.example.local_adm.myapplication8.MainActivity.btn_connection_Clicked(MainActivity.java:34)
                          at com.example.local_adm.myapplication8.MainActivity.access$000(MainActivity.java:17)
                          at com.example.local_adm.myapplication8.MainActivity$1.onClick(MainActivity.java:29)
                          at android.view.View.performClick(View.java:5698)
                          at android.widget.TextView.performClick(TextView.java:10881)
                          at android.view.View$PerformClick.run(View.java:22565)
                          at android.os.Handler.handleCallback(Handler.java:739)
                          at android.os.Handler.dispatchMessage(Handler.java:95)
                          at android.os.Looper.loop(Looper.java:158)
                          at android.app.ActivityThread.main(ActivityThread.java:7231)
                          at java.lang.reflect.Method.invoke(Native Method)
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

W pliku build.gradle jest dodana ścieżka do pliku .jar.

Czy ktoś z Was miałby jakiś pomysł co może być nie tak? Z góry dziękuję

0

JAR? Ale błąd wskazuje na JNI czyli ta biblioteka jest natywna (.so albo .dll). Zerkaleś co w tym jarze jest? Pewnie nie ma wersji pod ARMa.

0

Mam również bibliotekę .so. Dodałem ją do drzewka projektu ale nie wiem jak ją zainstalować. Bibliotekę .jar kliknąłem PPM -> Add as library no i nie było problemu. Pytanie jak to zrobić w przypadku .so. Nie jestem zbyt biegły w tych klockach :( Być może to byłoby rozwiązanie :)

0

Witam ponownie. Udało się rozwiązać wcześniejszy problem. Teraz po naciśnięciu przycisku już nie wyrzuca mnie z aplikacji lecz pojawia się taki oto problem.

01-27 03:32:23.571 18283-18283/com.example.local_adm.myapplication10 D/ViewRootImpl: ViewPostImeInputStage processPointer 0
01-27 03:32:23.691 18283-18283/com.example.local_adm.myapplication10 D/ViewRootImpl: ViewPostImeInputStage processPointer 1
01-27 03:32:23.706 18283-18283/com.example.local_adm.myapplication10 I/System.out: Try to load library 'mlpijavawin64'... failed.
01-27 03:32:23.711 18283-18283/com.example.local_adm.myapplication10 I/System.out: Try to load library 'mlpijavawin32'... failed.
01-27 03:32:23.721 18283-18283/com.example.local_adm.myapplication10 W/linker: /data/app/com.example.local_adm.myapplication10-1/lib/arm/libmlpijavaandroid.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
01-27 03:32:23.721 18283-18283/com.example.local_adm.myapplication10 I/System.out: Try to load library 'mlpijavaandroid'... succeeded.
01-27 03:32:23.726 18283-18283/com.example.local_adm.myapplication10 E/art: No implementation found for long com.boschrexroth.mlpi.MlpiConnection.connectInternal2(java.lang.String) (tried Java_com_boschrexroth_mlpi_MlpiConnection_connectInternal2 and Java_com_boschrexroth_mlpi_MlpiConnection_connectInternal2__Ljava_lang_String_2)

Szukałem trochę na anglojęzycznych forach, lecz albo rozwiązania które tam przedstawili nie działają u mnie, albo w ogóle nie rozumiem o co im chodzi :)
MlpiConnection służy do nawiązania połączenia z zewnętrzną jednostką po wi-fi. Dodałem jeszcze do kodu MlpiException, który zwraca mi status połączenia. Wyświetlam go sobie na ekranie. Oto co jest tam napisane:

MLPI_E_FAIL: General error during function call. MLPI JNI library mismatch (old native shared library)

Brakuje biblioteki .so? Przecież jest ona dodana. Poprzedni problem został właśnie rozwiązany poprzez umieszczenie biblioteki .so w odpowiednim miejscu w drzewie projektu (main -> jniLibs->armeabi->*.so).

Czy ktoś mógłby dać mi jakieś wskazówki jak mogę rozwiązać ten problem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1