Skip to content

Commit

Permalink
Merge pull request iqiyi#45 from liuke2016/master
Browse files Browse the repository at this point in the history
APG 4.1 compat
  • Loading branch information
kissonchan authored Apr 11, 2021
2 parents 1ec461b + f3c7f36 commit fdc4706
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,25 @@ class QigsawAppBasePlugin extends QigsawPlugin {
ApkSigner apkSigner = new ApkSigner(project, baseVariant)

Task processManifest = AGPCompat.getProcessManifestTask(project, baseVariant.name.capitalize())
Task processManifestForBundle = null
if(versionAGP >= VersionNumber.parse("4.1.0")){
processManifestForBundle = AGPCompat.getProcessManifestForBundleTask(project, baseVariant.name.capitalize())
}
Task mergeAssets = AGPCompat.getMergeAssetsTask(project, baseVariant.name.capitalize())
Task packageApp = AGPCompat.getPackageTask(project, baseVariant.name.capitalize())
Task baseAssemble = AGPCompat.getAssemble(baseVariant)
Task generateBuildConfig = AGPCompat.getGenerateBuildConfigTask(project, baseVariant.name.capitalize())
Task mergeJniLibs = AGPCompat.getMergeJniLibsTask(project, baseVariant.name.capitalize())
Task r8 = AGPCompat.getR8Task(project, baseVariant.name.capitalize())

//3.2.x has no bundle_manifest dir
File bundleManifestDir = AGPCompat.getBundleManifestDirCompat(processManifest, versionAGP)
File bundleManifestDir
if(processManifestForBundle!=null){
//4.x has no bundle_manifest dir
bundleManifestDir = AGPCompat.getBundleManifestDirCompat(processManifestForBundle, versionAGP).getParentFile()
}else{
//3.2.x has no bundle_manifest dir
bundleManifestDir = AGPCompat.getBundleManifestDirCompat(processManifest, versionAGP)
}
File bundleManifestFile = bundleManifestDir == null ? null : new File(bundleManifestDir, SdkConstants.ANDROID_MANIFEST_XML)
File mergedManifestFile = AGPCompat.getMergedManifestFileCompat(processManifest)
File mergedAssetsDir = new File(AGPCompat.getMergedAssetsBaseDirCompat(mergeAssets))
Expand Down Expand Up @@ -144,7 +154,11 @@ class QigsawAppBasePlugin extends QigsawPlugin {
generateQigsawConfig.defaultSplitInfoVersion = completeSplitInfoVersion
generateQigsawConfig.dynamicFeatureNames = dynamicFeaturesNames
generateQigsawConfig.outputDir = qigsawConfigDir
generateQigsawConfig.buildConfigDir = baseVariant.variantData.scope.buildConfigSourceOutputDir
if(versionAGP>=VersionNumber.parse("4.1.0")){
generateQigsawConfig.buildConfigDir = baseVariant.variantData.paths.buildConfigSourceOutputDir
}else{
generateQigsawConfig.buildConfigDir = baseVariant.variantData.scope.buildConfigSourceOutputDir
}
generateQigsawConfig.targetFilesExtractedDir = targetFilesExtractedDir
generateQigsawConfig.setGroup(QIGSAW)

Expand Down Expand Up @@ -176,6 +190,9 @@ class QigsawAppBasePlugin extends QigsawPlugin {
qigsawInstall.setGroup(QIGSAW)

extractTargetFilesFromOldApk.dependsOn processManifest
if(processManifestForBundle!=null){
extractTargetFilesFromOldApk.dependsOn processManifestForBundle
}
qigsawAssemble.dependsOn extractTargetFilesFromOldApk
generateQigsawConfig.dependsOn extractTargetFilesFromOldApk
generateQigsawConfig.dependsOn generateBuildConfig
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,13 @@ class AGPCompat {
Class class_Aapt2MavenUtils = Class.forName("com.android.build.gradle.internal.res.Aapt2MavenUtils")
Method method_getAapt2FromMaven = class_Aapt2MavenUtils.getDeclaredMethod("getAapt2FromMaven", GlobalScope)
method_getAapt2FromMaven.setAccessible(true)
def aapt2 = method_getAapt2FromMaven.invoke(null, variant.variantData.scope.globalScope).singleFile
def versionAGP = VersionNumber.parse(getAndroidGradlePluginVersionCompat())
def aapt2
if(versionAGP >= VersionNumber.parse("4.1.0")){
aapt2 = method_getAapt2FromMaven.invoke(null, variant.variantData.globalScope).singleFile
}else{
aapt2 = method_getAapt2FromMaven.invoke(null, variant.variantData.scope.globalScope).singleFile
}
return aapt2
} catch (Throwable e) {
throw new GradleException("Unable to obtain aapt2", e)
Expand All @@ -72,9 +78,15 @@ class AGPCompat {
}

private static String getMergedManifestDirCompat(Task processManifestTask) {
def versionAGP = VersionNumber.parse(getAndroidGradlePluginVersionCompat())

String manifestOutputBaseDir
try {
manifestOutputBaseDir = processManifestTask.manifestOutputDirectory.asFile.get()
if (versionAGP >= VersionNumber.parse("4.1.0")) {
manifestOutputBaseDir = processManifestTask.multiApkManifestOutputDirectory.get().getAsFile().getAbsolutePath()
}else{
manifestOutputBaseDir = processManifestTask.manifestOutputDirectory.asFile.get()
}
} catch (Throwable ignored) {
manifestOutputBaseDir = processManifestTask.manifestOutputDirectory
}
Expand All @@ -92,9 +104,15 @@ class AGPCompat {
if (versionAGP < VersionNumber.parse("3.3.0")) {
return null
}

File bundleManifestDir = null
try {
bundleManifestDir = processManifestTask.bundleManifestOutputDirectory
if (versionAGP >= VersionNumber.parse("4.1.0")) {
bundleManifestDir = processManifestTask.bundleManifest.get().getAsFile()

}else{
bundleManifestDir = processManifestTask.bundleManifestOutputDirectory
}
} catch (Throwable e) {
try {
bundleManifestDir = processManifestTask.getBundleManifestOutputDirectory().get().getAsFile()
Expand Down Expand Up @@ -185,6 +203,11 @@ class AGPCompat {
return project.tasks.findByName(mergeManifestTaskName)
}

static Task getProcessManifestForBundleTask(Project project, String variantName) {
String mergeManifestTaskName = "processApplicationManifest${variantName}ForBundle"
return project.tasks.findByName(mergeManifestTaskName)
}

static Task getAssemble(ApplicationVariant variant) {
try {
return variant.assembleProvider.get()
Expand Down

0 comments on commit fdc4706

Please sign in to comment.