我正在尝试将libsodium库集成到Android项目中.我正在使用带有gradle(0.9)和android构建工具(19.1)的Android Studio(0.5.8).我用libsodium编译了libsodium,这些脚本可以在库中找到.我为不同的架构(arm,arm-v7a,mips和x86)获得了四个preBuild库(.so文件).我把这些文件放在jniLibs文件夹中.我在build.gradle文件中声明我正在使用NDK并在local.properties文件上配置路径.
在这个版本的gradle中,没有必要编写一个makefile(http://ph0b.com/android-studio-gradle-and-ndk-integration/)
我在执行静态调用后在我的活动中声明了一些本机函数:
static {
System.loadLibrary("sodium");
}
public final static native String sodium_version_string();
onCreate() {
...
Log.d(getClass().getName(), "Sodium version:" + sodium_version_string());
}
Run Code Online (Sandbox Code Playgroud)
Logcat输出是:
05-29 23:14:10.538 481-1569/system_process I/ActivityManager? Start proc com.example.myapplication2.app.x86 for activity com.example.myapplication2.app.x86/com.example.myapplication2.app.MainActivity: pid=1584 uid=10056 gids={50056, 1028}
05-29 23:14:10.554 1584-1584/com.example.myapplication2.app.x86 D/dalvikvm? Trying to load lib /data/app-lib/com.example.myapplication2.app.x86-2/libsodium.so 0xa4ed8520
05-29 23:14:10.562 1584-1584/com.example.myapplication2.app.x86 D/dalvikvm? Added shared lib /data/app-lib/com.example.myapplication2.app.x86-2/libsodium.so 0xa4ed8520
05-29 23:14:10.562 1584-1584/com.example.myapplication2.app.x86 D/dalvikvm? No JNI_OnLoad found in /data/app-lib/com.example.myapplication2.app.x86-2/libsodium.so 0xa4ed8520, skipping init
05-29 23:14:10.578 1584-1584/com.example.myapplication2.app.x86 W/dalvikvm? No implementation found …Run Code Online (Sandbox Code Playgroud)