Copy imported APKs to output filename

android_app_import and android_test_import modules with processed: true
and skip_preprocessed_apk_checks are used directly from the source tree.
If the source file name doesn t match the module name and the file is
used as test data it can result in the wrong filename being used.  Copy
the source file to an output file with the correct name first.

Bug: 290376750
Test: m CtsAppSecurityHostTestCases
(cherry picked from https://android-review.googlesource.com/q/commit:5780d57a7116643c6d9eac735982ac44bd6b0189)
Merged-In: I4a6dd1c5e48db7085ea41035def31f0844948a46
Change-Id: I4a6dd1c5e48db7085ea41035def31f0844948a46
This commit is contained in:
Colin Cross
2023-07-10 15:15:27 -07:00
committed by Ivan Chiang
parent 955f87b65a
commit 2150160d8f

View File

@@ -319,7 +319,16 @@ func (a *AndroidAppImport) generateAndroidBuildActions(ctx android.ModuleContext
// Sign or align the package if package has not been preprocessed // Sign or align the package if package has not been preprocessed
if a.preprocessed { if a.preprocessed {
a.outputFile = srcApk var output android.WritablePath
// If using the input APK unmodified, still make a copy of it so that the output filename has the
// right basename.
output = android.PathForModuleOut(ctx, apkFilename)
ctx.Build(pctx, android.BuildParams{
Rule: android.Cp,
Input: srcApk,
Output: output,
})
a.outputFile = output
a.certificate = PresignedCertificate a.certificate = PresignedCertificate
} else if !Bool(a.properties.Presigned) { } else if !Bool(a.properties.Presigned) {
// If the certificate property is empty at this point, default_dev_cert must be set to true. // If the certificate property is empty at this point, default_dev_cert must be set to true.