在 Eclipse 上创建 Android 模块化应用程序

2024-01-02

我目前正在将一个用于在 J2ME 上构建应用程序的框架移植到 Android。该框架由多个编译为库(jar)的项目组成。每个单独的 JAR 都可以包含图形数据(资源、J4ME 屏幕等)。每个项目通常都有一个明确定义的入口点(模块)。当有人想要使用该框架构建应用程序时,他只需创建一个 Midlet 项目并添加库依赖项并使用导入的类。

我们一直使用相同的方法来开发 Android 框架。在本例中,我们仅使用 Eclipse 中的普通 Java 项目来编译为 jar 库。这些项目与 Android 框架 (android.jar) 具有依赖关系。构建新应用程序时,我们在 Eclipse 中创建一个 Android 项目并添加依赖项。

我们的下一步是为 Android 构建更高级的模块,这些模块还可以包含图形信息(活动、对话框、文字、可绘制对象等)。到目前为止,只需要一个 Android Eclipse 项目(最终应用程序),其中包含所有与图形相关的类和资源。似乎在使用资源(文字、可绘制对象等)时,唯一的方法是创建 Android 应用程序,因为资源只能通过 ADT 插件 (R.XXX) 自动创建的整数处理程序来引用。因此,构建图形模块可能无法通过普通的 Java jar 项目来构建。

Android开发者信息解释了模块化应用程序是可行的,但我还没有找到解释该过程的简明教程,但有一些提示,例如如何防止在应用程序调用其他应用程序提供的意图 http://developer.android.com/resources/articles/can-i-use-this-intent.html。当构建使用其他应用程序资源的应用程序时,这是有效的。我不需要在系统上安装多个应用程序,而是需要由多个组件构建的应用程序。

有没有人有过类似需求的开发经验?有什么好的入门教程或技巧吗?


似乎描述了唯一可用的方法here http://developer.android.com/guide/developing/eclipse-adt.html#librarySetup正如所暗示的其他问题的接受答案 https://stackoverflow.com/questions/3608680/is-is-possible-at-build-time-to-merge-android-applications.

然而,该解决方案相当新(它仅适用于最新的 Android SDK R6,并且不支持 SDK 2.0.X)。它有一些主要的警告,我希望谷歌已经在努力解决这些问题:

  • 没有二进制库链接。这意味着主应用程序需要访问源代码(在 Eclipse 中意味着打开所有链接库项目)。
  • 资源名称(布局、绘图等)被全局处理。这意味着如果您有两个“main.xml”布局,则只会使用最相关的(库列表中最上面的)布局。
  • 缺少功能/BUG。该文档规定,库项目的导出活动只能在库项目的 AndroidManifest.xml 中声明。这不起作用在当前版本中。里面的评论井字游戏 http://developer.android.com/resources/samples/TicTacToeLib/index.html示例提示这是所需的工作,但对于当前版本的 Android Tools,库项目中使用的活动必须在主应用程序项目的 AndroidManifest.xml 中显式定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Eclipse 上创建 Android 模块化应用程序 的相关文章

