gpt4 book ai didi

android - 渐变安卓: post-process APK

转载 作者:行者123 更新时间:2023-11-29 16:02:36 25 4
gpt4 key购买 nike

我需要通过添加第二个签名来对我的 APK 进行后处理,因此我试图了解此时如何连接到构建过程。我的第一次尝试,

task doubleSign {
if (signing.androidBuildExists) {
android.buildTypes.all { type ->
tasks.("assemble${type.name.capitalize()}").finalizedBy doDoubleSign
}
}
}

好吧好吧。但是如果执行了任何 install* 任务,那么令我惊讶的是,assemble* 不在依赖树中。所以接下来我尝试添加行,

tasks.("install${type.name.capitalize()}").dependsOn doDoubleSign

但是,gradle 告诉我任务不存在!

> Could not find property 'installDebug' on task set.

最佳答案

installDebug 在执行该代码时不会出现,因为 android 插件在 afterEvaluate 阶段创建其任务。

你应该做什么:

android {
applicationVariants.all { variant ->
if (!variant.isSigningReady()) {
// only add double signing on variants that are signed with
// default signing method.
return
}

// get output file
def outputFile = variant.outputFile

// add new signing task.
def signingTask = project.tasks.create("double${variant.name}Sign", MyCustomSigning)
// configure task
signingTask.inputFile = outputFile
// create the final apk name using baseName to guarantee it's unique.
signingTask.outputFile = new File(project.buildDir, "apks/${project.name}-${variant.baseName}-2sign.apk")

// configure the task to be run after the default signing task.
signingTask.dependsOn variant.packageApplication

// configure zip align task to use the output of the 2nd signing task,
// and also to run after 2nd signing task.
variant.zipAlign.inputFile = signingTask.outputFile
variant.zipAlign.dependsOn signingTask
}
}

请注意,如果您不运行 zipalign(但实际上您应该运行),则必须调整结尾以使 variant.assemble 依赖于您的签名任务并设置输出您的签名任务到 variant.outputFile 以便从命令行或 IDE 部署仍然有效。

对于实际签名,您将使用注释执行自定义任务,以便它仅在输入文件实际更改时运行。

class MyCustomSigning extends DefaultTask {
@InputFile
File inputFile

@OutputFile
File outputFile

@TaskAction
void sign() {
// call script to sign inputFile into outputFile
...
}
}

关于android - 渐变安卓: post-process APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22648612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com