aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/app.go12
-rw-r--r--java/app_test.go86
-rw-r--r--java/java_test.go4
3 files changed, 100 insertions, 2 deletions
diff --git a/java/app.go b/java/app.go
index 335d9fc7..07a97ede 100644
--- a/java/app.go
+++ b/java/app.go
@@ -120,7 +120,7 @@ func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) {
ctx.AddFarVariationDependencies(variation, tag, a.appProperties.Jni_libs...)
}
- cert := android.SrcIsModule(String(a.appProperties.Certificate))
+ cert := android.SrcIsModule(a.getCertString(ctx))
if cert != "" {
ctx.AddDependency(ctx.Module(), certificateTag, cert)
}
@@ -241,7 +241,7 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
return
}
- cert := String(a.appProperties.Certificate)
+ cert := a.getCertString(ctx)
certModule := android.SrcIsModule(cert)
if certModule != "" {
a.certificate = certificateDeps[0]
@@ -327,6 +327,14 @@ func (a *AndroidApp) collectAppDeps(ctx android.ModuleContext) ([]jniLib, []Cert
return jniLibs, certificates
}
+func (a *AndroidApp) getCertString(ctx android.BaseContext) string {
+ certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(ctx.ModuleName())
+ if overridden {
+ return ":" + certificate
+ }
+ return String(a.appProperties.Certificate)
+}
+
func AndroidAppFactory() android.Module {
module := &AndroidApp{}
diff --git a/java/app_test.go b/java/app_test.go
index f6476dc6..9e2bc234 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -454,3 +454,89 @@ func TestJNI(t *testing.T) {
})
}
}
+
+func TestCertificates(t *testing.T) {
+ testCases := []struct {
+ name string
+ bp string
+ certificateOverride string
+ expected string
+ }{
+ {
+ name: "default",
+ bp: `
+ android_app {
+ name: "foo",
+ srcs: ["a.java"],
+ }
+ `,
+ certificateOverride: "",
+ expected: "build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8",
+ },
+ {
+ name: "module certificate property",
+ bp: `
+ android_app {
+ name: "foo",
+ srcs: ["a.java"],
+ certificate: ":new_certificate"
+ }
+
+ android_app_certificate {
+ name: "new_certificate",
+ certificate: "cert/new_cert",
+ }
+ `,
+ certificateOverride: "",
+ expected: "cert/new_cert.x509.pem cert/new_cert.pk8",
+ },
+ {
+ name: "path certificate property",
+ bp: `
+ android_app {
+ name: "foo",
+ srcs: ["a.java"],
+ certificate: "expiredkey"
+ }
+ `,
+ certificateOverride: "",
+ expected: "build/target/product/security/expiredkey.x509.pem build/target/product/security/expiredkey.pk8",
+ },
+ {
+ name: "certificate overrides",
+ bp: `
+ android_app {
+ name: "foo",
+ srcs: ["a.java"],
+ certificate: "expiredkey"
+ }
+
+ android_app_certificate {
+ name: "new_certificate",
+ certificate: "cert/new_cert",
+ }
+ `,
+ certificateOverride: "foo:new_certificate",
+ expected: "cert/new_cert.x509.pem cert/new_cert.pk8",
+ },
+ }
+
+ for _, test := range testCases {
+ t.Run(test.name, func(t *testing.T) {
+ config := testConfig(nil)
+ if test.certificateOverride != "" {
+ config.TestProductVariables.CertificateOverrides = []string{test.certificateOverride}
+ }
+ ctx := testAppContext(config, test.bp, nil)
+
+ run(t, ctx, config)
+ foo := ctx.ModuleForTests("foo", "android_common")
+
+ signapk := foo.Output("foo.apk")
+ signFlags := signapk.Args["certificates"]
+ if test.expected != signFlags {
+ t.Errorf("Incorrect signing flags, expected: %q, got: %q", test.expected, signFlags)
+ }
+ })
+ }
+}
diff --git a/java/java_test.go b/java/java_test.go
index a0d962e3..a0b8952c 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -71,6 +71,7 @@ func testContext(config android.Config, bp string,
ctx := android.NewTestArchContext()
ctx.RegisterModuleType("android_app", android.ModuleFactoryAdaptor(AndroidAppFactory))
+ ctx.RegisterModuleType("android_app_certificate", android.ModuleFactoryAdaptor(AndroidAppCertificateFactory))
ctx.RegisterModuleType("android_library", android.ModuleFactoryAdaptor(AndroidLibraryFactory))
ctx.RegisterModuleType("android_test", android.ModuleFactoryAdaptor(AndroidTestFactory))
ctx.RegisterModuleType("android_test_helper_app", android.ModuleFactoryAdaptor(AndroidTestHelperAppFactory))
@@ -226,6 +227,9 @@ func testContext(config android.Config, bp string,
"bar-doc/IFoo.aidl": nil,
"bar-doc/known_oj_tags.txt": nil,
"external/doclava/templates-sdk": nil,
+
+ "cert/new_cert.x509.pem": nil,
+ "cert/new_cert.pk8": nil,
}
for k, v := range fs {