我的项目中存在一个相当组织的问题:我正在使用Eclipse构建android应用程序(我知道,过时,ADT插件......但这不是问题的原因)。问题是,我正在开发的应用程序应该被组织为可自定义的,这意味着一个代码,不同的差异为不同的客户端提供不同的应用程序。 例如,一个分支包含客户A在包中的应用程序版本: com.company.A 相同的代码,另一家公司的版本,在包命名空间中 com.B.wearedifferentcompany
我必须使用不同的命名空间,因为这两个应用程序将成为市场上的独特应用程序,每个应用程序都拥有自己独立的GCM系统。
问题在于,如果我在一个类中进行微小的更改并尝试将该更改与这两个分支的代码库合并,那么整个项目就会发生冲突"问题是因为,自然地,整个包树具有不同的名称。
您对如何克服这个问题有任何想法吗?我必须遵循的主要原则是我应该使用相同的代码来构建几个(看似)不同的应用程序。
答案 0 :(得分:2)
解决方案很简单。
将您的项目迁移到Android Studio。
将项目设置为使用Gradle构建。这将需要设置项目src目录,指定您的signingConfigs。根据您的项目依赖性,可能还有其他细节。
配置不同的构建版本。
我肯定会推荐这本书来完成这项工作。 Gradle for Android
我能够将我的代码库从eclipse迁移到Android Studio并设置产品风格。了解源代码合并。我在3天内完成了这项任务,项目超过40k LOC。
当你到达那里时,请随时询问具体细节。
祝你好运。你看到有一个主要的,绿色主题,blueTheme目录? 每个目录都可以拥有AndroidManifest,res文件夹,java文件夹。 这样,所有代码都驻留在一个项目中。您的目标是将两个项目迁移到这样的单独目录中。然后将相关的Java类放在每个相应的java文件夹中。
Gradle非常聪明,可以从那里知道要合并到主文件夹的内容。这是另一个主题,但只要您正确指定产品口味,就应该在我说明的时间内实现。
最后一件很酷的事情是,这个设置只需要一个构建工作流来输出多个apks。