项目移植到 android 和源代码管理

Posted

技术标签:

【中文标题】项目移植到 android 和源代码管理【英文标题】:Project port to android and source management 【发布时间】:2012-11-13 16:44:29 【问题描述】:

我们正在尝试将现有的 java 应用程序移植到 android,并想知道管理源代码的最佳实践是什么。

我们已经将我们的大项目分解为几个不可知的项目,但我们仍然有一个大的单体项目。对于那些小框架,我们不应该做太多工作,但大框架需要重写。

目前,一位开发人员正在将我们的应用移植到 Android,但其他开发人员继续在非 Android 项目上开发新功能。 移植完成后,我们将不得不将所有修改重新合并到 android 代码库中,这将是一个真正的痛苦。所以我的问题是:我们应该如何管理我们的代码源?我们应该为每个平台创建一个特定的存储库吗?我们是否应该将两个代码库保留在同一个存储库中但指向不同的分支以便更容易合并?

【问题讨论】:

【参考方案1】:

这可能不是源管理问题。尝试创建一个抽象的移植层。它应该抽象出使您的应用程序运行所需的所有 API。然后在 SWT 下使用 SWT API 实现该移植层,在 Android 下使用 Android API 实现相同的层。

可以想象:

public interface ISoundEngine 
void startSound();
void stopSoud();

您应用的其余部分使用 startSound/stopSound 来操作引擎。

那么你在windows下实现

public WindowsSoundEngine implements ISoundEngine 
...

在你实现的 Android 下

public AndroidSoundEngine implements ISoundEngine 
...

在每种情况下使用特定于 Windows 和特定于 Android 的低级 API。

【讨论】:

好的,谢谢。使用这些库的项目怎么样?我们应该在与现有存储库相同的存储库上创建它,还是应该创建一个新存储库并基本上复制所有内容?例如,如果使用 git,对于创建的每个分支,我们都会有一个名为 projectxx-branchName 的分支和一个名为 projectxx-and-branchName 的分支。【参考方案2】:

我看到的唯一好的解决方案是将所有通用代码移到库中,您可以独立开发。然后为 Swing UI、Android UI 等创建项目。 如果您的逻辑仍然需要一些特定于平台的服务(用于数据存储、通知等),请在客户端调用公共库时使用 Alex 的方法传递正确的库。

【讨论】:

以上是关于项目移植到 android 和源代码管理的主要内容,如果未能解决你的问题,请参考以下文章

x86 平台代码移植到 嵌入式平台[交叉编译三方库]

如何使用片段反向移植?

python 软件管理规范

Android系统权限配置

一行代码没改,我们把iOS 的 Cocoa Touch移植到了Android

如何移植android2.1源代码到自己的手机上