Java 可重用Android库如何运行(开发、部署等)

Java 可重用Android库如何运行(开发、部署等),java,android,compilation,libraries,Java,Android,Compilation,Libraries,我正在尝试为我的Android项目创建可重用库。图书馆将包括资源。不幸的是,我找不到任何关于Android库如何运行的合理解释 Android参考只是说明如何设置Eclipse项目和Ant项目。我正在使用Maven和IntelliJ。如果我能找到任何关于所有部件如何协同工作的合适描述,我会想出如何设置它们 所以我想知道是否有人想挑一个来解释。下面是我的一些开放性问题 假设我有一个projectAndroidApp,它有AndroidManifest.xml和包app.foo,并生成Android

我正在尝试为我的Android项目创建可重用库。图书馆将包括资源。不幸的是,我找不到任何关于Android库如何运行的合理解释

Android参考只是说明如何设置Eclipse项目和Ant项目。我正在使用Maven和IntelliJ。如果我能找到任何关于所有部件如何协同工作的合适描述,我会想出如何设置它们

所以我想知道是否有人想挑一个来解释。下面是我的一些开放性问题

假设我有一个project
AndroidApp
,它有
AndroidManifest.xml
和包
app.foo
,并生成
AndroidApp.apk

我还有project
AndroidLib
和package
app.bar
。对于
AndroidLib
,我在
AndroidManifest.xml
中需要什么?仅仅声明包就足够了,还是应该有其他东西

现在,我想在两者中都有资源,并从
AndroidApp
中引用
AndroidLib
中的资源。我是否只调用
lib.bar.R
?一些帖子建议不会有id冲突。对还是错

什么是
AndroidLib
的可交付工件?它也是apk吗?如何部署两者?或者更重要的是,我可以生成包含
AndroidApp
AndroidLib
的单个apk吗

项目在开发环境中如何相互关联?例如,在IntelliJ中,我试图在
AndroidApp
中包含带有
AndroidLib
的模块,但它只是将资源编译成
AndroidApp
。(可能我错过了
使用库的内容)。如果我使用javac和Android工具,顺序是什么

还有什么值得知道的吗


无论如何。如果有人能分享这方面的知识,我将不胜感激。

好的,我不是这方面的专家,但这些是我的想法(可能是错误的):

就我所能说的,严格来说,安卓上并没有真正意义上的“库”。基本上有三种选择:

  • 让“Lib”项目成为“普通”Java项目,并将该项目添加到“App”项目的构建路径中。“Lib”只能包含Java代码,Java代码通常被编译并添加到“App”的APK中。由于在设备上运行的应用程序无法访问另一个应用程序的代码,如果您想在第二个Android应用程序中重用“Lib”,它必须在其APK中包含(编译)Lib代码的副本。这也意味着lib不能包含任何资源,因为它们需要位于“App”项目的相应目录中

  • 与#1类似,但是您将Lib代码编译到一个常规Java库(jar)中,然后将其复制/编译到“App”项目的Lib目录中。除此之外,它还具有与#1相同的限制,因此您创建的任何应用程序都必须在其APK中包含JAR的副本

  • 让“Lib”项目成为一个完整的独立应用程序,并使用自定义意图定义一个API,让“Lib”和“app”之间的所有通信都运行在它们之上。这要求“Lib”和“App”分开分发,因此用户需要手动安装这两个。但是,这允许您创建其他应用程序,这些应用程序可以重用“Lib”应用程序的功能,而不包括重复的代码


  • 我已经写了一篇关于这方面的详细文章:

    如果您想模仿原始Android构建系统的行为方式,那么最好的方法就是运行

    ant debug -d
    
    在使用Android库(或Android库)的项目上


    这将为您提供所有命令行
    ant
    运行,以创建
    R.java
    文件,编译代码并打包最终的.apk文件。这基本上是你现在能找到的最好的参考资料。不过请注意,Android的构建系统正在发展,您需要保持构建系统与原始系统同步。

    我最近在Maven Android插件示例项目的库项目支持中进行了合并。通过查看它们是如何设置的,就可以了解它们是如何工作的


    谢谢你的回答<代码>库可以包含任何资源
    din您的意思是
    不能
    ?因为之前你说的
    “Lib”只能包含Java代码。更正。很棒的博客帖子!这正是我想要的。这个博客,连同《Pro Android 3》(起始页387)一书,是一个完美的组合来解释Android库,我昨天刚刚试过。beta-4被破坏了,我甚至提交了一个bug。但我根据代码编译的最新快照很好。插件是伟大的!谢谢。我们计划很快发布新版本,以解决您的问题;-)