从同一模块构建 AAR 和 APK

Building AAR and APK from the same module

我需要根据不同的构建风格从同一个模块生成 AAR 和 APK。

但是 APK 需要 applicationId,而库则不需要。我必须在 build.gradle 中添加 if-case。 有没有更好的方法可以达到同样的效果?

我当前的 gradle 文件:

productFlavors {
 generateAar {
  versionCode buildVersionCode()
  versionName getPackageName()
 }

 generateApk {
  if (!library) {
    applicationId "appId"
  }
  versionCode buildVersionCode()
  versionName getPackageName()
 }

模块可以是库或应用程序,不能同时是。

您可能应该考虑将所有代码包装到一个库模块中,该库模块可供应用程序模块使用(仅清单和启动器资源可绘制对象)

这样您的逻辑就可以从库中打包为一个 aar 工件,并且您的应用程序模块可以在同一项目中直接使用它,如果在单独的项目中则可以作为打包的工件使用它。

PS:使用本地 aar 时,需要在依赖它的应用程序模块中显式定义对工件的传递依赖。

此外,根据您的用例,您可能需要考虑如何按功能或层(数据、域、表示等)对项目进行模块化