android 调用SO的问题

bjskyhorse 2010-10-26 04:48:10
目前遇到一个问题,以前我有一个实现安全功能的DLL库,有全套代码,如今通过NDK方式把它改造为一个so库,我想把它放在android手机里面给自己写的app调用。我想知道,这个so库应该是属于哪一层,App,Framework还是lib?应用是个APK,那我这个so应该放在android手机的哪个目录下才能调用呢,是如何调用的?
有人说可以把so文件和应用一起打包成一个apk,该如何打包呢?
...全文
1662 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjskyhorse 2010-11-29
  • 打赏
  • 举报
回复
那如果我有J2ME上的jar,现在想把它移植到android平台上,如果不用C/C++开发so,有什么办法可以快速移植这些jar过来?它应该以什么形式的库提供呢
dinjay 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bjskyhorse 的回复:]
dinjay,你的意思是我的应用程序只要System.loadLibrary("name"),通过ADB安装APK就直接可以安装到data/data/packagename/libs?
[/Quote]
你只要把so放在你工程的libs->armeabi目录下就可以了,build后生成的apk就会自动把so打包进去,安装apk到模拟器或者手机后,系统会自动复制so文件到data/data/packagename/libs下
dinjay 2010-10-27
  • 打赏
  • 举报
回复
比如你的so是libname.so,如果是armeabi的编译器,那就把so放在工程目录下libs->armeabi文件里
程序中使用:
就直接System.loadLibrary("name");//注意这里不能有lib的前缀,但是so的名字里要加lib

如果是mips的编译器,就放在libs->mipos文件中,使用也是loadLibrary

这样安装完apk,so会自动放在手机的data/data/packagename/libs目录下
bjskyhorse 2010-10-27
  • 打赏
  • 举报
回复
没有人知道这个so文件应该在android平台的哪一层,如何和apk一起打包吗
zgleaf 2010-10-27
  • 打赏
  • 举报
回复
把so放在工程目录下libs->armeabi文件里, 通过adb install 安装APK就可以安装到data/data/packagename/libs下;
应用程序调用 System.loadLibrary("name"),是用来加载这个so的。
bjskyhorse 2010-10-27
  • 打赏
  • 举报
回复
dinjay,你的意思是我的应用程序只要System.loadLibrary("name"),通过ADB安装APK就直接可以安装到data/data/packagename/libs?
hyfeng_ccle 2010-10-27
  • 打赏
  • 举报
回复
在工程下创建libs文件夹,在再libs下创建armeabi文件夹,so文件就是放在armeabi文件夹下。

这个方法如楼上所言。

还有可以放在/system/lib/文件夹下,这个需要权限
模拟器可以
打开命令行:
>emulator -partition-size 256 -avd avd_name

模拟器启动之后,打开另一个命令行:
>adb remount
>adb push C:\YOUR_SO.so /system/lib
这种方法加载多个SO相互调用的情况。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