随机推荐

  • 我的模板中获取资源的绝对路径名

    在我的 JSF 2 0 Facelets 应用程序中 我有一个出色的模板 我希望所有页面都使用它 它位于 Web 应用程序的根目录中 名称为 template xhtml 因此它被引用为您所期望的
  • 为什么创建 ASPNETDB.mdf 以及如何摆脱它?

    我的问题已在标题中陈述 以提供一些背景知识 我正在帮助客户在 ASP net 环境中使用 Web 部件 但我不希望它们附加到此数据库 我希望能够在不创建此数据库的情况下使用该网站 我目前正在对此进行更多研究 但是任何有关网站的建议或有关此的
  • 为什么我们需要网络套接字?

    这更像是一个n00b问题 但我从来没有真正知道答案 那么为什么我们需要 websockets 协议呢 与 Comet 式 长轮询 悬挂 GET 式使用 HTTP 相比 有哪些优势 Comet 和 Ajax 都可以提供最终用户体验 提供类似桌
  • VSCode C/C++ IntelliSense 标识符未定义,但可以解析定义

    新安装 VSCode 我安装的唯一扩展是 Microsoft C C Intellisense 插件 版本0 24 1 我正在使用一个代码库 其中包含一些带有 define X foo 宏的头文件 在 cpp 文件中 它用红色下划线表示 标
  • 如何确定 UICollectionView flowLayout 中单元格之间的间距

    我有一个带有流布局的 UICollectionView 每个单元格都是一个正方形 如何确定每行中每个单元格之间的间距 我似乎找不到合适的设置 我看到集合视图的 nib 文件上有一个最小间距属性 但我将其设置为 0 并且单元格甚至不粘在一起
  • 为什么 chrome 中的 height() 值与 safari 中不同?

    我的脚本是这样的 ajax url url type GET dataType json contentType application json charset utf 8 success function result done fun
  • 如何在 vspackage 中获取当前解决方案配置?

    我正在制作 Visual Studio 包 我需要知道打开的解决方案名称和配置 我怎样才能得到这些信息 如果您有 EnvDTE 的参考 您可以使用dte Solution and dte Solution SolutionBuild Act
  • 时间间隔内的Mongo聚合

    我有一些日志数据存储在 mongo 集合中 其中包括 request id 形式的基本信息以及将其添加到集合中的时间 例如 id ObjectId 55ae6ea558a5d3fe018b4568 request id 030ac9f1 a
  • 使用转换时替换 UIWindow 的 rootViewController 似乎存在泄漏

    环境 iOS 9 2Xcode 7 2 我正在寻找更换UIWindow 的 rootViewController https developer apple com library ios documentation UIKit Refer
  • laravel中api中间件的作用是什么

    我在 laravel 8 有一个简单的问题 我测试了两个代码 但没有发现任何差异 它们对我来说看起来一样 即使我点击了很多时间 两者都给了我 太多的请求 Route middleware api gt get user function R
  • R:每两个月休息一次的削减功能

    我从某处了解到Date我们可以使用的向量cut分成垃圾箱 cut dates breaks quarter 现在我想更改它 使其每两个月中断一次 我该怎么做 我尝试通过以下方式查找它 cut 但它甚至不会表明我可以使用 quarter or
  • SQL 中缺少右括号错误是什么原因造成的?

    我已经尝试运行以下 SQL 命令几个小时了 我不断收到错误消息 ORA 00907 缺少右括号错误 我知道这意味着某处存在语法错误 但我已经检查了代码很多次 但仍然无法弄清楚 任何帮助将不胜感激 CREATE TABLE Employees
  • PTRACE_SINGLESTEP是如何实现的?

    据我所知 我可能是错的 没有办法只执行onex86 64 系统上的指令 也许您可以执行后跟 ud2 操作码的指令来触发信号 但是您必须担心指令会修改控制流并转到其他地方 然而 如果我理解正确的话 ptrace 系统调用有一个 SINGLES
  • 我可以使用哪些工具来分析 Internet Explorer 的网络捕获日志?

    我正在使用 Internet Explorer 9 中内置的 F12 开发人员工具来捕获站点上的网络流量 此信息可以保存到 XML 默认 或 CSV 文件 XML 文件似乎包含更多信息 但我很难找到任何可以读取这些信息的应用程序 使用 In
  • SQLITE3 VACUUM,“数据库或磁盘已满”

    我正在尝试运行VACUUM在我的数据库上运行命令 但我似乎空间不足 gt sqlite3 mydatabase db VACUUM Error database or disk is full 数据库大约有 36 GB 我运行它的驱动器看起
  • 如何使用 PHP 获取上一年

    我如何使用 PHP 获得上一年的值 有没有预定义的函数 try echo date Y strtotime 1 year
  • python-ldap 和 Microsoft Active Directory:连接和删除用户

    python ldap newb在这里 我正在尝试使用以下示例代码来执行此操作 import ldap first you must bind so we re doing a simple bind first try l ldap op
  • 向下滚动时显示导航栏

    我有一个带有隐藏导航栏的简单代码 但我想要的是在向下滚动时显示它 我怎样才能做到这一点 struct ContentView View var body some View NavigationView ScrollView showsIn
  • Dagger2 不生成 Daggercomponent 类

    Dagger2 没有在 android studio 中生成任何组件类 我知道这是一个已知问题 而我已经在 android studio 中尝试了几乎所有实现方法 并尝试了各种教程 但每次我在这里遇到问题时 它都无法构建 dagger组件班
  • 在 Eclipse 上创建 Android 模块化应用程序

    我目前正在将一个用于在 J2ME 上构建应用程序的框架移植到 Android 该框架由多个编译为库 jar 的项目组成 每个单独的 JAR 都可以包含图形数据 资源 J4ME 屏幕等 每个项目通常都有一个明确定义的入口点 模块 当有人想要使