weixin_41423378
银翼的魔术师s
2018-09-08 17:19
采纳率: 69.1%
浏览 429

新手 , Android 的一些问题

Android 的socket 是用Java的socket吗 ?还有安卓系统是Linux之上的,那如果Android底层使用c/c++,是不是要用Linux平台的c/c+的函数,那要怎么生成Linux平台的c/c+的dll给java调用

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • hhlinux
    冰个茶 2018-09-09 06:23
    已采纳

    // 那要怎么生成Linux平台的c/c+的dll给java调用 ?
    dll文件是对于Windows平台的文件,在Linux中是用so文件。 生成so文件,需要下载android的NDK开发库。
    在AndroidStudio创建一个新项目时,勾选NDK支持就好了。默认的会产生一个能生成so文件的项目。
    记得在AndroidStudio里面配置一下NDK的路径,后者直接通过Androidstudio下载一个也行。

    点赞 评论
  • caozhy

    android平台没有“dll”,dll是windows平台才有的。linux下类似的是 so。不建议在android上使用原生的代码和直接使用socket。和pc机不同,100%的pc机都使用和x86兼容的cpu硬件。
    但是在android上,不同的设备使用的cpu是完全不同的。比如有intel x86的cpu,有arm的cpu,有arm 64的cpu,还有定制的cpu,联发科的那种,还有mips的cpu……如果你使用原生的代码,必须针对碎片化的硬件设备和环境做适配,除非你是硬件生产厂家预装特定的应用,否则你会遇到前所未有的麻烦。虽然你会看到有很多使用jni去调用 so的案例,但是对于软件开发者(isv)来说,基本上都是在调用系统库(类似windows下的开发者调用win32 api)。
    至于socket,大部分设备的权限、网络环境和节能要求都不允许你这么做。android和windows平台的编程模型有很大的不同,后台的应用被设计为挂起而不是继续运行的。而你应该不想设计一种切换到后台就收不到数据的应用吧。
    总之,你应该去学习这个平台的基础知识,而不是把pc程序移植上去。

    点赞 评论
  • qq_37063860
    po破小孩 2018-09-10 09:17

    安卓使用java包理论上都可以使用,并无区别,导入包,就是注意JDK版本就好了。安卓网络编程一般使用http协议,有封装好的网络工具包

    点赞 评论

相关推荐