我首先将现有的代码库重构为 Android 库项目。这很容易做到。请务必阅读本文。 http://developer.android.com/guide/developing/projects/projects-eclipse.html文档非常稀疏,但我能够让它工作。请务必严格遵循“在清单文件中声明库组件”部分。
因此,要重构为库,您基本上将现有项目标记为库项目。您只需在项目设置中勾选一个框(请参阅链接)。
现在转到库,我们想要将包名称更改为不同的名称。例如,如果您发布的版本包是 com.mywebsite.myappname.android_market 那么我会将其重命名为 com.mywebsite.myappname.common_code
您可以右键单击项目并选择Android Tools->Rename application package。这一半对我有用。我还必须手动将代码中的所有引用重命名为我的 R 类。您可以使用全局搜索替换将 com.mywebsite.myappname.android_market.R 重命名为 com.mywebsite.myappname.common_code.R
现在您的图书馆已准备就绪
现在是时候制作您将构建的实际项目了。
创建一个新的 android 项目,并使用 android market 的包名称进行命名,例如 com.mywebsite.myappname.android_market。按照链接上的说明将新的公共库添加为该包使用的库。
Android 库项目的一个限制是库的清单不会合并到顶级项目的清单中。您需要手动将其粘贴到那里。另外(请参阅链接)您需要确保清单中的所有内容都使用完全限定的包名称。因此,如果您曾经使用诸如 android:name=".SplashScreenActivity" 之类的活动名称,请将其更改为 android:name="com.mywebsite.myappname.common_code.SplashScreenActivity"
因此,您再次需要手动合并所有内容,包括权限、意图、活动等。
现在只要构建顶级项目就可以了。
为您想要构建的每个变体制作一个包装器。
您还可以让这些新的顶级项目实现不同版本之间不同的任何内容。因此,您的 Android Market 包装器可以实现一个启动屏幕,而您的 Amazon 版本则可以实现一个不同的启动屏幕。或者,您可以在公共项目中使用枚举来驱动它,并将两个启动屏幕保留在那里。
另一个不错的功能是,顶级项目中的资源将覆盖库中的资源(如果提供)。因此,如果您想在您的启动画面上拥有一个亚马逊版本徽标和一个根据版本而变化的 Android 市场徽标,只需使用与公共资源相同的图像名称,并在两个版本中放置不同的副本即可。