Important
强烈建议遵循Github官方文档进行部署。
- 在项目根目录的
setting.gradle文件中添加如下内容:
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://maven.pkg.github.com/aquamarine5/stackbricks-gradle-plugin")
credentials {
username = project.findProperty("gpr.user") ?: System.getenv("GPR_USERNAME")
password = project.findProperty("gpr.key") ?: System.getenv("GPR_TOKEN")
}
}
}
}Warning
请确保gpr.user和gpr.key的值已经在gradle.properties配置,或通过环境变量配置。
- 随后在
build.gradle文件中添加如下项:
plugins {
id "org.aquamarine5.brainspark.stackbricks-gradle-plugin" version "$latest_sgp_version"
}Note
目前最新版本为2.2.9,请将$latest_sgp_version替换为最新版本号,详见此。
Caution
暂时不打算对Gradle Plugin Portal源进行支持,可用的版本已明显落后最新版本,请不再使用此方法添加。
- 直接使用Gradle Plugin Portal源
- 在
setting.gradle内,Gradle Plugin Portal源已默认启用(gradlePluginPortal()),无需再自行配置。 - 在
build.gradle文件添加以下项:
plugins {
id "io.github.aquamarine5.stackbricks-gradle-plugin" version "$latest_sgp_version"
}Note
目前最新版本为1.2,此源目前已不再更新。使用时请将$latest_sgp_version替换为最新版本号,详见此。
Tip
两种源的id不相符,但包内容一致,原因详见Gradle Plugin Portal对于包命名的要求。
- 目前
stackbricks-gradle-plugin以及配套Stackbricks支持七牛云CDN服务。 - 在
build.gradle文件加入以下配置信息:
stackbricksConfig {
possibleConfigurationPaths = [
new PossibleConfigurationPath("your host", "stackbricks_manifest.json"),
// ... and more
]
changelog = "lovely lonely"
forceInstallLessVersion = 2006_12_15
requiredManifestVersion2MigrateForceInstall = true
qiniuConfig {
accessKey = project.findProperty("qiniu.accessKey")
secretKey = project.findProperty("qiniu.secretKey")
bucket = "$bucket"
referer = project.findProperty("qiniu.referer") ?: ""
}
}requiredManifestVersion2MigrateForceInstall: Boolean
用于标识在更新V2版本清单文件时已被弃用的forceInstall的值。由于forceInstall已经在新版本V3清单文件中被弃用, 并使用forceInstallLessVersion替代。若此值为true,则表明在更新清单文件的同时,将forceInstall值设置为true, 接受此清单文件的旧版本应用会被强制更新,即使你没有显式的设置强制更新,反之则复制原清单文件的值。
Note
如果七牛云的存储空间未设置Referer防盗链设计,referer传入null或空字符串即可。
host值不需要http(s)://前缀。
关于七牛云的对象存储服务,详见此。
gradle uploadApkByQiniu- 运行
uploadApkByQiniu命令后会自动执行assembleRelease命令,生成APK文件,并上传到七牛云,更新Stackbricks配置文件。
Important
确保build.gradle正确配置了针对buildTypes.release.signingConfig的签名信息,避免生成app-release-unsigned.apk导致上传失败。
Note
对于 Stackbricks Manifest 并没有指定的命名要求,但推荐使用括号后的文件名以规范命名。自v3软件趋于稳定后也可以使用stackbricks_manifest.json名称命名。
{
"manifestVersion": 3,
"latestStable": {
"changelog": "<string>",
"downloadUrl": "<string, only file_name>",
"forceInstall": "<boolean, DEPRECATED ONLY FOR COMPATIBILITY, USE forceInstallLessVersion FIELD>",
"packageName": "<string>",
"releaseDate": "<long as Instant>",
"versionCode": "<int>",
"versionName": "<string>",
"forceInstallLessVersion": "<long>" //After 2.4.12, it changed from int to long as bugfix
},
"latestTest": {
"changelog": "<string>",
"downloadUrl": "<string, only file_name>",
"forceInstall": "<boolean, DEPRECATED ONLY FOR COMPATIBILITY, USE forceInstallLessVersion FIELD>",
"packageName": "<string>",
"releaseDate": "<long as Instant>",
"versionCode": "<int>",
"versionName": "<string>",
"forceInstallLessVersion": "<long>" //After 2.4.12, it changed from int to long as bugfix
}
}- 更新stackbricks-gradle-plugin插件版本至2.1.0及以上,Stackbricks更新至2.3.1及以上。
forceInstall值被弃用,被forceInstallLessVersion: Long替代,在适用于v3清单文件的程序解析过程中,forceInstall值会被忽略。forceInstallLessVersion用于指示当程序版本低于此值时才会被标记为需要强制更新,当无版本需要强制更新时,设置为-1。- 【2.1.1版本后加入】在gradle文件配置时加入了
requiredManifestVersion2MigrateForceInstall项,用于标识在更新V2版本清单文件时已被弃用的forceInstall的值,值若为true,则表明所有应用版本还在使用v2清单文件的程序会被强制更新,即使你没有显式的设置强制更新。
{
"manifestVersion": 2,
"latestStable": {
"changelog": "<string>",
"downloadUrl": "<string, only file_name>",
"forceInstall": "<boolean>",
"packageName": "<string>",
"releaseDate": "<long as Instant>",
"versionCode": "<int>",
"versionName": "<string>"
},
"latestTest": {
"changelog": "<string>",
"downloadUrl": "<string, only file_name>",
"forceInstall": "<boolean>",
"packageName": "<string>",
"releaseDate": "<long as Instant>",
"versionCode": "<int>",
"versionName": "<string>"
}
}- 更新stac
{
"@version": 1,
"@type": "stackbricks-config",
"latest": {
"versionCode": "<int>",
"versionName": "<string>",
"downloadUrl": "<string>",
"releaseDate": "<long as Instant>",
"packageName": "<string>"
}, // This JSONObject as a StackbricksVersionData
"versions": [
"<StackbricksVersionData>"
]
}