Don't panic if no certificates found
Getting the first certificate will panic if there are no certificates, which can happen when AllowMissingDependencies is set and the certificate property is a module reference to a missing module. Only get the first certificate if the list is not nil. Bug: 228379411 Test: TestAppMissingCertificateAllowMissingDependencies Change-Id: I046d75dbbd4f21f4a2b6851f558e430e9879fcff
This commit is contained in:
16
java/app.go
16
java/app.go
@@ -638,7 +638,21 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
}
|
||||
|
||||
certificates := processMainCert(a.ModuleBase, a.getCertString(ctx), certificateDeps, ctx)
|
||||
a.certificate = certificates[0]
|
||||
|
||||
// This can be reached with an empty certificate list if AllowMissingDependencies is set
|
||||
// and the certificate property for this module is a module reference to a missing module.
|
||||
if len(certificates) > 0 {
|
||||
a.certificate = certificates[0]
|
||||
} else {
|
||||
if !ctx.Config().AllowMissingDependencies() && len(ctx.GetMissingDependencies()) > 0 {
|
||||
panic("Should only get here if AllowMissingDependencies set and there are missing dependencies")
|
||||
}
|
||||
// Set a certificate to avoid panics later when accessing it.
|
||||
a.certificate = Certificate{
|
||||
Key: android.PathForModuleOut(ctx, "missing.pk8"),
|
||||
Pem: android.PathForModuleOut(ctx, "missing.pem"),
|
||||
}
|
||||
}
|
||||
|
||||
// Build a final signed app package.
|
||||
packageFile := android.PathForModuleOut(ctx, a.installApkName+".apk")
|
||||
|
Reference in New Issue
Block a user