在Wear和Android应用之间共享类的最佳实践是什么?

28

我在我的Android手机应用程序中使用一个类进行序列化,并在我的Android Wear应用程序中进行反序列化。它们都在同一个Android Studio项目中,并作为一个整体部署。

有什么办法可以在两个应用程序之间共享这个类,而不需要在每个包中复制该类?目前我正在复制/粘贴它,但是否有任何方法可以在两个应用程序中都包含它?

目录结构如下:

./
    mobile/
           ...src/etc
    wear/
           ...src/etc

我该如何处理常见的类?

2个回答

42
你可以在项目中创建一个新的"Android Library"模块,并将你的公共类放在那里。
然后,你只需要将它作为移动端和穿戴端模块的依赖添加进去(在Project Structure -> Dependencies -> Add -> Module dependency中添加)。这样,你就可以在两个模块中创建/使用这些类的实例了。

2
@RobinEisenberg 嘿,你说得对。在Java中,文件/目录和编译单元之间的耦合更紧密。不过,作为一个额外的好处,使用这种方法应该只编译一次类(就像C/C++中的库)。 - matiash
我们应该从这个库模块中删除 AndroidManifest.xml 文件吗? - rudakovsky
4
不见得。清单文件被合并,所以最好在适当的地方留下声明。例如,如果库中的一个类需要某个权限,则在库的清单文件中声明该权限是可以的(我甚至会说这样做更好)。这样一来,任何引用该库的应用程序模块都会自动包含该权限。 - matiash
如果您有要在多个应用程序之间共享的JSON数据,该怎么办? - Chosen
2
@MujtabaMahmood 基本上是一样的方式 - 你可以将其作为库模块的资产或原始资源包含在内,并从应用程序模块中使用它。 - matiash
显示剩余2条评论

-1
通常,为了共享代码库,需要使用模块化。Android Studio使用module命名。

模块是一组源文件和构建设置,允许您将项目划分为离散的功能单元。

它可以是Android库(.aar)或Java库(.jar)。在这两种情况下,都将创建一个新的模块,其中build.gradle文件中有apply plugin: 'com.android.library'行。您可以使用它来放置共享代码。
要包含/添加此模块,您应该使用
File -> New -> Import Module...

这个命令将所有必要的信息添加到settings.gradle文件中,您将能够通过它使用它。

implementation project(':<module_name>')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接