Error if vendor apex adds an LLNDK library

This is a common mistake when creating a vendor apex. They often try to
list all dependencies. Adding an LLNDK results in putting a stub library
in APEX, which simply doesn't work.

This change prevents stubs from being added to APEX.

Bug: 314033460
Test: go test ./apex
Change-Id: Ic3365047028d9ab6f06992d52aece5a3890177bb
This commit is contained in:
Jooyung Han
2023-12-05 15:23:56 +09:00
parent fedbb5c3be
commit 2034875cac
2 changed files with 34 additions and 4 deletions

View File

@@ -26,6 +26,7 @@ import (
"testing"
"android/soong/aconfig/codegen"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -960,6 +961,32 @@ func TestApexWithStubs(t *testing.T) {
ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libfoo.shared_from_rust.so")
}
func TestApexShouldNotEmbedStubVariant(t *testing.T) {
testApexError(t, `module "myapex" .*: native_shared_libs: "libbar" is a stub`, `
apex {
name: "myapex",
key: "myapex.key",
vendor: true,
updatable: false,
native_shared_libs: ["libbar"], // should not add an LLNDK stub in a vendor apex
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
cc_library {
name: "libbar",
srcs: ["mylib.cpp"],
llndk: {
symbol_file: "libbar.map.txt",
}
}
`)
}
func TestApexCanUsePrivateApis(t *testing.T) {
ctx := testApex(t, `
apex {