Link type will be check in android_library also
For now, Soong checks link-type in java_library, so it cannot block hidden api usage from android_library that app links with. So we should add check in 'android_library' Test: m nothing Change-Id: Ic040270ec668bdd693b690ac8a88be1048922c3b
This commit is contained in:
26
java/java.go
26
java/java.go
@@ -672,7 +672,12 @@ const (
|
||||
javaPlatform
|
||||
)
|
||||
|
||||
func getLinkType(m *Module, name string) (ret linkType, stubs bool) {
|
||||
type linkTypeContext interface {
|
||||
android.Module
|
||||
getLinkType(name string) (ret linkType, stubs bool)
|
||||
}
|
||||
|
||||
func (m *Module) getLinkType(name string) (ret linkType, stubs bool) {
|
||||
ver := m.sdkVersion()
|
||||
switch {
|
||||
case name == "core.current.stubs" || name == "core.platform.api.stubs" ||
|
||||
@@ -703,16 +708,16 @@ func getLinkType(m *Module, name string) (ret linkType, stubs bool) {
|
||||
}
|
||||
}
|
||||
|
||||
func checkLinkType(ctx android.ModuleContext, from *Module, to *Library, tag dependencyTag) {
|
||||
func checkLinkType(ctx android.ModuleContext, from *Module, to linkTypeContext, tag dependencyTag) {
|
||||
if ctx.Host() {
|
||||
return
|
||||
}
|
||||
|
||||
myLinkType, stubs := getLinkType(from, ctx.ModuleName())
|
||||
myLinkType, stubs := from.getLinkType(ctx.ModuleName())
|
||||
if stubs {
|
||||
return
|
||||
}
|
||||
otherLinkType, _ := getLinkType(&to.Module, ctx.OtherModuleName(to))
|
||||
otherLinkType, _ := to.getLinkType(ctx.OtherModuleName(to))
|
||||
commonMessage := "Adjust sdk_version: property of the source or target module so that target module is built with the same or smaller API set than the source."
|
||||
|
||||
switch myLinkType {
|
||||
@@ -769,11 +774,14 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
||||
// Handled by AndroidApp.collectAppDeps
|
||||
return
|
||||
}
|
||||
|
||||
if to, ok := module.(*Library); ok {
|
||||
switch tag {
|
||||
case bootClasspathTag, libTag, staticLibTag:
|
||||
checkLinkType(ctx, j, to, tag.(dependencyTag))
|
||||
switch module.(type) {
|
||||
case *Library:
|
||||
case *AndroidLibrary:
|
||||
if to, ok := module.(linkTypeContext); ok {
|
||||
switch tag {
|
||||
case bootClasspathTag, libTag, staticLibTag:
|
||||
checkLinkType(ctx, j, to, tag.(dependencyTag))
|
||||
}
|
||||
}
|
||||
}
|
||||
switch dep := module.(type) {
|
||||
|
Reference in New Issue
Block a user