我目前正在尝试从.dll创建.jar,以便在Android应用程序中使用它。我对这项技术很陌生,所以我会尽量保持清醒。
我有3个不同的部分:
这部分效果很好。我创建了一个主要测试,并从Java中获取API中的所有信息。但是现在,我想创建一个我可以在Android上使用的.jar文件,这里有乌鸦......
我尝试了很多方法,从简单的.jar导出到One-Jar方法,但没有任何效果。我的android平台上总是有一个链接错误(函数在.jar上被识别,但它们的实现不是)。
所以这是我的问题,如何在.jar中创建一种我可以在Android上使用的“静态库”?
我希望我足够清楚,不要犹豫,向我提出更多细节。
谢谢你的帮助!
修改
我试过Android库项目,我的问题总是来自我的loadLibrary()函数:
public class MyWrapper {
static {
System.loadLibrary("MyWrapper");
}
public static native int getNegative(int p_number);
public static native int getPositive(int p_number);
}
我的库上的每一件事都运行正常,但是当我在android应用程序中使用它时,我总是会收到这个错误:
01-27 11:31:29.565: E/AndroidRuntime(7089): FATAL EXCEPTION: main
01-27 11:31:29.565: E/AndroidRuntime(7089): Process: com.example.wrappertest, PID: 7089
01-27 11:31:29.565: E/AndroidRuntime(7089): java.lang.UnsatisfiedLinkError: Couldn't load MyWrapper from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.wrappertest-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.wrappertest-2, /vendor/lib, /system/lib]]]: findLibrary returned null
我的库不能创建为静态库,以保持链接在.dll上?
答案 0 :(得分:1)
.dll文件通常是特定于Windows的。如果您想要在Android上加载本机代码,则必须考虑使用Native Development Kit。使用NDK的细节有点超出了这里可以解释的内容,但Android开发者网站提供了一个不错的起点http://developer.android.com/tools/sdk/ndk/index.html
至于jar本身,您可能需要考虑构建一个Android库项目。这实际上是一种用一些资产(包括本机库)打包jar的方法,可以被Android应用程序项目使用。
答案 1 :(得分:0)
ndk-build
ndk-build
的gradle并在jni文件夹中创建Android.mk
和Application.mk
.so
库并预先在Android.mk
ndk-build
并完成