在安卓APK包装Linux二进制(Packaging linux binary in Android

2019-07-20 13:25发布

如果我想在我的.apk文件在Linux二进制(如ffmpeg)来(仅适用于基于ARM的设备),这是能够分散非植根手机? 我知道这是可调用的Runtime.exec()的包含的二进制,但它是一个推荐的做法?

Answer 1:

你可以存储在二进制res/rawassets文件夹中。 通过这种方式将被部署在设备上。 你应该“解压”,它在安装后,你的/data/data/your.package/files/是一个有效的目标; /sdcard/不是。 通常/data/local/目的地不是你的应用程序访问,即使它是亚行的shell。 chmod 500也未尝不可。

这就是说,libffmpeg.so用JNI包装比较容易在一个Android应用程序使用,且占用较少的系统资源。


更新,APRL 2014你就可以欺骗系统,并储存在您的二进制libs/armeabi文件夹,并让安装程序提取这个二进制为您服务。 它将最终/data/data/your.package/lib/文件夹,与+x权限。 这个技巧还有一个很好的优势,它可以让系统自动选择正确的ABI来提取二进制:armeabi,armeabi-V7A,MIPSx86。

关键是要按照共享库命名约定。 所以,当你把ffmpeg的可执行文件到libs/armeabi ,重命名为lib_ffmpeg_.so文件。 当然,你也会Runtime.exec()使用全路径的文件,并新添加的前缀和后缀。



Answer 2:

我不认为你将能够让他们标记为+ X无根。

有关ffmpeg,它更通常创建一个JNI包装器libffmpeg。



文章来源: Packaging linux binary in Android apk