Skip to content

Commit 5d0ed0b

Browse files
committed
* just compat for latest version
1 parent 0a7b36a commit 5d0ed0b

File tree

3 files changed

+74
-19
lines changed

3 files changed

+74
-19
lines changed

tinker-build/tinker-patch-gradle-plugin/src/main/groovy/com/tencent/tinker/build/gradle/TinkerPatchPlugin.groovy

+53-17
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,10 @@ class TinkerPatchPlugin implements Plugin<Project> {
161161

162162
if (variantOutput.metaClass.hasProperty(variantOutput, 'processResourcesProvider')) {
163163
manifestTask.manifestPath = variantOutput.processResourcesProvider.get().manifestFile
164-
} else if (variantOutput.processManifest.properties['manifestOutputFile'] != null) {
165-
manifestTask.manifestPath = variantOutput.processManifest.manifestOutputFile
166-
} else if (variantOutput.processResources.properties['manifestFile'] != null) {
164+
} else if (variantOutput.processResources.metaClass.hasProperty(variantOutput.processResources, 'manifestFile')) {
167165
manifestTask.manifestPath = variantOutput.processResources.manifestFile
166+
} else if (variantOutput.processManifest.metaClass.hasProperty(variantOutput.processManifest, 'manifestOutputFile')) {
167+
manifestTask.manifestPath = variantOutput.processManifest.manifestOutputFile
168168
}
169169

170170

@@ -188,11 +188,15 @@ class TinkerPatchPlugin implements Plugin<Project> {
188188

189189

190190
if (variantOutput.metaClass.hasProperty(variantOutput, 'processResourcesProvider')) {
191-
applyResourceTask.resDir = variantOutput.processResourcesProvider.get().inputResourcesDir.getFiles().first()
192-
} else if (variantOutput.processResources.properties['resDir'] != null) {
193-
applyResourceTask.resDir = variantOutput.processResources.resDir
194-
} else if (variantOutput.processResources.properties['inputResourcesDir'] != null) {
191+
try {
192+
applyResourceTask.resDir = variantOutput.processResourcesProvider.get().inputResourcesDir.getAsFile().get()
193+
} catch (Exception e) {
194+
applyResourceTask.resDir = variantOutput.processResourcesProvider.get().inputResourcesDir.getFiles().first()
195+
}
196+
} else if (variantOutput.processResources.metaClass.hasProperty(variantOutput.processResources, 'inputResourcesDir')) {
195197
applyResourceTask.resDir = variantOutput.processResources.inputResourcesDir.getFiles().first()
198+
} else if (variantOutput.processResources.metaClass.hasProperty(variantOutput.processResources, 'resDir')) {
199+
applyResourceTask.resDir = variantOutput.processResources.resDir
196200
}
197201

198202
//let applyResourceTask run after manifestTask
@@ -298,7 +302,11 @@ class TinkerPatchPlugin implements Plugin<Project> {
298302
if (variant.metaClass.hasProperty(variant, 'packageApplicationProvider')) {
299303
def packageAndroidArtifact = variant.packageApplicationProvider.get()
300304
if (packageAndroidArtifact != null) {
301-
parentFile = new File(packageAndroidArtifact.outputDirectory, output.apkData.outputFileName)
305+
try {
306+
parentFile = new File(packageAndroidArtifact.outputDirectory.getAsFile().get(), output.apkData.outputFileName)
307+
} catch (Exception e) {
308+
parentFile = new File(packageAndroidArtifact.outputDirectory, output.apkData.outputFileName)
309+
}
302310
} else {
303311
parentFile = output.mainOutputFile.outputFile
304312
}
@@ -357,7 +365,11 @@ class TinkerPatchPlugin implements Plugin<Project> {
357365
if (variant.metaClass.hasProperty(variant, 'packageApplicationProvider')) {
358366
def packageAndroidArtifact = variant.packageApplicationProvider.get()
359367
if (packageAndroidArtifact != null) {
360-
tinkerPatchBuildTask.buildApkPath = new File(packageAndroidArtifact.outputDirectory, output.apkData.outputFileName)
368+
try {
369+
tinkerPatchBuildTask.buildApkPath = new File(packageAndroidArtifact.outputDirectory.getAsFile().get(), output.apkData.outputFileName)
370+
} catch (Exception e) {
371+
tinkerPatchBuildTask.buildApkPath = new File(packageAndroidArtifact.outputDirectory, output.apkData.outputFileName)
372+
}
361373
} else {
362374
tinkerPatchBuildTask.buildApkPath = output.mainOutputFile.outputFile
363375
}
@@ -433,9 +445,20 @@ class TinkerPatchPlugin implements Plugin<Project> {
433445

434446
File getManifestMultiDexKeepProguard(def applicationVariant) {
435447
File multiDexKeepProguard = null
448+
436449
try {
437-
multiDexKeepProguard = applicationVariant.getVariantData().getScope().getManifestKeepListProguardFile()
450+
File file = applicationVariant.getVariantData().getScope().getArtifacts().getFinalProduct(
451+
Class.forName("com.android.build.gradle.internal.scope.InternalArtifactType")
452+
.getDeclaredField("LEGACY_MULTIDEX_AAPT_DERIVED_PROGUARD_RULES")
453+
.get(null)
454+
).getOrNull()?.getAsFile()
455+
if (file != null && file.getName() != '__EMPTY_DIR__') {
456+
multiDexKeepProguard = file
457+
}
438458
} catch (Throwable ignore) {
459+
}
460+
461+
if (multiDexKeepProguard == null) {
439462
try {
440463
def buildableArtifact = applicationVariant.getVariantData().getScope().getArtifacts().getFinalArtifactFiles(
441464
Class.forName("com.android.build.gradle.internal.scope.InternalArtifactType")
@@ -445,17 +468,30 @@ class TinkerPatchPlugin implements Plugin<Project> {
445468

446469
//noinspection GroovyUncheckedAssignmentOfMemberOfRawType,UnnecessaryQualifiedReference
447470
multiDexKeepProguard = com.google.common.collect.Iterators.getOnlyElement(buildableArtifact.iterator())
448-
} catch (Throwable e) {
471+
} catch (Throwable ignore) {
449472

450473
}
451-
if (multiDexKeepProguard == null) {
452-
try {
453-
multiDexKeepProguard = applicationVariant.getVariantData().getScope().getManifestKeepListFile()
454-
} catch (Throwable e) {
455-
mProject.logger.error("can't find getManifestKeepListFile method, exception:${e}")
456-
}
474+
}
475+
476+
if (multiDexKeepProguard == null) {
477+
try {
478+
multiDexKeepProguard = applicationVariant.getVariantData().getScope().getManifestKeepListProguardFile()
479+
} catch (Throwable ignore) {
480+
457481
}
458482
}
483+
484+
if (multiDexKeepProguard == null) {
485+
try {
486+
multiDexKeepProguard = applicationVariant.getVariantData().getScope().getManifestKeepListFile()
487+
} catch (Throwable ignore) {
488+
489+
}
490+
}
491+
492+
if (multiDexKeepProguard == null) {
493+
mProject.logger.error("can't get multiDexKeepProguard file")
494+
}
459495
return multiDexKeepProguard
460496
}
461497

tinker-build/tinker-patch-gradle-plugin/src/main/groovy/com/tencent/tinker/build/gradle/task/TinkerResourceIdTask.groovy

+11-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,17 @@ public class TinkerResourceIdTask extends DefaultTask {
184184
Map<String, String> styles = new HashMap<>()
185185
def mergeResourcesTask = project.tasks.findByName("merge${variantName.capitalize()}Resources")
186186
List<File> resDirCandidateList = new ArrayList<>()
187-
resDirCandidateList.add(mergeResourcesTask.outputDir)
187+
try {
188+
def output = mergeResourcesTask.outputDir
189+
if (output instanceof File) {
190+
resDirCandidateList.add(output)
191+
} else {
192+
resDirCandidateList.add(output.getAsFile().get())
193+
}
194+
} catch (Exception ignore) {
195+
196+
}
197+
188198
resDirCandidateList.add(new File(mergeResourcesTask.getIncrementalFolder(), "merged.dir"))
189199
resDirCandidateList.each {
190200
it.eachFileRecurse(FileType.FILES) {

tinker-sample-android/app/build.gradle

+10-1
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ android {
133133
jniLibs.srcDirs = ['libs']
134134
}
135135
}
136+
137+
packagingOptions {
138+
exclude "/META-INF/**"
139+
}
136140
}
137141

138142
def bakPath = file("${buildDir}/bakApk/")
@@ -418,7 +422,11 @@ if (buildWithTinker()) {
418422
if (variant.metaClass.hasProperty(variant, 'packageApplicationProvider')) {
419423
def packageAndroidArtifact = variant.packageApplicationProvider.get()
420424
if (packageAndroidArtifact != null) {
421-
from new File(packageAndroidArtifact.outputDirectory, variant.outputs.first().apkData.outputFileName)
425+
try {
426+
from new File(packageAndroidArtifact.outputDirectory.getAsFile().get(), variant.outputs.first().apkData.outputFileName)
427+
} catch (Exception e) {
428+
from new File(packageAndroidArtifact.outputDirectory, variant.outputs.first().apkData.outputFileName)
429+
}
422430
} else {
423431
from variant.outputs.first().mainOutputFile.outputFile
424432
}
@@ -438,6 +446,7 @@ if (buildWithTinker()) {
438446
}
439447

440448
from "${buildDir}/intermediates/symbols/${variant.dirName}/R.txt"
449+
from "${buildDir}/intermediates/symbol_list/${variant.dirName}/R.txt"
441450
into destPath
442451
rename { String fileName ->
443452
fileName.replace("R.txt", "${newFileNamePrefix}-R.txt")

0 commit comments

Comments
 (0)