Android Studio Java 库模块与 Android 库模块
Android Studio Java Library Module vs. Android Library Module
我想要的最终结果是拥有一个项目,该项目可以输出具有相同代码库的移动、电视和 Wear 应用程序的不同产品风格。所以我希望代码库成为所有三种应用程序类型的依赖项,其中每个应用程序模块只包含活动和与代码库的交互。
我的第一个想法是在我新创建的项目中添加一个 "Android Library Module",但我注意到这实际上只是一个新的应用程序模块,拥有自己的资源和一切。我希望代码库的功能更像 "Java Library",但它需要访问像 "android.graphics.Color".
这样的包
简而言之,实现此结果的正确方法是使用引用了 android sdk 的 java 库,还是我只是以错误的方式解决这个问题?
在继续这个问题:
没有中间点。如果你想访问 Android API,那么库需要是一个 Android 库,这样构建系统才能正确地 link 它进入依赖项目。 Android 库确实有您可能不需要的资源和其他东西,但是如果您愿意,您可以忽略这些位并将它本质上视为一个普通的 Java 库。即使您不使用资源,您也可能会发现指定 AndroidManifest.xml 属性以合并到相关应用程序中的功能很有用。
Android 库项目不会构建成熟的 APK 作为其输出;它生成一个 AAR,它在概念上类似于 JAR 存档,但具有对 Android 项目有用的资源和元信息。
定义术语的补充答案
Android工作室documentation定义了一个模块如下:
A module is a collection of source files and build settings that allow
you to divide your project into discrete units of functionality. Your
project can have one or many modules and one module may use another
module as a dependency. Each module can be independently built,
tested, and debugged.
所以基本上一个模块就是你的大项目中的一个子项目。
模块类型
- Android 应用程序模块 - 应用程序模块通常是您在普通项目中使用的模块。当您编译它时,您会得到一个 APK 文件,该文件将在设备上 运行。以下是现有的不同类型的应用程序模块:
- Phone & 平板电脑模块
- Android磨损模块
- Android 电视模块
- 玻璃模块
- 库模块 - 库的目的是共享代码。例如,您的项目可能包含几个不同的应用程序模块。他们都使用的公共代码可能位于库中。
- Android 库 - 除了 Java 代码之外,这还允许您包含 Android 资源文件和清单。 如果您正在制作一个 Android 项目并且想知道要使用哪种库,请选择 Android 库。 编译后它会创建一个 AAR(Android 存档)文件。
- Java 库 - 这只允许您包含 Java 代码文件,没有 Android 资源文件。这对于 cross-platform 代码共享很有用。编译后它会创建一个 JAR(Java 存档)文件。
- Google 云模块 - 这种类型的模块是 Google 用于与客户端应用程序通信的云后端。
还有一点我没有看到很好的记录:android 库模块可以依赖于另一个 android 库模块或 java 库模块,但是 java 库模块不能依赖于 android 库模块。
我想要的最终结果是拥有一个项目,该项目可以输出具有相同代码库的移动、电视和 Wear 应用程序的不同产品风格。所以我希望代码库成为所有三种应用程序类型的依赖项,其中每个应用程序模块只包含活动和与代码库的交互。
我的第一个想法是在我新创建的项目中添加一个 "Android Library Module",但我注意到这实际上只是一个新的应用程序模块,拥有自己的资源和一切。我希望代码库的功能更像 "Java Library",但它需要访问像 "android.graphics.Color".
这样的包简而言之,实现此结果的正确方法是使用引用了 android sdk 的 java 库,还是我只是以错误的方式解决这个问题?
在继续这个问题:
没有中间点。如果你想访问 Android API,那么库需要是一个 Android 库,这样构建系统才能正确地 link 它进入依赖项目。 Android 库确实有您可能不需要的资源和其他东西,但是如果您愿意,您可以忽略这些位并将它本质上视为一个普通的 Java 库。即使您不使用资源,您也可能会发现指定 AndroidManifest.xml 属性以合并到相关应用程序中的功能很有用。
Android 库项目不会构建成熟的 APK 作为其输出;它生成一个 AAR,它在概念上类似于 JAR 存档,但具有对 Android 项目有用的资源和元信息。
定义术语的补充答案
Android工作室documentation定义了一个模块如下:
A module is a collection of source files and build settings that allow you to divide your project into discrete units of functionality. Your project can have one or many modules and one module may use another module as a dependency. Each module can be independently built, tested, and debugged.
所以基本上一个模块就是你的大项目中的一个子项目。
模块类型
- Android 应用程序模块 - 应用程序模块通常是您在普通项目中使用的模块。当您编译它时,您会得到一个 APK 文件,该文件将在设备上 运行。以下是现有的不同类型的应用程序模块:
- Phone & 平板电脑模块
- Android磨损模块
- Android 电视模块
- 玻璃模块
- 库模块 - 库的目的是共享代码。例如,您的项目可能包含几个不同的应用程序模块。他们都使用的公共代码可能位于库中。
- Android 库 - 除了 Java 代码之外,这还允许您包含 Android 资源文件和清单。 如果您正在制作一个 Android 项目并且想知道要使用哪种库,请选择 Android 库。 编译后它会创建一个 AAR(Android 存档)文件。
- Java 库 - 这只允许您包含 Java 代码文件,没有 Android 资源文件。这对于 cross-platform 代码共享很有用。编译后它会创建一个 JAR(Java 存档)文件。
- Google 云模块 - 这种类型的模块是 Google 用于与客户端应用程序通信的云后端。
还有一点我没有看到很好的记录:android 库模块可以依赖于另一个 android 库模块或 java 库模块,但是 java 库模块不能依赖于 android 库模块。