Export app certificates to Make for apkcerts list

Bug: 70669383
Test: m apkcerts-list contains framework-res.apk
Change-Id: I38af458e4262371c9c8368b5eebcff063a9bc359
This commit is contained in:
Colin Cross
2017-12-14 11:22:55 -08:00
parent 16056060d5
commit e1731a5803
4 changed files with 34 additions and 14 deletions

View File

@@ -511,12 +511,13 @@ func (c *config) DefaultAppCertificateDir(ctx PathContext) SourcePath {
} }
} }
func (c *config) DefaultAppCertificate(ctx PathContext) SourcePath { func (c *config) DefaultAppCertificate(ctx PathContext) (pem, key SourcePath) {
defaultCert := String(c.ProductVariables.DefaultAppCertificate) defaultCert := String(c.ProductVariables.DefaultAppCertificate)
if defaultCert != "" { if defaultCert != "" {
return PathForSource(ctx, defaultCert) return PathForSource(ctx, defaultCert+".x509.pem"), PathForSource(ctx, defaultCert+".pk8")
} else { } else {
return c.DefaultAppCertificateDir(ctx).Join(ctx, "testkey") defaultDir := c.DefaultAppCertificateDir(ctx)
return defaultDir.Join(ctx, "testkey.x509.pem"), defaultDir.Join(ctx, "testkey.pk8")
} }
} }

View File

@@ -180,6 +180,8 @@ func (app *AndroidApp) AndroidMk() android.AndroidMkData {
if Bool(app.appProperties.Privileged) { if Bool(app.appProperties.Privileged) {
fmt.Fprintln(w, "LOCAL_PRIVILEGED_MODULE := true") fmt.Fprintln(w, "LOCAL_PRIVILEGED_MODULE := true")
} }
fmt.Fprintln(w, "LOCAL_CERTIFICATE :=", app.certificate.pem.String())
}, },
}, },
} }

View File

@@ -77,6 +77,11 @@ type AndroidApp struct {
exportPackage android.Path exportPackage android.Path
rroDirs android.Paths rroDirs android.Paths
manifestPath android.Path manifestPath android.Path
certificate certificate
}
type certificate struct {
pem, key android.Path
} }
func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) { func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -132,18 +137,30 @@ func (a *AndroidApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
a.Module.compile(ctx, a.aaptSrcJar) a.Module.compile(ctx, a.aaptSrcJar)
} }
certificate := String(a.appProperties.Certificate) c := String(a.appProperties.Certificate)
if certificate == "" { switch {
certificate = ctx.Config().DefaultAppCertificate(ctx).String() case c == "":
} else if dir, _ := filepath.Split(certificate); dir == "" { pem, key := ctx.Config().DefaultAppCertificate(ctx)
certificate = filepath.Join(ctx.Config().DefaultAppCertificateDir(ctx).String(), certificate) a.certificate = certificate{pem, key}
} else { case strings.ContainsRune(c, '/'):
certificate = filepath.Join(android.PathForSource(ctx).String(), certificate) a.certificate = certificate{
android.PathForSource(ctx, c+".x509.pem"),
android.PathForSource(ctx, c+".pk8"),
}
default:
defaultDir := ctx.Config().DefaultAppCertificateDir(ctx)
a.certificate = certificate{
defaultDir.Join(ctx, c+".x509.pem"),
defaultDir.Join(ctx, c+".pk8"),
}
} }
certificates := []string{certificate} certificates := []certificate{a.certificate}
for _, c := range a.appProperties.Additional_certificates { for _, c := range a.appProperties.Additional_certificates {
certificates = append(certificates, filepath.Join(android.PathForSource(ctx).String(), c)) certificates = append(certificates, certificate{
android.PathForSource(ctx, c+".x509.pem"),
android.PathForSource(ctx, c+".pk8"),
})
} }
packageFile := android.PathForModuleOut(ctx, "package.apk") packageFile := android.PathForModuleOut(ctx, "package.apk")

View File

@@ -61,7 +61,7 @@ var combineApk = pctx.AndroidStaticRule("combineApk",
}) })
func CreateAppPackage(ctx android.ModuleContext, outputFile android.WritablePath, func CreateAppPackage(ctx android.ModuleContext, outputFile android.WritablePath,
resJarFile, dexJarFile android.Path, certificates []string) { resJarFile, dexJarFile android.Path, certificates []certificate) {
// TODO(ccross): JNI libs // TODO(ccross): JNI libs
@@ -80,7 +80,7 @@ func CreateAppPackage(ctx android.ModuleContext, outputFile android.WritablePath
var certificateArgs []string var certificateArgs []string
for _, c := range certificates { for _, c := range certificates {
certificateArgs = append(certificateArgs, c+".x509.pem", c+".pk8") certificateArgs = append(certificateArgs, c.pem.String(), c.key.String())
} }
// TODO(ccross): sometimes uncompress dex // TODO(ccross): sometimes uncompress dex