Merge changes I3d6506f5,I3667eac9

am: 9dc1756484

Change-Id: I5da90cdf8c36b3d3cdad2c9f3077465087dda545
This commit is contained in:
Jaewoong Jung
2019-10-01 10:09:16 -07:00
committed by android-build-merger
5 changed files with 39 additions and 11 deletions

View File

@@ -154,6 +154,7 @@ type ModuleContext interface {
CheckbuildFile(srcPath Path)
InstallInData() bool
InstallInTestcases() bool
InstallInSanitizerDir() bool
InstallInRecovery() bool
InstallBypassMake() bool
@@ -192,6 +193,7 @@ type Module interface {
Enabled() bool
Target() Target
InstallInData() bool
InstallInTestcases() bool
InstallInSanitizerDir() bool
InstallInRecovery() bool
InstallBypassMake() bool
@@ -832,6 +834,10 @@ func (m *ModuleBase) InstallInData() bool {
return false
}
func (m *ModuleBase) InstallInTestcases() bool {
return false
}
func (m *ModuleBase) InstallInSanitizerDir() bool {
return false
}
@@ -1504,6 +1510,10 @@ func (m *moduleContext) InstallInData() bool {
return m.module.InstallInData()
}
func (m *moduleContext) InstallInTestcases() bool {
return m.module.InstallInTestcases()
}
func (m *moduleContext) InstallInSanitizerDir() bool {
return m.module.InstallInSanitizerDir()
}

View File

@@ -44,6 +44,7 @@ type ModuleInstallPathContext interface {
BaseModuleContext
InstallInData() bool
InstallInTestcases() bool
InstallInSanitizerDir() bool
InstallInRecovery() bool
InstallBypassMake() bool
@@ -1155,6 +1156,8 @@ func modulePartition(ctx ModuleInstallPathContext) string {
var partition string
if ctx.InstallInData() {
partition = "data"
} else if ctx.InstallInTestcases() {
partition = "testcases"
} else if ctx.InstallInRecovery() {
// the layout of recovery partion is the same as that of system partition
partition = "recovery/root/system"

View File

@@ -201,6 +201,7 @@ type moduleInstallPathContextImpl struct {
baseModuleContext
inData bool
inTestcases bool
inSanitizerDir bool
inRecovery bool
}
@@ -219,6 +220,10 @@ func (m moduleInstallPathContextImpl) InstallInData() bool {
return m.inData
}
func (m moduleInstallPathContextImpl) InstallInTestcases() bool {
return m.inTestcases
}
func (m moduleInstallPathContextImpl) InstallInSanitizerDir() bool {
return m.inSanitizerDir
}

View File

@@ -329,7 +329,8 @@ func (app *AndroidApp) AndroidMkEntries() android.AndroidMkEntries {
entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", app.dexpreopter.builtInstalled)
}
for _, split := range app.aapt.splits {
install := "$(LOCAL_MODULE_PATH)/" + strings.TrimSuffix(app.installApkName, ".apk") + split.suffix + ".apk"
install := app.onDeviceDir + "/" +
strings.TrimSuffix(app.installApkName, ".apk") + "_" + split.suffix + ".apk"
entries.AddStrings("LOCAL_SOONG_BUILT_INSTALLED", split.path.String()+":"+install)
}
},

View File

@@ -126,6 +126,10 @@ type AndroidApp struct {
// the install APK name is normally the same as the module name, but can be overridden with PRODUCT_PACKAGE_NAME_OVERRIDES.
installApkName string
installDir android.OutputPath
onDeviceDir string
additionalAaptFlags []string
noticeOutputs android.NoticeOutputs
@@ -319,7 +323,6 @@ func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) android.Path {
} else {
installDir = filepath.Join("app", a.installApkName)
}
a.dexpreopter.installPath = android.PathForModuleInstall(ctx, installDir, a.installApkName+".apk")
a.dexpreopter.isInstallable = Bool(a.properties.Installable)
a.dexpreopter.uncompressedDex = a.shouldUncompressDex(ctx)
@@ -352,7 +355,7 @@ func (a *AndroidApp) jniBuildActions(jniLibs []jniLib, ctx android.ModuleContext
return jniJarFile
}
func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext, installDir android.OutputPath) {
func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext) {
// Collect NOTICE files from all dependencies.
seenModules := make(map[android.Module]bool)
noticePathSet := make(map[android.Path]bool)
@@ -392,7 +395,7 @@ func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext, installDir an
return noticePaths[i].String() < noticePaths[j].String()
})
a.noticeOutputs = android.BuildNoticeOutput(ctx, installDir, a.installApkName+".apk", noticePaths)
a.noticeOutputs = android.BuildNoticeOutput(ctx, a.installDir, a.installApkName+".apk", noticePaths)
}
// Reads and prepends a main cert from the default cert dir if it hasn't been set already, i.e. it
@@ -438,17 +441,19 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
// Check if the install APK name needs to be overridden.
a.installApkName = ctx.DeviceConfig().OverridePackageNameFor(a.Name())
var installDir android.OutputPath
if ctx.ModuleName() == "framework-res" {
// framework-res.apk is installed as system/framework/framework-res.apk
installDir = android.PathForModuleInstall(ctx, "framework")
a.installDir = android.PathForModuleInstall(ctx, "framework")
} else if Bool(a.appProperties.Privileged) {
installDir = android.PathForModuleInstall(ctx, "priv-app", a.installApkName)
a.installDir = android.PathForModuleInstall(ctx, "priv-app", a.installApkName)
} else if ctx.InstallInTestcases() {
a.installDir = android.PathForModuleInstall(ctx, a.installApkName)
} else {
installDir = android.PathForModuleInstall(ctx, "app", a.installApkName)
a.installDir = android.PathForModuleInstall(ctx, "app", a.installApkName)
}
a.onDeviceDir = android.InstallPathToOnDevicePath(ctx, a.installDir)
a.noticeBuildActions(ctx, installDir)
a.noticeBuildActions(ctx)
if Bool(a.appProperties.Embed_notices) || ctx.Config().IsEnvTrue("ALWAYS_EMBED_NOTICES") {
a.aapt.noticeFile = a.noticeOutputs.HtmlGzOutput
}
@@ -494,9 +499,9 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
a.bundleFile = bundleFile
// Install the app package.
ctx.InstallFile(installDir, a.installApkName+".apk", a.outputFile)
ctx.InstallFile(a.installDir, a.installApkName+".apk", a.outputFile)
for _, split := range a.aapt.splits {
ctx.InstallFile(installDir, a.installApkName+"_"+split.suffix+".apk", split.path)
ctx.InstallFile(a.installDir, a.installApkName+"_"+split.suffix+".apk", split.path)
}
}
@@ -598,6 +603,10 @@ type AndroidTest struct {
data android.Paths
}
func (a *AndroidTest) InstallInTestcases() bool {
return true
}
func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// Check if the instrumentation target package is overridden before generating build actions.
if a.appTestProperties.Instrumentation_for != nil {