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

@@ -2067,8 +2067,15 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
switch depTag {
case sharedLibTag, jniLibTag:
isJniLib := depTag == jniLibTag
propertyName := "native_shared_libs"
if isJniLib {
propertyName = "jni_libs"
}
switch ch := child.(type) {
case *cc.Module:
if ch.IsStubs() {
ctx.PropertyErrorf(propertyName, "%q is a stub. Remove it from the list.", depName)
}
fi := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs)
fi.isJniLib = isJniLib
vctx.filesInfo = append(vctx.filesInfo, fi)
@@ -2086,10 +2093,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
vctx.filesInfo = append(vctx.filesInfo, fi)
return true // track transitive dependencies
default:
propertyName := "native_shared_libs"
if isJniLib {
propertyName = "jni_libs"
}
ctx.PropertyErrorf(propertyName, "%q is not a cc_library or cc_library_shared module", depName)
}
case executableTag: