Loading java/aar.go +30 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ type aaptProperties struct { // ones. Aapt_include_all_resources *bool // list of files to use as assets. Assets []string `android:"path"` // list of directories relative to the Blueprints file containing assets. // Defaults to ["assets"] if a directory called assets exists. Set to [] // to disable the default. Loading Loading @@ -192,6 +195,11 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext android.SdkConte linkFlags = append(linkFlags, a.aaptProperties.Aaptflags...) // Find implicit or explicit asset and resource dirs assets := android.PathsRelativeToModuleSourceDir(android.SourceInput{ Context: ctx, Paths: a.aaptProperties.Assets, IncludeDirs: false, }) assetDirs := android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Asset_dirs, "assets") resourceDirs := android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Resource_dirs, "res") resourceZips := android.PathsForModuleSrc(ctx, a.aaptProperties.Resource_zips) Loading Loading @@ -226,6 +234,28 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext android.SdkConte assetDirStrings = append(assetDirStrings, filepath.Dir(a.noticeFile.Path().String())) assetDeps = append(assetDeps, a.noticeFile.Path()) } if len(assets) > 0 { // aapt2 doesn't support adding individual asset files. Create a temp directory to hold asset // files and pass it to aapt2. tmpAssetDir := android.PathForModuleOut(ctx, "tmp_asset_dir") rule := android.NewRuleBuilder(pctx, ctx) rule.Command(). Text("rm -rf").Text(tmpAssetDir.String()). Text("&&"). Text("mkdir -p").Text(tmpAssetDir.String()) for _, asset := range assets { output := tmpAssetDir.Join(ctx, asset.Rel()) assetDeps = append(assetDeps, output) rule.Command().Text("mkdir -p").Text(filepath.Dir(output.String())) rule.Command().Text("cp").Input(asset).Output(output) } rule.Build("tmp_asset_dir", "tmp_asset_dir") assetDirStrings = append(assetDirStrings, tmpAssetDir.String()) } linkFlags = append(linkFlags, "--manifest "+manifestPath.String()) linkDeps = append(linkDeps, manifestPath) Loading java/app_test.go +34 −3 Original line number Diff line number Diff line Loading @@ -608,6 +608,15 @@ func TestLibraryAssets(t *testing.T) { asset_dirs: ["assets_b"], } android_library { name: "lib5", sdk_version: "current", assets: [ "path/to/asset_file_1", "path/to/asset_file_2", ], } android_library_import { name: "import", sdk_version: "current", Loading @@ -619,6 +628,8 @@ func TestLibraryAssets(t *testing.T) { name string assetFlag string assetPackages []string tmpAssetDirInputs []string tmpAssetDirOutputs []string }{ { name: "foo", Loading @@ -644,6 +655,18 @@ func TestLibraryAssets(t *testing.T) { name: "lib4", assetFlag: "-A assets_b", }, { name: "lib5", assetFlag: "-A out/soong/.intermediates/lib5/android_common/tmp_asset_dir", tmpAssetDirInputs: []string{ "path/to/asset_file_1", "path/to/asset_file_2", }, tmpAssetDirOutputs: []string{ "out/soong/.intermediates/lib5/android_common/tmp_asset_dir/path/to/asset_file_1", "out/soong/.intermediates/lib5/android_common/tmp_asset_dir/path/to/asset_file_2", }, }, } ctx := testApp(t, bp) Loading Loading @@ -671,6 +694,14 @@ func TestLibraryAssets(t *testing.T) { mergeAssets := m.Output("package-res.apk") android.AssertPathsRelativeToTopEquals(t, "mergeAssets inputs", test.assetPackages, mergeAssets.Inputs) } if len(test.tmpAssetDirInputs) > 0 { rule := m.Rule("tmp_asset_dir") inputs := rule.Implicits outputs := append(android.WritablePaths{rule.Output}, rule.ImplicitOutputs...).Paths() android.AssertPathsRelativeToTopEquals(t, "tmp_asset_dir inputs", test.tmpAssetDirInputs, inputs) android.AssertPathsRelativeToTopEquals(t, "tmp_asset_dir outputs", test.tmpAssetDirOutputs, outputs) } }) } } Loading Loading
java/aar.go +30 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ type aaptProperties struct { // ones. Aapt_include_all_resources *bool // list of files to use as assets. Assets []string `android:"path"` // list of directories relative to the Blueprints file containing assets. // Defaults to ["assets"] if a directory called assets exists. Set to [] // to disable the default. Loading Loading @@ -192,6 +195,11 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext android.SdkConte linkFlags = append(linkFlags, a.aaptProperties.Aaptflags...) // Find implicit or explicit asset and resource dirs assets := android.PathsRelativeToModuleSourceDir(android.SourceInput{ Context: ctx, Paths: a.aaptProperties.Assets, IncludeDirs: false, }) assetDirs := android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Asset_dirs, "assets") resourceDirs := android.PathsWithOptionalDefaultForModuleSrc(ctx, a.aaptProperties.Resource_dirs, "res") resourceZips := android.PathsForModuleSrc(ctx, a.aaptProperties.Resource_zips) Loading Loading @@ -226,6 +234,28 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkContext android.SdkConte assetDirStrings = append(assetDirStrings, filepath.Dir(a.noticeFile.Path().String())) assetDeps = append(assetDeps, a.noticeFile.Path()) } if len(assets) > 0 { // aapt2 doesn't support adding individual asset files. Create a temp directory to hold asset // files and pass it to aapt2. tmpAssetDir := android.PathForModuleOut(ctx, "tmp_asset_dir") rule := android.NewRuleBuilder(pctx, ctx) rule.Command(). Text("rm -rf").Text(tmpAssetDir.String()). Text("&&"). Text("mkdir -p").Text(tmpAssetDir.String()) for _, asset := range assets { output := tmpAssetDir.Join(ctx, asset.Rel()) assetDeps = append(assetDeps, output) rule.Command().Text("mkdir -p").Text(filepath.Dir(output.String())) rule.Command().Text("cp").Input(asset).Output(output) } rule.Build("tmp_asset_dir", "tmp_asset_dir") assetDirStrings = append(assetDirStrings, tmpAssetDir.String()) } linkFlags = append(linkFlags, "--manifest "+manifestPath.String()) linkDeps = append(linkDeps, manifestPath) Loading
java/app_test.go +34 −3 Original line number Diff line number Diff line Loading @@ -608,6 +608,15 @@ func TestLibraryAssets(t *testing.T) { asset_dirs: ["assets_b"], } android_library { name: "lib5", sdk_version: "current", assets: [ "path/to/asset_file_1", "path/to/asset_file_2", ], } android_library_import { name: "import", sdk_version: "current", Loading @@ -619,6 +628,8 @@ func TestLibraryAssets(t *testing.T) { name string assetFlag string assetPackages []string tmpAssetDirInputs []string tmpAssetDirOutputs []string }{ { name: "foo", Loading @@ -644,6 +655,18 @@ func TestLibraryAssets(t *testing.T) { name: "lib4", assetFlag: "-A assets_b", }, { name: "lib5", assetFlag: "-A out/soong/.intermediates/lib5/android_common/tmp_asset_dir", tmpAssetDirInputs: []string{ "path/to/asset_file_1", "path/to/asset_file_2", }, tmpAssetDirOutputs: []string{ "out/soong/.intermediates/lib5/android_common/tmp_asset_dir/path/to/asset_file_1", "out/soong/.intermediates/lib5/android_common/tmp_asset_dir/path/to/asset_file_2", }, }, } ctx := testApp(t, bp) Loading Loading @@ -671,6 +694,14 @@ func TestLibraryAssets(t *testing.T) { mergeAssets := m.Output("package-res.apk") android.AssertPathsRelativeToTopEquals(t, "mergeAssets inputs", test.assetPackages, mergeAssets.Inputs) } if len(test.tmpAssetDirInputs) > 0 { rule := m.Rule("tmp_asset_dir") inputs := rule.Implicits outputs := append(android.WritablePaths{rule.Output}, rule.ImplicitOutputs...).Paths() android.AssertPathsRelativeToTopEquals(t, "tmp_asset_dir inputs", test.tmpAssetDirInputs, inputs) android.AssertPathsRelativeToTopEquals(t, "tmp_asset_dir outputs", test.tmpAssetDirOutputs, outputs) } }) } } Loading