由于多种原因,我正在手动构建我的项目(或多或少遵循以下步骤http://geosoft.no/development/android.html http://geosoft.no/development/android.html),不使用 ant。
我的项目使用 NDK 并构建.so
图书馆。
当我使用 Eclipse 构建项目时,一切正常:我拖放libMyNativeLib.so
in the libs/armeabi
目录以及当我打电话时loadLibrary(MyNativeLib)
它工作正常:我可以从我的 Java 代码调用本机方法。
现在我想手动构建我的.apk
。除了本机库加载之外,一切正常。
使用aapt add
,我在我的apk中添加了:lib/armeabi/libMyNativeLib.so
(我看到Eclipse生成的apk中包含这个.solib/armeabi
所以我在apk中使用了相同的路径)。
打电话时loadLibrary(MyNativeLib)
,我得到以下异常
java.lang.UnsatisfiedLinkError: Couldn't load MyNativeLib from loader dalvik.system.PathClassLoader[DexPathList...
这是为什么 ?
我应该在dx --dex
关于本机代码的步骤(.so
库)?我不这么认为,但我可能错了? (我只使用dx --dex
和我的.jar
我猜这是逻辑库)。
你有什么主意吗 ?
Thanks
感谢 apktool (http://ibotpeaches.github.io/Apktool/ http://ibotpeaches.github.io/Apktool/)我发现出了什么问题。
生成最终的makefile.apk
捆绑包有错误。确实是aapt add
命令包含\
在路径中而不是/
。当我在 Windows 上生成时,我的所有路径都使用\
作为分隔符。这就是我使用的原因\
for aapt add
。但是,由于在安装过程中使用了此路径.apk
在 Android (Unix) 上,那么我应该使用/
分隔器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)