Android复杂的项目组织

时间:2013-02-19 23:38:27

标签: android architecture project game-engine

我正在考虑尝试为游戏构建复杂的Android应用程序结构,可能或仅仅是出于练习原因。我习惯于在objective-c中编码,所以我在android中没有那么多经验......

无论如何,我们在ios上构建我们的app应用程序:

-core框架:处理所有核心项目,导航,数据处理,机制等,在我们的所有项目中都是一样的

- 项目框架:它的文件主要依赖(包括)核心框架的文件,扩展/修改它们,并根据内容做项目

-skin framework:这包含所有的资源和图片,如果我们想做一个重新设计皮肤的项目,我们只需要改变这个

- 主要项目:这包括将所有内容整合到应用程序中的所有内容。只是启动应用程序,仅此而已,其他任何东西都由不同的框架完成

所以我想在android上做类似的结构,但我不确定我是否能够做到这一点......我看到有android项目和库项目,我可以将它们包含在彼此中。 ..但我的问题是:

1:我可以在ios上构建类似的结构吗?

2:我可以制作一个“核心”库,其中包含机制的基础知识,另一个库只包含资源,第三个(或第三个可能是实际的可运行项目),什么可以获得资源从资源库,可以将作业分发到核心库等...

3:我可以按照自己喜欢的方式组织资源(例如,不要将每张图片都放入drawable文件夹根目录中)。例如,以某种方式有一个字符文件夹(我知道我不能在res文件夹中执行forlders),并将文件映射到地图文件夹等...我唯一的机会将它们命名为“正确”? (map_sheet_type_1,map_sheet_type_2,character_sheet_type_1等)(如果它将成为一个游戏,它将使用opengl,大量的精灵绘图等)

或者我应该在一个项目中完成所有工作,将所有内容分成很多包,并且仅将库用于“如何转码”“将对象转换为”B“对象”等工作?

提前感谢您的答案

2 个答案:

答案 0 :(得分:1)

虽然我之前从未开发过游戏,但应用程序是应用程序:

  1. 正如您所提到的,您有可执行项目和库项目,库可以使用其他库,而设备的唯一内容是可执行项目正在构建的任何内容。重要的是要注意编译的库*.jar files资源不能在您的可执行项目中使用(这就是ActionBar Sherlock必须用作库项目的原因)。为了使用放置在库项目中的资源,项目必须在Eclipse中打开其完整源代码,以便可以一起编译。这是因为在应用程序内部,只有一个R(资源)对象,并且在构建期间,所有项目中的所有资源都被放在一起。
  2. 遗憾的是没有。正如您自己提到的那样,资源不能存在于子文件夹中,甚至文件名也受到限制,因为它们只能使用小写字母,数字和_(下划线)。只要聪明有组织,写一个规范或其他东西。
  3. packages是用Java组织单个项目的方法。如果您要使用多个或单个是您的选择。通常,您可以封装在可以在不同项目中轻松重用的库项目中,最终项目将包含特定于该应用程序/游戏的所有内容。我将举例说明我工作的地方,我们有一个KicthenLibrary,它是我们在每个Android应用程序中使用的库项目。该库已经包含了一个优秀的多线程位图下载和缓存类,我们曾经在Google发布MapFragment,简单的Http GET / POST方法等之前有一个MapFragment(现已弃用)。正如您所看到的,所有这些都是东西可以很容易地在几个不同的项目中重复使用。
  4. 就像最后一招一样,http://www.eclipse.org/egit/恕我直言,更容易从Eclipse内部使用GIT。

答案 1 :(得分:0)

以下是一些可以帮助您开始此操作的链接。

http://kasperholtze.com/android/how-to-best-organize-your-android-source/

http://bartinger.at/organization-tips-for-android-projects/

此外,当我在初创公司工作时,我们为iOS和Android制作了一个应用程序。我们开始为每个应用程序创建本机应用程序,最终结构有些不同。全局信息/变量处理不同,我无法像iOS那样构建我的文件。也就是说,Android结构并不是很难弄清楚,我在我的资产文件夹中创建了相当数量的子文件夹(对于库和j等)。是的,你绝对可以拥有几个库。

至于在多个应用中有多个项目,请参阅此链接How to create a single application from multiple Android projects