Merge "Introduce app -deps-info." am: ecea813997 am: 72d9fc732d

Change-Id: Ic0dc82dc5293155d4fe628c0ab03ec9a78e94f1c
This commit is contained in:
satayev 2020-05-11 19:30:34 +00:00 committed by Automerger Merge Worker
commit 5849e9512d
1 changed files with 47 additions and 0 deletions

View File

@ -178,6 +178,8 @@ type AndroidApp struct {
noticeOutputs android.NoticeOutputs
overriddenManifestPackageName string
android.ApexBundleDepsInfo
}
func (a *AndroidApp) IsInstallable() bool {
@ -637,6 +639,8 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
ctx.InstallFile(a.installDir, extra.Base(), extra)
}
}
a.buildAppDependencyInfo(ctx)
}
func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps bool,
@ -705,6 +709,49 @@ func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps
return jniLibs, certificates
}
func (a *AndroidApp) walkPayloadDeps(ctx android.ModuleContext,
do func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool)) {
ctx.WalkDeps(func(child, parent android.Module) bool {
isExternal := !a.DepIsInSameApex(ctx, child)
if am, ok := child.(android.ApexModule); ok {
do(ctx, parent, am, isExternal)
}
return !isExternal
})
}
func (a *AndroidApp) buildAppDependencyInfo(ctx android.ModuleContext) {
if ctx.Host() {
return
}
depsInfo := android.DepNameToDepInfoMap{}
a.walkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) {
depName := to.Name()
if info, exist := depsInfo[depName]; exist {
info.From = append(info.From, from.Name())
info.IsExternal = info.IsExternal && externalDep
depsInfo[depName] = info
} else {
toMinSdkVersion := "(no version)"
if m, ok := to.(interface{ MinSdkVersion() string }); ok {
if v := m.MinSdkVersion(); v != "" {
toMinSdkVersion = v
}
}
depsInfo[depName] = android.ApexModuleDepInfo{
To: depName,
From: []string{from.Name()},
IsExternal: externalDep,
MinSdkVersion: toMinSdkVersion,
}
}
})
a.ApexBundleDepsInfo.BuildDepsInfoLists(ctx, a.MinSdkVersion(), depsInfo)
}
func (a *AndroidApp) getCertString(ctx android.BaseModuleContext) string {
certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(ctx.ModuleName())
if overridden {