使用.so文件构建Ant

时间:2014-08-25 12:53:26

标签: java android ant android-ndk

我正在处理一个包含超过65k方法的项目,我已按照Dex65536流程来构建项目

在我的项目中,它包含一些 .so 文件,可以在我的项目中执行数据库加密。当使用此自定义规则应用 ant 任务时得到了像

这样的错误
Warning:No implementation found for native 
Error: Lcom.......java.lang.UnsatisfiedLinkError: Native method not found:

如何解决此问题以及如何在 custom_rules.xml 文件中指定 .so 文件。

请告诉我。

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您的apk在armeabi文件夹中包含.so,那么您不需要查看ant构建过程。

您收到的错误是由.so无法加载或错误导出/导入您的函数名称引起的。

您确定以下内容:

  • 你的armeabi&中有一个.so库。 armeabi-v7a文件夹(在两个文件夹中都需要.so,因为某些Android版本在不同的文件夹中查找) - 解压缩apk以100%确定
  • .so库是针对目标设备的正确架构进行编译的。
  • 在您的java代码中,您可以在任何本机代码之前调用System.loadLibrary
  • 您的本机代码中导出的函数遵循正确的命名:

用于Java方法

int com.sample.NativeBridge.GetInt()

您需要导出一对c方法

JNIEXPORT jint JNICALL Java_com_sample_NativeBridge_GetInt(JNIEnv env , jclass this)

考虑到你有大量的方法,是否可以将原始容器类拆分为多个类,C函数名称与正确的命名约定不匹配?