Closed littlemozart closed 4 years ago
公司gradle plugin升级到了3.5.1,针对RobustApkHashAction做了下修改, project.android.applicationVariants.each { variant -> def packageTask = project.tasks.findByName("package${variant.name.capitalize()}")
if (packageTask == null) {
return
}
packageTask.doFirst {
// project.logger.quiet("===start compute robust apk hash===")
// def startTime = System.currentTimeMillis()
List<File> partFiles = new ArrayList<>()
if (isGradlePlugin300orAbove(project)){
//protected FileCollection resourceFiles;
FileCollection resourceFiles = packageTask.resourceFiles
if (null == resourceFiles) {
return
}
partFiles.add(resourceFiles.getFiles())
//protected FileCollection dexFolders;
FileCollection dexFolders = null
try {
dexFolders = packageTask.dexFolders
} catch (MissingPropertyException e) {
// api is not public
}
if (null != dexFolders) {
partFiles.addAll(dexFolders.getFiles())
}
//protected FileCollection javaResourceFiles;
FileCollection javaResourceFiles = null
try {
javaResourceFiles = packageTask.javaResourceFiles
} catch (MissingPropertyException e) {
// api is not public
}
if (null != javaResourceFiles) {
partFiles.addAll(javaResourceFiles.getFiles())
}
//protected FileCollection jniFolders;
FileCollection jniFolders = null
try {
jniFolders = packageTask.jniFolders
} catch (MissingPropertyException e) {
// api is not public
}
if (null != jniFolders) {
partFiles.addAll(jniFolders.getFiles())
}
//protected FileCollection assets;
def defaultDirectory = packageTask.assets
if (null != defaultDirectory) {
partFiles.add(defaultDirectory.getAsFileTree().getFiles())
}
String robustHash = computeRobustHash(partFiles)
createHashFile(defaultDirectory.getAsFile().get().absolutePath, Constants.ROBUST_APK_HASH_FILE_NAME, robustHash)
return
} else {
File resourceFile = packageTask.resourceFile
if (null == resourceFile) {
return
}
partFiles.add(resourceFile)
Collection<File> dexFolders = null
try {
dexFolders = packageTask.dexFolders
} catch (MissingPropertyException e) {
// api is not public
}
if (null != dexFolders) {
partFiles.addAll(dexFolders)
}
Collection<File> javaResourceFiles = null
try {
javaResourceFiles = packageTask.javaResourceFiles
} catch (MissingPropertyException e) {
// api is not public
}
if (null != javaResourceFiles) {
partFiles.addAll(javaResourceFiles)
}
Collection<File> jniFolders = null
try {
jniFolders = packageTask.jniFolders
} catch (MissingPropertyException e) {
// api is not public
}
if (null != jniFolders) {
partFiles.addAll(jniFolders)
}
File assets = null;
try {
assets = packageTask.assets
} catch (MissingPropertyException e) {
// Android Gradle Plugin version < 2.2.0-beta1
}
if (null != assets) {
partFiles.add(assets)
}
String robustHash = computeRobustHash(partFiles)
if (null != assets) {
// Android Gradle Plugin is 2.2.0-beta1 + , assets is able to access
createHashFile(assets.absolutePath, Constants.ROBUST_APK_HASH_FILE_NAME, robustHash)
} else {
// add robustHashFile to resourceFile
File robustHashFile = createHashFile(resourceFile.parentFile.absolutePath, Constants.ROBUST_APK_HASH_FILE_NAME, robustHash)
RobustApkHashZipUtils.addApkHashFile2ApFile(resourceFile, robustHashFile);
}
String buildRubustDir = "${project.buildDir}" + File.separator + "$Constants.ROBUST_GENERATE_DIRECTORY" + File.separator
createHashFile(buildRubustDir, Constants.ROBUST_APK_HASH_FILE_NAME, robustHash)
// def cost = (System.currentTimeMillis() - startTime) / 1000
// logger.quiet "robust apk hash is $robustHash"
// logger.quiet "compute robust apk hash cost $cost second"
// project.logger.quiet("===compute robust apk hash end===")
}
}
}
已解决,请升级到最新版本
异常类型:app编译异常
Robust版本:如:0.4.90
Gradle版本:如:3.5.0
堆栈/日志:
Caused by: groovy.lang.MissingMethodException: No signature of method: org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.get() is applicable for argument types: () values: [] Possible solutions: grep(), getAt(java.lang.String), grep(java.lang.Object), getAt(int), wait(), sort() at robust.gradle.plugin.RobustApkHashAction$_execute_closure1$_closure2.doCall(RobustApkHashAction.groovy:32) at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:645) at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:618) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:404) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:393) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:376) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:213) at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26) at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58) at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54) at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51) at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45) at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31) at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:201) at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70) at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49) at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43) at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:77) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48) at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:120) ... 126 more