我可以通过编程方式获取我的应用程序的版本名称,如下所示:
String versionName = BuildConfig.VERSION_NAME; // 1.0
Run Code Online (Sandbox Code Playgroud)
但是,我有一个我正在制作的图书馆的演示应用程序.在我的项目中(因为库和演示应用程序在同一个项目中)我使用
dependencies {
implementation project(":mongol-library")
}
Run Code Online (Sandbox Code Playgroud)
在其他应用程序中,人们会将其导入
dependencies {
implementation 'net.studymongolian:mongol-library:0.9.16'
}
Run Code Online (Sandbox Code Playgroud)
在演示应用程序中,我想包含库的版本名称而不是演示应用程序版本名称.当然,我可以对字符串进行硬编码,并在每次更新库时更新它,但这很容易出错.有没有办法以编程方式访问库模块的版本名称?
相关问题
假设我制作了一个名为“MySdk”的 Android 库,并将其发布到 Jitpack/Maven 上。
SDK 的用户只需添加以下依赖项即可使用它:
implementation 'com.github.my-sdk:MySdk:1.0.1'
Run Code Online (Sandbox Code Playgroud)
我想要得到的是其中的“1.0.1”部分,无论我是从 Android 库本身(对于发送到使用哪个版本的 SDK 服务器很有用),还是从应用程序执行此操作使用它(对于报告特定问题很有用,包括通过 Crashlytics)。
我找不到任何反射或 gradle 任务来实现它。
搜索一下,如果我确实在 Android 库(用作依赖项)上工作,我发现我可以通过代码自己管理版本。
有人说我可以使用库的包名称的 BuildConfig,但这意味着如果我在发布依赖项之前忘记更新代码,它将使用错误的值。使用此方法的示例:
plugins {
...
}
final def sdkVersion = "1.0.22"
android {
...
buildTypes {
release {
...
buildConfigField "String", "SDK_VERSION", "\"" + sdkVersion + "\""
}
debug {
buildConfigField "String", "SDK_VERSION", "\"" + sdkVersion + "-unreleased\""
}
}
Run Code Online (Sandbox Code Playgroud)
BuildConfig.SDK_VERSION用法只是检查(构建后)的值。
另一种可能的解决方案可能是来自 Android 库内的 gradle 任务,每当您构建使用该库的应用程序时,都会强制启动该任务。但是,我没找到怎么做(在这里找到了一些东西)
是否可以从依赖项的 Android 库(当然还有使用它的应用程序)查询依赖项版本,以便我可以在运行时使用它?
自动的东西,不需要我在发布之前更新它?
也许使用库中定义的 Gradle …
android ×2