Lines Matching refs:a
210 func (a *AndroidApp) IsInstallable() bool {
211 return Bool(a.properties.Installable)
214 func (a *AndroidApp) ResourcesNodeDepSet() *android.DepSet[*resourcesNode] {
215 return a.aapt.resourcesNodesDepSet
218 func (a *AndroidApp) OutputFile() android.Path {
219 return a.outputFile
222 func (a *AndroidApp) Certificate() Certificate {
223 return a.certificate
226 func (a *AndroidApp) JniCoverageOutputs() android.Paths {
227 return a.jniCoverageOutputs
230 func (a *AndroidApp) PrivAppAllowlist() android.OptionalPath {
231 return a.privAppAllowlist
251 func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) {
252 if String(a.appProperties.Stl) == "c++_shared" && !a.SdkVersion(ctx).Specified() {
256 sdkDep := decodeSdkDep(ctx, android.SdkContext(a))
257 a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs())
258 a.Module.deps(ctx)
260 a.aapt.deps(ctx, sdkDep)
263 usesSDK := a.SdkVersion(ctx).Specified() && a.SdkVersion(ctx).Kind != android.SdkCorePlatform
265 if usesSDK && Bool(a.appProperties.Jni_uses_sdk_apis) {
268 } else if !usesSDK && Bool(a.appProperties.Jni_uses_platform_apis) {
282 if Bool(a.appProperties.Jni_uses_sdk_apis) {
285 if Bool(a.appProperties.Jni_uses_platform_apis) {
293 if a.RequiresStableAPIs(ctx) || !a.shouldEmbedJnis(ctx) {
302 if a.shouldEmbedJnis(ctx) {
307 ctx.AddFarVariationDependencies(variation, tag, a.appProperties.Jni_libs...)
309 for _, aconfig_declaration := range a.aaptProperties.Flags_packages {
314 func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutatorContext) {
315 cert := android.SrcIsModule(a.getCertString(ctx))
320 if a.appProperties.Privapp_allowlist != nil && !Bool(a.appProperties.Privileged) {
330 for _, cert := range a.appProperties.Additional_certificates {
341 func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
342 applicationId := a.appTestHelperAppProperties.Manifest_values.ApplicationId
344 if a.overridableAppProperties.Package_name != nil {
347 a.aapt.manifestValues.applicationId = *applicationId
349 a.generateAndroidBuildActions(ctx)
356 func (a *AndroidApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
357 a.checkAppSdkVersions(ctx)
358 a.checkEmbedJnis(ctx)
359 a.generateAndroidBuildActions(ctx)
360 a.generateJavaUsedByApex(ctx)
363 func (a *AndroidApp) checkAppSdkVersions(ctx android.ModuleContext) {
364 if a.Updatable() {
365 if !a.SdkVersion(ctx).Stable() {
366 …ctx.PropertyErrorf("sdk_version", "Updatable apps must use stable SDKs, found %v", a.SdkVersion(ct…
368 if String(a.overridableProperties.Min_sdk_version) == "" {
372 if minSdkVersion, err := a.MinSdkVersion(ctx).EffectiveVersion(ctx); err == nil {
373 a.checkJniLibsSdkVersion(ctx, minSdkVersion)
374 android.CheckMinSdkVersion(ctx, minSdkVersion, a.WalkPayloadDeps)
379 if !BoolDefault(a.appProperties.Enforce_default_target_sdk_version, true) {
383 if a.deviceProperties.Target_sdk_version == nil {
384 a.SetEnforceDefaultTargetSdkVersion(true)
388 a.checkPlatformAPI(ctx)
389 a.checkSdkVersions(ctx)
393 func (a *AndroidApp) checkEmbedJnis(ctx android.BaseModuleContext) {
396 hasJnis := len(a.appProperties.Jni_libs) > 0
398 if apkInApex && hasJnis && !Bool(a.appProperties.Use_embedded_native_libs) {
405 func (a *AndroidApp) checkJniLibsSdkVersion(ctx android.ModuleContext, minSdkVersion android.ApiLev…
427 func (a *AndroidApp) useEmbeddedNativeLibs(ctx android.ModuleContext) bool {
428 minSdkVersion, err := a.MinSdkVersion(ctx).EffectiveVersion(ctx)
430 ctx.PropertyErrorf("min_sdk_version", "invalid value %q: %s", a.MinSdkVersion(ctx), err)
434 …return (minSdkVersion.FinalOrFutureInt() >= 23 && Bool(a.appProperties.Use_embedded_native_libs)) …
439 func (a *AndroidApp) shouldUncompressDex(ctx android.ModuleContext) bool {
440 if Bool(a.appProperties.Use_embedded_dex) {
446 if ctx.Config().UncompressPrivAppDex() && a.Privileged() {
454 …return shouldUncompressDex(ctx, android.RemoveOptionalPrebuiltPrefix(ctx.ModuleName()), &a.dexpreo…
457 func (a *AndroidApp) shouldEmbedJnis(ctx android.BaseModuleContext) bool {
458 return ctx.Config().UnbundledBuild() || Bool(a.appProperties.Use_embedded_native_libs) ||
459 Bool(a.appProperties.Updatable) ||
460 a.appProperties.AlwaysPackageNativeLibs
472 func (a *AndroidApp) OverriddenManifestPackageName() string {
473 return a.overriddenManifestPackageName
476 func (a *AndroidApp) renameResourcesPackage() bool {
477 return proptools.BoolDefault(a.overridableAppProperties.Rename_resources_package, true)
495 func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) {
496 usePlatformAPI := proptools.Bool(a.Module.deviceProperties.Platform_apis)
500 a.aapt.usesNonSdkApis = usePlatformAPI
503 a.aapt.hasNoCode = !a.hasCode(ctx)
508 autogenerateRRO := proptools.Bool(a.appProperties.Generate_product_characteristics_rro)
509 hasProduct := android.PrefixInList(a.aaptProperties.Aaptflags, "--product")
515 if !Bool(a.aaptProperties.Aapt_include_all_resources) {
528 if overridden || a.overridableAppProperties.Package_name != nil {
531 manifestPackageName = *a.overridableAppProperties.Package_name
533 …aaptLinkFlags = append(aaptLinkFlags, generateAaptRenamePackageFlags(manifestPackageName, a.rename…
534 a.overriddenManifestPackageName = manifestPackageName
537 aaptLinkFlags = append(aaptLinkFlags, a.additionalAaptFlags...)
539 a.aapt.splitNames = a.appProperties.Package_splits
540 a.aapt.LoggingParent = String(a.overridableAppProperties.Logging_parent)
541 if a.Updatable() {
543 a.aapt.defaultManifestVersion = override
545 a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion
550 …nonFinalIds := a.dexProperties.optimizedResourceShrinkingEnabled(ctx) && a.dexer.effectiveOptimize…
551 a.aapt.buildActions(ctx,
553 sdkContext: android.SdkContext(a),
554 classLoaderContexts: a.classLoaderContexts,
555 excludedLibs: a.usesLibraryProperties.Exclude_uses_libs,
556 enforceDefaultTargetSdkVersion: a.enforceDefaultTargetSdkVersion(),
560 usesLibrary: &a.usesLibrary,
565 a.properties.Manifest = nil
568 func (a *AndroidApp) proguardBuildActions(ctx android.ModuleContext) {
580 …a.Module.extraProguardFlagsFiles = append(a.Module.extraProguardFlagsFiles, staticLibProguardFlagF…
581 if !(a.dexProperties.optimizedResourceShrinkingEnabled(ctx)) {
586 a.Module.extraProguardFlagsFiles = append(a.Module.extraProguardFlagsFiles, a.proguardOptionsFile)
590 func (a *AndroidApp) installPath(ctx android.ModuleContext) android.InstallPath {
595 } else if a.Privileged() {
596 installDir = filepath.Join("priv-app", a.installApkName)
598 installDir = filepath.Join("app", a.installApkName)
601 return android.PathForModuleInstall(ctx, installDir, a.installApkName+".apk")
604 func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) (android.Path, android.Path) {
605 a.dexpreopter.installPath = a.installPath(ctx)
606 a.dexpreopter.isApp = true
607 if a.dexProperties.Uncompress_dex == nil {
609 a.dexProperties.Uncompress_dex = proptools.BoolPtr(a.shouldUncompressDex(ctx))
611 a.dexpreopter.uncompressedDex = *a.dexProperties.Uncompress_dex
612 a.dexpreopter.enforceUsesLibs = a.usesLibrary.enforceUsesLibraries()
613 a.dexpreopter.classLoaderContexts = a.classLoaderContexts
614 a.dexpreopter.manifestFile = a.mergedManifestFile
615 a.dexpreopter.preventInstall = a.appProperties.PreventInstall
617 var packageResources = a.exportPackage
620 if a.dexProperties.resourceShrinkingEnabled(ctx) {
623 a.dexer.resourcesInput = android.OptionalPathForPath(protoFile)
629 if a.useResourceProcessorBusyBox(ctx) {
633 extraClasspathJars = android.Paths{a.aapt.rJar}
634 extraCombinedJars = android.Paths{a.aapt.rJar}
639 extraSrcJars = android.Paths{a.aapt.aaptSrcJar}
642 a.Module.compile(ctx, extraSrcJars, extraClasspathJars, extraCombinedJars)
643 if a.dexProperties.resourceShrinkingEnabled(ctx) {
645 aapt2Convert(ctx, binaryResources, a.dexer.resourcesOutput.Path(), "binary")
650 return a.dexJarFile.PathOrNil(), packageResources
653 func (a *AndroidApp) jniBuildActions(jniLibs []jniLib, prebuiltJniPackages android.Paths, ctx andro…
656 a.jniLibs = jniLibs
657 if a.shouldEmbedJnis(ctx) {
659 a.installPathForJNISymbols = a.installPath(ctx)
660 … TransformJniLibsToJar(ctx, jniJarFile, jniLibs, prebuiltJniPackages, a.useEmbeddedNativeLibs(ctx))
673 a.jniCoverageOutputs = append(a.jniCoverageOutputs, jni.coverageFile.Path())
677 a.embeddedJniLibs = true
683 func (a *AndroidApp) JNISymbolsInstalls(installPath string) android.RuleBuilderInstalls {
685 for _, jniLib := range a.jniLibs {
749 func (a *AndroidApp) InstallApkName() string {
750 return a.installApkName
753 func (a *AndroidApp) createPrivappAllowlist(ctx android.ModuleContext) android.Path {
754 if a.appProperties.Privapp_allowlist == nil {
758 isOverrideApp := a.GetOverriddenBy() != ""
761 return android.PathForModuleSrc(ctx, *a.appProperties.Privapp_allowlist)
764 if a.overridableAppProperties.Package_name == nil {
768 packageName := *a.overridableAppProperties.Package_name
773 Input: android.PathForModuleSrc(ctx, *a.appProperties.Privapp_allowlist),
782 func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
787 a.hideApexVariantFromMake = true
790 a.aapt.useEmbeddedNativeLibs = a.useEmbeddedNativeLibs(ctx)
791 a.aapt.useEmbeddedDex = Bool(a.appProperties.Use_embedded_dex)
795 a.stem = proptools.StringDefault(a.overridableProperties.Stem, ctx.ModuleName())
802 a.installApkName = ctx.DeviceConfig().OverridePackageNameFor(
803 proptools.StringDefault(a.overridableProperties.Stem, a.Name()))
807 a.installDir = android.PathForModuleInstall(ctx, "framework")
808 } else if a.Privileged() {
809 a.installDir = android.PathForModuleInstall(ctx, "priv-app", a.installApkName)
811 …a.installDir = android.PathForModuleInstall(ctx, a.installApkName, ctx.DeviceConfig().DeviceArch())
813 a.installDir = android.PathForModuleInstall(ctx, "app", a.installApkName)
815 a.onDeviceDir = android.InstallPathToOnDevicePath(ctx, a.installDir)
817 a.classLoaderContexts = a.usesLibrary.classLoaderContextForUsesLibDeps(ctx)
818 if a.usesLibrary.shouldDisableDexpreopt {
819 a.dexpreopter.disableDexpreopt()
823 if Bool(a.appProperties.Embed_notices) || ctx.Config().IsEnvTrue("ALWAYS_EMBED_NOTICES") {
829 a.aapt.noticeFile = android.OptionalPathForPath(noticeAssetPath)
833 if Bool(a.appProperties.Enforce_default_target_sdk_version) {
834 a.SetEnforceDefaultTargetSdkVersion(true)
838 a.aaptBuildActions(ctx)
840 a.usesLibrary.freezeEnforceUsesLibraries()
843 if a.usesLibrary.enforceUsesLibraries() {
844 manifestCheckFile := a.usesLibrary.verifyUsesLibrariesManifest(
845 ctx, a.mergedManifestFile, &a.classLoaderContexts)
849 a.proguardBuildActions(ctx)
851 a.linter.mergedManifest = a.aapt.mergedManifestFile
852 a.linter.manifest = a.aapt.manifestPath
853 a.linter.resources = a.aapt.resourceFiles
854 a.linter.buildModuleReportZip = ctx.Config().UnbundledBuildApps()
856 dexJarFile, packageResources := a.dexBuildActions(ctx)
859 checkNativeSdkVersion := a.shouldEmbedJnis(ctx) && !Bool(a.appProperties.Jni_uses_platform_apis)
860 …jniLibs, prebuiltJniPackages, certificates := collectAppDeps(ctx, a, a.shouldEmbedJnis(ctx), check…
861 jniJarFile := a.jniBuildActions(jniLibs, prebuiltJniPackages, ctx)
867 …a.certificate, certificates = processMainCert(a.ModuleBase, a.getCertString(ctx), certificates, ct…
870 packageFile := android.PathForModuleOut(ctx, a.installApkName+".apk")
871 v4SigningRequested := Bool(a.Module.deviceProperties.V4_signature)
874 v4SignatureFile = android.PathForModuleOut(ctx, a.installApkName+".apk.idsig")
877 if lineage := String(a.overridableAppProperties.Lineage); lineage != "" {
880 rotationMinSdkVersion := String(a.overridableAppProperties.RotationMinSdkVersion)
883 a.outputFile = packageFile
885 a.extraOutputFiles = append(a.extraOutputFiles, v4SignatureFile)
888 if a.aapt.noticeFile.Valid() {
894 a.installDir.String() + "/",
896 a.outputFile.String(),
905 for _, split := range a.aapt.splits {
907 packageFile := android.PathForModuleOut(ctx, a.installApkName+"_"+split.suffix+".apk")
909 v4SignatureFile = android.PathForModuleOut(ctx, a.installApkName+"_"+split.suffix+".apk.idsig")
912 a.extraOutputFiles = append(a.extraOutputFiles, packageFile)
914 a.extraOutputFiles = append(a.extraOutputFiles, v4SignatureFile)
920 BuildBundleModule(ctx, bundleFile, a.exportPackage, jniJarFile, dexJarFile)
921 a.bundleFile = bundleFile
923 allowlist := a.createPrivappAllowlist(ctx)
925 a.privAppAllowlist = android.OptionalPathForPath(allowlist)
929 …shouldInstallAppPackage := (Bool(a.Module.properties.Installable) || ctx.Host()) && apexInfo.IsFor…
931 if a.privAppAllowlist.Valid() {
933 allowlistInstallFilename := a.installApkName + ".xml"
934 ctx.InstallFile(allowlistInstallPath, allowlistInstallFilename, a.privAppAllowlist.Path())
938 for _, extra := range a.extraOutputFiles {
939 installed := ctx.InstallFile(a.installDir, extra.Base(), extra)
946 if !a.embeddedJniLibs {
949 symlinkDir := a.installDir.Join(ctx, "lib", archStr)
958 ctx.InstallFile(a.installDir, a.outputFile.Base(), a.outputFile, extraInstalledPaths...)
961 a.buildAppDependencyInfo(ctx)
965 baseModuleName: a.BaseModuleName(),
1069 func (a *AndroidApp) WalkPayloadDeps(ctx android.ModuleContext, do android.PayloadDepsCallback) {
1071 isExternal := !a.DepIsInSameApex(ctx, child)
1081 func (a *AndroidApp) buildAppDependencyInfo(ctx android.ModuleContext) {
1087 …a.WalkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModul…
1125 a.ApexBundleDepsInfo.BuildDepsInfoLists(ctx, a.MinSdkVersion(ctx).String(), depsInfo)
1128 func (a *AndroidApp) enforceDefaultTargetSdkVersion() bool {
1129 return a.appProperties.EnforceDefaultTargetSdkVersion
1132 func (a *AndroidApp) SetEnforceDefaultTargetSdkVersion(val bool) {
1133 a.appProperties.EnforceDefaultTargetSdkVersion = val
1136 func (a *AndroidApp) Updatable() bool {
1137 return Bool(a.appProperties.Updatable)
1140 func (a *AndroidApp) SetUpdatable(val bool) {
1141 a.appProperties.Updatable = &val
1144 func (a *AndroidApp) getCertString(ctx android.BaseModuleContext) string {
1149 return String(a.overridableAppProperties.Certificate)
1152 func (a *AndroidApp) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
1156 return a.Library.DepIsInSameApex(ctx, dep)
1160 func (a *AndroidApp) OutputFiles(tag string) (android.Paths, error) {
1165 return []android.Path{a.proguardOptionsFile}, nil
1167 if a.aaptSrcJar != nil {
1168 return []android.Path{a.aaptSrcJar}, nil
1171 if a.rJar != nil {
1172 return []android.Path{a.rJar}, nil
1175 return []android.Path{a.outputFile}, nil
1177 return []android.Path{a.exportPackage}, nil
1179 return []android.Path{a.aapt.manifestPath}, nil
1181 return a.Library.OutputFiles(tag)
1184 func (a *AndroidApp) Privileged() bool {
1185 return Bool(a.appProperties.Privileged)
1188 func (a *AndroidApp) IsNativeCoverageNeeded(ctx android.IncomingTransitionContext) bool {
1192 func (a *AndroidApp) SetPreventInstall() {
1193 a.appProperties.PreventInstall = true
1196 func (a *AndroidApp) MarkAsCoverageVariant(coverage bool) {
1197 a.appProperties.IsCoverageVariant = coverage
1200 func (a *AndroidApp) EnableCoverageIfNeeded() {}
1204 func (a *AndroidApp) IDEInfo(dpInfo *android.IdeInfo) {
1205 a.Library.IDEInfo(dpInfo)
1206 a.aapt.IDEInfo(dpInfo)
1209 func (a *AndroidApp) productCharacteristicsRROPackageName() string {
1210 return proptools.String(a.appProperties.ProductCharacteristicsRROPackageName)
1213 func (a *AndroidApp) productCharacteristicsRROManifestModuleName() string {
1214 return proptools.String(a.appProperties.ProductCharacteristicsRROManifestModuleName)
1244 a := ctx.Module().(*AndroidApp)
1257 …rroPackageName := a.Name() + "__" + strings.ReplaceAll(characteristics, ",", "_") + "__auto_genera…
1260 a.appProperties.ProductCharacteristicsRROPackageName = proptools.StringPtr(rroPackageName)
1261 a.appProperties.ProductCharacteristicsRROManifestModuleName = proptools.StringPtr(rroManifestName)
1273 Srcs: []string{":" + a.Name() + "{.apk}"},
1289 Resource_dirs: a.aaptProperties.Resource_dirs,
1291 if !Bool(a.aaptProperties.Aapt_include_all_resources) {
1333 func (a *AndroidTest) InstallInTestcases() bool {
1341 func (a *AndroidTest) includedInTestSuite(searchPrefix string) bool {
1342 return android.PrefixInList(a.testProperties.Test_suites, searchPrefix)
1345 func (a *AndroidTestHelperApp) includedInTestSuite(searchPrefix string) bool {
1346 return android.PrefixInList(a.appTestHelperAppProperties.Test_suites, searchPrefix)
1349 func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) {
1351 if a.appTestProperties.Instrumentation_target_package != nil {
1352 a.additionalAaptFlags = append(a.additionalAaptFlags,
1353 "--rename-instrumentation-target-package "+*a.appTestProperties.Instrumentation_target_package)
1354 } else if a.appTestProperties.Instrumentation_for != nil {
1356 …manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(*a.appTestPro…
1358 …a.additionalAaptFlags = append(a.additionalAaptFlags, "--rename-instrumentation-target-package "+m…
1361 applicationId := a.appTestProperties.Manifest_values.ApplicationId
1363 if a.overridableAppProperties.Package_name != nil {
1366 a.aapt.manifestValues.applicationId = *applicationId
1368 a.generateAndroidBuildActions(ctx)
1370 for _, module := range a.testProperties.Test_mainline_modules {
1374 testConfig := tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config,
1375 …a.testProperties.Test_config_template, a.manifestPath, a.testProperties.Test_suites, a.testPropert…
1376 a.testConfig = a.FixTestConfig(ctx, testConfig)
1377 …a.extraTestConfigs = android.PathsForModuleSrc(ctx, a.testProperties.Test_options.Extra_test_confi…
1378 a.data = android.PathsForModuleSrc(ctx, a.testProperties.Data)
1381 InstalledFiles: a.data,
1382 OutputFile: a.OutputFile(),
1383 TestConfig: a.testConfig,
1384 HostRequiredModuleNames: a.HostRequiredModuleNames(),
1385 TestSuites: a.testProperties.Test_suites,
1387 LocalCertificate: a.certificate.AndroidMkString(),
1388 IsUnitTest: Bool(a.testProperties.Test_options.Unit_test),
1397 func (a *AndroidTest) FixTestConfig(ctx android.ModuleContext, testConfig android.Path) android.Pat…
1408 if ctx.ModuleName() != a.installApkName {
1410 command.FlagWithArg("--test-file-name ", a.installApkName+".apk")
1413 if a.overridableAppProperties.Package_name != nil {
1415 command.FlagWithInput("--manifest ", a.manifestPath).
1416 FlagWithArg("--package-name ", *a.overridableAppProperties.Package_name)
1419 if a.appTestProperties.Mainline_package_name != nil {
1421 command.FlagWithArg("--mainline-package-name ", *a.appTestProperties.Mainline_package_name)
1431 func (a *AndroidTest) DepsMutator(ctx android.BottomUpMutatorContext) {
1432 a.AndroidApp.DepsMutator(ctx)
1435 func (a *AndroidTest) OverridablePropertiesDepsMutator(ctx android.BottomUpMutatorContext) {
1436 a.AndroidApp.OverridablePropertiesDepsMutator(ctx)
1437 if a.appTestProperties.Instrumentation_for != nil {
1441 …ctx.AddVariationDependencies(nil, instrumentationForTag, String(a.appTestProperties.Instrumentatio…
1497 func (a *AndroidTestHelperApp) InstallInTestcases() bool {