gpt4 book ai didi

android - build.gradle中的registerTransform之后缺少base.apk代码

转载 作者:行者123 更新时间:2023-12-03 05:08:03 29 4
gpt4 key购买 nike

github address

registerTransform(TestTransForm())

class TestTransForm : Transform() {
override fun getName(): String {
return "test"
}

override fun getInputTypes(): MutableSet<QualifiedContent.ContentType> {
return mutableSetOf(QualifiedContent.DefaultContentType.CLASSES)
}

override fun isIncremental(): Boolean {
return false
}

override fun getScopes(): MutableSet<in QualifiedContent.Scope> {
return TransformManager.SCOPE_FULL_PROJECT
}

override fun transform(transformInvocation: TransformInvocation?) {
}}

我只是尝试一个空的Transform,也不起作用。我检查输出中的.class文件,该.class文件实际上已按预期更改。但是在安装apk时出错,日志:
Failed to commit install session 1402092649 with command cmd package install-commit 1402092649. Error: INSTALL_FAILED_INVALID_APK: Package couldn't be installed in /data/app/com.haku.aaa-3aSlvL5yaZujUqYNmZlzgQ==: Package /data/app/com.haku.aaa-3aSlvL5yaZujUqYNmZlzgQ==/base.apk code is missing

然后我尝试了一些示例,例如 Example,它很好用。我以为Gradle和Gradle工具的版本是原因,但在更改工具版本和包装器版本后仍然报告错误。

Gradle工具版本:3.1.4
包装器版本:gradle-5.1

最佳答案

您必须负责使用transform方法将输入写入输出中,

@Override
void transform(
@NonNull TransformInvocation transformInvocation) throws TransformException, InterruptedException, IOException {
def inputs = transformInvocation.inputs
def outputProvider = transformInvocation.outputProvider
inputs.each { TransformInput input ->
input.directoryInputs.each {DirectoryInput dirInput ->
println("transform DirectoryInput:" + directoryInput.getFile().absolutePath);

//do your work here,modify classes in the dirInput.

//Make sure to copy every input to output,no matter modified or not.
File dest = outputProvider.getContentLocation(directoryInput.getName(),
directoryInput.getContentTypes(), directoryInput.getScopes(), Format.DIRECTORY);
println("transform DirectoryOutput:" + dest.getAbsolutePath());
FileUtils.copyDirectory(directoryInput.getFile(), dest);
}
input.jarInputs.each{ JarInput jarInput ->
println("transform jarInput:" + jarInput.getFile().absolutePath);
String destName = jarInput.getName();

//Do your work here,modify the jarInput.

//Make sure to copy every input to output,no matter modified or not.
File dest = outputProvider.getContentLocation(destName,
jarInput.getContentTypes(), jarInput.getScopes(), Format.JAR);
println("transform jarOutput:" + dest.getAbsolutePath());
FileUtils.copyFile(jarInput.getFile(), dest);
}

}
}

样例代码snipet很时髦,您可以轻松转换成kotlin。

阅读 document以获取详细说明。

关于android - build.gradle中的registerTransform之后缺少base.apk代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54157884/

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