2010-10-21 48 views
6

我有一个国家的公共交通应用程序,我想为另一个国家创建一个单独的应用程序。大多数代码将被共享,但我需要一些类来实现不同的实现,例如TransitProvider。如何处理多个共享大约90%源代码的Android应用程序?

是否可以使用Android Library Project共享代码?我可以做以下吗?

  1. 有无TransitProvider(扩展 AbstractTransitProvider)在 库项目。该类具有未实现的方法。
  2. 在应用程序项目> AndroidManifest.xml中我有不同的包名称比库的清单。我在这个项目中也有TransitProvider,与图书馆的TransitProvider在同一个包中。
  3. 当我在库项目代码中使用TP时,从应用程序执行。项目应该被使用(即应用项目的TP覆盖了图书馆的TP)。

回答

5

是否可以使用Android Library Project共享代码?

是。这是图书馆项目的主要目的。如果您不需要Android资源,则还可以使用在单独项目中创建的普通JAR。

我可以做以下吗?

如果我正确理解了您提出的步骤,则不能在两个地方定义相同的类(在同一个包中)。

您应该:

  1. 定义AbstractTransitProvider库中的项目或JAR
  2. 任选具有一个或多个具体的实现,AbstractTransitProvider,对于直线上升的重用,在库项目或JAR
  3. 应用使用库项目或JAR除了使用库项目或JAR提供的任何具体实现之外,还可以在他们自己的Java软件包中拥有自己的具体实现AbstractTransitProvider
+0

感谢您的回答。大部分资源对于我的应用程序来说都很常见,因此我将使用库项目。我需要从库项目的Activity中做这样的事情:'Journey result = new TransitProvider()。findJourney();'我怎样才能确保应用程序项目的'TransitProvider'实现被使用? – fhucho 2010-10-21 13:53:22

+1

@fhucho:“我怎样才能确保使用应用程序项目的TransitProvider实现?” - 只有一个名为'TransitProvider'的类。在库项目中没有名为'TransitProvider'的类。将通用代码放置在库项目(和/或其他实用程序类)中的'AbstractTransitProvider'中,并将应用程序项目中的'TransitProvider'中的自定义实现放入。 – CommonsWare 2010-10-21 14:08:51

+0

但是,图书馆项目似乎并不了解位于应用程序项目中的TransitProvider。应用程序可以使用lib中的类,但不是我想的其他方法。 – fhucho 2010-10-21 14:21:29

相关问题