android - 从同一个模块构建 AAR 和 APK
问题描述
我需要根据不同的构建风格从同一模块生成 AAR 和 APK。
但是 APK 需要一个 applicationId,而 library 不需要。我必须在 build.gradle 中添加 if-case。有没有更好的方法来达到同样的结果?
我当前的gradle文件:
productFlavors {
generateAar {
versionCode buildVersionCode()
versionName getPackageName()
}
generateApk {
if (!library) {
applicationId "appId"
}
versionCode buildVersionCode()
versionName getPackageName()
}
解决方案
模块可以是库或应用程序,不能同时是两者。
您可能应该考虑将所有代码包装到应用程序模块可以使用的库模块中(仅清单和启动器资源可绘制)
这样,您的逻辑可以从库中打包为 aar 工件,如果在同一个项目中,您的应用程序模块可以直接使用它,如果在单独的项目中,则可以作为打包的工件使用。
PS:当使用本地 aar 时,需要在依赖它的应用程序模块中明确定义对工件的传递依赖。
此外,根据您的用例,您可能需要考虑如何通过功能或层(数据、域、演示文稿等)实现项目的模块化
推荐阅读
- android - 为三星 S8 应用正确的尺寸文件
- javascript - 将代码从 js 更改为 jQuery
- spring - Spring Security 未登陆自定义登录页面
- java - webview从没有文件选择器的输入字段打开相机
- javascript - 带有 ng-repeat 的表中的 2d 多级对象
- r - R中> 2个样本的荟萃分析中的卡方检验
- jquery - jQuery 属性值编码
- c# - 使用 OnControllerColliderHit() 与 CharacterController 发生多次碰撞时检测特定碰撞
- android - 睡眠后无法向连接到 Android Device Host 的 USB 设备发送数据
- jquery - 当前带有 jQuery 的 Nasa EPIC API 图像