2016-09-29 101 views
1

我收到了一個Eclipse項目,我已經成功導入Android Studio以供使用。唯一的問題是這個項目中的一個類在項目隨附的.so文件中調用了一些函數。我一直無法將這些方法稱爲幾天。如何在Android Studio中使用.so文件中的方法?

類是非常基本的:

public class Conversions { 

    private static Conversions mCom=null; 

    public static Conversions getInstance(){ 
    if(mCom==null){ 
     mCom=new Conversions(); 
    } 
    return mCom; 
    } 

    public native int StdToIso(int itype,byte[] input,byte[] output); 
    public native int IsoToStd(int itype,byte[] input,byte[] output); 
    public native int GetDataType(byte[] input); 
    public native int StdChangeCoord(byte[] input,int size,byte[] output,int dk); 

    static { 
    System.loadLibrary("conversions"); 
    } 
} 

的錯誤信息是:

cannot resolve corresponding JNI function .... 
No JNI_OnLoad found in /data/app-lib/com.example.fpdemo-1/libfgtitinit.so 0x4cc91c70, skipping init 

的本地方法是在位於我的幾個.so文件:

jniLibs > armeabi > libconversions.so 
jniLibs > armeabi > libfgtitinit.so 

但出於某種原因,我無法讀取本機文件。我認爲這可能是一個構建問題或環境問題。我的搖籃構建文件看起來是這樣的:

android { 
    compileSdkVersion 17 
    buildToolsVersion "24.0.2" 

    defaultConfig { 
     applicationId "com.example.fpdemo" 
     minSdkVersion 12 
     targetSdkVersion 17 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:18.0.0' 
    compile files('libs/fgtitdevice.jar') 
} 
+1

檢查我的答案在這裏包括'* .SO libraries'的http://計算器。 com/a/33164947/3626214 – Aspicas

+1

可能的重複[Android NDK:如何在AndroidStudio中包含\ *。so文件](http://stackoverflow.com/questions/33164778/android-ndk-how-include-so-files- in-androidstudio) –

+0

@Aspicas剛剛試過,沒有工作 –

回答

0
public class Conversions { 

    private static Conversions mCom=null; 

    public static Conversions getInstance(){ 
    if(mCom==null){ 
     mCom=new Conversions(); 
    } 
    return mCom; 
    } 

    public native int StdToIso(int itype,byte[] input,byte[] output); 
    public native int IsoToStd(int itype,byte[] input,byte[] output); 
    public native int GetDataType(byte[] input); 
    public native int StdChangeCoord(byte[] input,int size,byte[] output,int dk); 

    static { 
    System.loadLibrary("conversions"); 
    System.loadLibrary("libfgtitinit"); 
    } 
} 

嘗試更換了這一點,我希望它會工作

+0

我在哪裏添加此代碼? –

+0

查看我編輯的答案 –

相關問題