以前有一个VC做的Dll,实现的是安全加密方面的功能,现在想在android上做一个应用的APK,然后把以前的DLL,有全部源代码,改造成so库,放到android手机上让应用调用。应该怎么做比较快捷,另外,以前的那个dll库是在WM上可以用的,移植到android会不会有什么问题?

解决方案 »

  1.   

    我了解到只有两个办法,一个实在platform下用MAKE jni工程,另一个是在NDK下用ndk-build jni工程
      

  2.   

    用ndk-build jnijni貌似有点难度
      

  3.   

    通过NDK可以做
    在WINDOWS上就用CYGWIN就行,参照NDK中的SAMPLE,但得写些代码,编译后就是SO。
    用的时候将SO复制到APK工程的ASSETS目录下,然后在JAVA类中按要求写就行了。
      

  4.   

    关键看怎么掉了,你那个加密库有win32的api吗,有了需要考虑移植问题吧
      

  5.   

    如果只是用c里的标准库函数,没有win32 api的使用那做jni不难,jni就是主要把java参数转成c的,然后调用c的方法实现功能。
      

  6.   

    System.loadLibrary可以将相关so库导入,使用方法和jni一样。
    不过可以将so加载放在ap里面,更自由一点。
      

  7.   

    用NDK来开发吧,如果你的代码没有信赖Windows的API的话,修改应该是比较简单的。
      

  8.   

    我试了一下,我在windows下用 JNI生成的还是dll而不是so文件啊,看来还是要用NDK.如果用JNI,应该怎么做
      

  9.   

    你真搞笑,VC生成的是PE格式,怎么能在Dalvik上面运行?
      

  10.   

    我觉得很奇怪诶
    NDK不是也是用的jni么,为什么你们非要说是两种方式,一种ndk,一种jni
      

  11.   

    可以放在系统代码里编译,可能需要交叉编译。android系统中本来就可以编译bin文件和so文件,android.mk中的最后一句会注明编成bin文件还是so文件。
      

  12.   

    交叉编译用的是cygwin,网上谁那么无聊发个VC编jni的帖子,纯粹是害人,大家人肉一下.
      

  13.   

    行了 就用NDK,lZ准备散分吧
      

  14.   

    我想知道,这个so文件时和APK一起打包,还是要单独放到android的哪一层目录下?