创建产品SDK:如何使用我正在创建的SDK添加本机库(.so)和jar?

The*_*rge 41 android jar android-ndk

我正在创建一个我们将提供给开发人员最终用户的小部件,它包含一个.jar.so使用NDK构建的本机库().JAR具有动态库的JNI接口.

关于如何.jar在项目中包含外部而非如何包含依赖动态库非常清楚.

  1. 我如何打包并构建.jar.so?这里的最佳做法是什么?

  2. 我可以使用JDK的jar命令创建JAR文件.我是否需要在jar上运行dx.bat才能转换为Dalvik字节码?

  3. 我需要创建一个示例项目来显示正在运行的小部件.如何包括这.jar.so在演示如何使用控件的示例项目?

Ale*_*ini 23

我花了一些时间在这上面,我只是无法理解为什么不写在wikitude文档上....无论如何都遵循这个变化!

  • 转到windows/preferences/android/build
  • 取消选中第一个和第二个选项
  • 使用winrar从wikitudesdk.jar中提取文件,就像它是一个存档一样,搜索libarchitect.so并将其复制到/ libs/libs/armeabi /
  • 将wikitudesdk.jar添加到您的构建路径中

在此输入图像描述


Jas*_*run 10

您应该使用SDK附带的标准构建工具.如果在/lib项目目录中包含所需的.jar文件,则ant构建过程会将包含的类文件转换为Dalvik字节码格式,并将它们包含在应用程序的classes.dex文件中.build.properties也可以使用一行将文件添加到项目根目录:

external.libs.dir=lib

根据SDK的版本和配置,您可能需要将jar放入libs而不是lib.

至于.so,我认为它是使用Android NDK正确编译的,或者使用构建脚本,该脚本使用成功链接Android上共享对象所需的正确编译器和编译器标志.如果是这种情况,您可以包含.so文件libs/armeabi,它们也将添加到jar中.此外,当您实际尝试从Java代码加载库时,动态库加载器将知道在.jar中查找此位置.

  • @Kevin,当外部jar包含本机库时,你可以使用`Window - > Preferences - > Android - > Build - > Force错误在Eclipse中禁用此检查. (4认同)

n8n*_*aby 8

使用ADT 12,我通过执行以下操作完成了此操作:

1)使用Eclipse使用SO文件从库中导出JAR.确保排除AndroidManifest.xml.这将包括源代码和其他数据,因此如果您要分发,则需要使用任何ZIP实用程序删除这些不必要的位.

2)在App的源代码树中创建一个目录(我使用"lib"目录)并将库JAR复制到它.

3)在Eclipse中右键单击项目,然后选择"配置构建路径".添加JAR并将其指向App源树中的JAR.

4)在Eclipse首选项中,选择Android/Build部分并取消选中"在构建时自动刷新资源和资源文件夹".您会注意到下面的选项"当外部jar包含本机库时强制错误".有一个ADT错误,据说可以在R17中修复,它使用了错误的设置.修复后,您将使用"强制错误"(确保未选中).

5)构建应用程序APK后,您将拥有一个libs/armeabi/libXXXX.so文件.这不会在安装时自动解压缩.您需要编写代码以将其从APK文件中提取到数据目录中,然后在数据目录中的.so文件上使用System.load.

我从动态加载的文件中进行双向JNI调用,甚至在其上使用dlopen()来执行我的自定义插件注册.