Jar,Android库和Android库项目之间的差异

jax*_*jax 39 android

据我了解,分发我的应用程序的三种方式是通过Jar,Android Library和Android Library Project.

Jar - 不能包含资源或XML布局(所以这对我而言)

Android库 - 我真的不知道这是如何工作的,但Google API使用它...

Android库项目 - 包括资源,但允许客户端自由地控制代码,因为它作为源分发.

如果我要创建一个需要绘图和XML文件的封闭源应用程序,我想将其分发给其他Android程序员,我应该使用什么?有人可以指导我创建一个关于创建Android库的教程吗?

Kev*_*din 10

有关您的项目究竟是什么的更多细节将受到欢迎.我的理解是你想要销售一个库(开发人员可以在他们的应用程序中集成的一组组件/工具),而不会泄露源代码.

如您所述,您不能在Jar文件中包含资源/资源.

Android库项目会强制您让源代码"可见".适当的许可条款可以帮助您对源代码使用进行法律限制,但是......你知道人们对许可证的处理方式......也许一些代码混淆(不是公开的可见方法)可能会有所帮助.

我不确定<uses-library>工作中包含的"共享库"如何,但是示例已经看到系统依赖(地图API仅适用于"官方"Google接受设备,Sprint Evo前置摄像头......)并且可能需要在系统内构建.也许某些root权限可以帮助添加一个,但这必须在使用您的库的应用程序要运行的EACH设备上完成...


sup*_*jos 5

为什么不尝试以下几行:

  1. 创建一个Android Eclipse项目(标记为库),或者只是一个Java Eclipse项目,其中包含所有代码.这包含任何XML/PNG资源,只包含Java代码.创建一个构建文件(例如Ant),以便生成一个Jar.

    • 您可能还尝试将proguard添加到构建中,以便混淆代码的非公共部分.
  2. 创建一个Android库Eclipse项目(这一个标记为库),其中充塞你所有的XML/PNG资源.此外,在此项目中,从上述项目向输出Jar 添加一个简单的 Jar引用.

    • 可能在这里您还应该标记要导出的引用,以供库客户端使用.

作为混淆Jar的替代方法,您可以跳过它,只是模糊整个Android库项目输出,因为这将适用于Jar和实际的库输出.请务必明确保留所有公共API.这里的优点是跳过构建脚本中的手动proguard实现,并使用已在Android Eclipse中实现的实现.


hcp*_*cpl 3

Android 开发者文档中有一篇关于 Android 库的文章:

更新:http://developer.android.com/tools/projects/index.html#LibraryProjects

  • 这是一个 Android 库项目,而不是 Android 库。他们是不同的。 (3认同)