Loading apex/apex_test.go +30 −2 Original line number Diff line number Diff line Loading @@ -91,6 +91,8 @@ func testApexContext(t *testing.T, bp string) (*android.TestContext, android.Con ctx.RegisterModuleType("sh_binary", android.ModuleFactoryAdaptor(android.ShBinaryFactory)) ctx.RegisterModuleType("android_app_certificate", android.ModuleFactoryAdaptor(java.AndroidAppCertificateFactory)) ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(android.FileGroupFactory)) ctx.RegisterModuleType("java_library", android.ModuleFactoryAdaptor(java.LibraryFactory)) ctx.PreArchMutators(func(ctx android.RegisterMutatorsContext) { ctx.BottomUp("prebuilts", android.PrebuiltMutator).Parallel() }) Loading Loading @@ -205,6 +207,7 @@ func testApexContext(t *testing.T, bp string) (*android.TestContext, android.Con "mytest3.cpp": nil, "myprebuilt": nil, "my_include": nil, "foo/bar/MyClass.java": nil, "vendor/foo/devkeys/test.x509.pem": nil, "vendor/foo/devkeys/test.pk8": nil, "testkey.x509.pem": nil, Loading Loading @@ -280,7 +283,8 @@ func TestBasicApex(t *testing.T) { both: { binaries: ["foo",], } } }, java_libs: ["myjar"], } apex { Loading Loading @@ -338,6 +342,23 @@ func TestBasicApex(t *testing.T) { stl: "none", notice: "custom_notice", } java_library { name: "myjar", srcs: ["foo/bar/MyClass.java"], sdk_version: "none", system_modules: "none", compile_dex: true, static_libs: ["myotherjar"], } java_library { name: "myotherjar", srcs: ["foo/bar/MyClass.java"], sdk_version: "none", system_modules: "none", compile_dex: true, } `) apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") Loading @@ -354,17 +375,24 @@ func TestBasicApex(t *testing.T) { // Ensure that apex variant is created for the direct dep ensureListContains(t, ctx.ModuleVariantsForTests("mylib"), "android_arm64_armv8-a_core_shared_myapex") ensureListContains(t, ctx.ModuleVariantsForTests("myjar"), "android_common_myapex") // Ensure that apex variant is created for the indirect dep ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_core_shared_myapex") ensureListContains(t, ctx.ModuleVariantsForTests("myotherjar"), "android_common_myapex") // Ensure that both direct and indirect deps are copied into apex ensureContains(t, copyCmds, "image.apex/lib64/mylib.so") ensureContains(t, copyCmds, "image.apex/lib64/mylib2.so") ensureContains(t, copyCmds, "image.apex/javalib/myjar.jar") // .. but not for java libs ensureNotContains(t, copyCmds, "image.apex/javalib/myotherjar.jar") // Ensure that the platform variant ends with _core_shared // Ensure that the platform variant ends with _core_shared or _common ensureListContains(t, ctx.ModuleVariantsForTests("mylib"), "android_arm64_armv8-a_core_shared") ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_core_shared") ensureListContains(t, ctx.ModuleVariantsForTests("myjar"), "android_common") ensureListContains(t, ctx.ModuleVariantsForTests("myotherjar"), "android_common") // Ensure that all symlinks are present. found_foo_link_64 := false Loading java/androidmk.go +15 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,11 @@ func (library *Library) AndroidMkHostDex(w io.Writer, name string, data android. } func (library *Library) AndroidMk() android.AndroidMkData { if !library.IsForPlatform() { return android.AndroidMkData{ Disabled: true, } } return android.AndroidMkData{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(library.outputFile), Loading Loading @@ -141,6 +146,11 @@ func (j *TestHelperLibrary) AndroidMk() android.AndroidMkData { } func (prebuilt *Import) AndroidMk() android.AndroidMkData { if !prebuilt.IsForPlatform() { return android.AndroidMkData{ Disabled: true, } } return android.AndroidMkData{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(prebuilt.combinedClasspathFile), Loading @@ -157,6 +167,11 @@ func (prebuilt *Import) AndroidMk() android.AndroidMkData { } func (prebuilt *DexImport) AndroidMk() android.AndroidMkData { if !prebuilt.IsForPlatform() { return android.AndroidMkData{ Disabled: true, } } return android.AndroidMkData{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(prebuilt.maybeStrippedDexJarFile), Loading java/hiddenapi_singleton.go +8 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,14 @@ func stubFlagsRule(ctx android.SingletonContext) { // Collect dex jar paths for modules that had hiddenapi encode called on them. if h, ok := module.(hiddenAPIIntf); ok { if jar := h.bootDexJar(); jar != nil { // For a java lib included in an APEX, only take the one built for // the platform variant, and skip the variants for APEXes. // Otherwise, the hiddenapi tool will complain about duplicated classes if a, ok := module.(android.ApexModule); ok { if android.InAnyApex(module.Name()) && !a.IsForPlatform() { return } } bootDexJars = append(bootDexJars, jar) } } Loading java/java.go +10 −1 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ func (me *CompilerDeviceProperties) EffectiveOptimizeEnabled() bool { type Module struct { android.ModuleBase android.DefaultableModuleBase android.ApexModuleBase properties CompilerProperties protoProperties android.ProtoProperties Loading Loading @@ -1581,6 +1582,7 @@ func LibraryFactory() android.Module { &module.Module.protoProperties) InitJavaModule(module, android.HostAndDeviceSupported) android.InitApexModule(module) return module } Loading @@ -1603,6 +1605,7 @@ func LibraryHostFactory() android.Module { module.Module.properties.Installable = proptools.BoolPtr(true) InitJavaModule(module, android.HostSupported) android.InitApexModule(module) return module } Loading Loading @@ -1858,6 +1861,7 @@ type ImportProperties struct { type Import struct { android.ModuleBase android.DefaultableModuleBase android.ApexModuleBase prebuilt android.Prebuilt properties ImportProperties Loading Loading @@ -2014,6 +2018,7 @@ func ImportFactory() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) InitJavaModule(module, android.HostAndDeviceSupported) android.InitApexModule(module) return module } Loading @@ -2029,6 +2034,7 @@ func ImportFactoryHost() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) InitJavaModule(module, android.HostSupported) android.InitApexModule(module) return module } Loading @@ -2041,6 +2047,7 @@ type DexImportProperties struct { type DexImport struct { android.ModuleBase android.DefaultableModuleBase android.ApexModuleBase prebuilt android.Prebuilt properties DexImportProperties Loading Loading @@ -2132,6 +2139,7 @@ func DexImportFactory() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) InitJavaModule(module, android.DeviceSupported) android.InitApexModule(module) return module } Loading @@ -2141,6 +2149,7 @@ func DexImportFactory() android.Module { type Defaults struct { android.ModuleBase android.DefaultsModuleBase android.ApexModuleBase } // java_defaults provides a set of properties that can be inherited by other java or android modules. Loading Loading @@ -2199,7 +2208,7 @@ func DefaultsFactory(props ...interface{}) android.Module { ) android.InitDefaultsModule(module) android.InitApexModule(module) return module } Loading Loading
apex/apex_test.go +30 −2 Original line number Diff line number Diff line Loading @@ -91,6 +91,8 @@ func testApexContext(t *testing.T, bp string) (*android.TestContext, android.Con ctx.RegisterModuleType("sh_binary", android.ModuleFactoryAdaptor(android.ShBinaryFactory)) ctx.RegisterModuleType("android_app_certificate", android.ModuleFactoryAdaptor(java.AndroidAppCertificateFactory)) ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(android.FileGroupFactory)) ctx.RegisterModuleType("java_library", android.ModuleFactoryAdaptor(java.LibraryFactory)) ctx.PreArchMutators(func(ctx android.RegisterMutatorsContext) { ctx.BottomUp("prebuilts", android.PrebuiltMutator).Parallel() }) Loading Loading @@ -205,6 +207,7 @@ func testApexContext(t *testing.T, bp string) (*android.TestContext, android.Con "mytest3.cpp": nil, "myprebuilt": nil, "my_include": nil, "foo/bar/MyClass.java": nil, "vendor/foo/devkeys/test.x509.pem": nil, "vendor/foo/devkeys/test.pk8": nil, "testkey.x509.pem": nil, Loading Loading @@ -280,7 +283,8 @@ func TestBasicApex(t *testing.T) { both: { binaries: ["foo",], } } }, java_libs: ["myjar"], } apex { Loading Loading @@ -338,6 +342,23 @@ func TestBasicApex(t *testing.T) { stl: "none", notice: "custom_notice", } java_library { name: "myjar", srcs: ["foo/bar/MyClass.java"], sdk_version: "none", system_modules: "none", compile_dex: true, static_libs: ["myotherjar"], } java_library { name: "myotherjar", srcs: ["foo/bar/MyClass.java"], sdk_version: "none", system_modules: "none", compile_dex: true, } `) apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") Loading @@ -354,17 +375,24 @@ func TestBasicApex(t *testing.T) { // Ensure that apex variant is created for the direct dep ensureListContains(t, ctx.ModuleVariantsForTests("mylib"), "android_arm64_armv8-a_core_shared_myapex") ensureListContains(t, ctx.ModuleVariantsForTests("myjar"), "android_common_myapex") // Ensure that apex variant is created for the indirect dep ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_core_shared_myapex") ensureListContains(t, ctx.ModuleVariantsForTests("myotherjar"), "android_common_myapex") // Ensure that both direct and indirect deps are copied into apex ensureContains(t, copyCmds, "image.apex/lib64/mylib.so") ensureContains(t, copyCmds, "image.apex/lib64/mylib2.so") ensureContains(t, copyCmds, "image.apex/javalib/myjar.jar") // .. but not for java libs ensureNotContains(t, copyCmds, "image.apex/javalib/myotherjar.jar") // Ensure that the platform variant ends with _core_shared // Ensure that the platform variant ends with _core_shared or _common ensureListContains(t, ctx.ModuleVariantsForTests("mylib"), "android_arm64_armv8-a_core_shared") ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_core_shared") ensureListContains(t, ctx.ModuleVariantsForTests("myjar"), "android_common") ensureListContains(t, ctx.ModuleVariantsForTests("myotherjar"), "android_common") // Ensure that all symlinks are present. found_foo_link_64 := false Loading
java/androidmk.go +15 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,11 @@ func (library *Library) AndroidMkHostDex(w io.Writer, name string, data android. } func (library *Library) AndroidMk() android.AndroidMkData { if !library.IsForPlatform() { return android.AndroidMkData{ Disabled: true, } } return android.AndroidMkData{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(library.outputFile), Loading Loading @@ -141,6 +146,11 @@ func (j *TestHelperLibrary) AndroidMk() android.AndroidMkData { } func (prebuilt *Import) AndroidMk() android.AndroidMkData { if !prebuilt.IsForPlatform() { return android.AndroidMkData{ Disabled: true, } } return android.AndroidMkData{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(prebuilt.combinedClasspathFile), Loading @@ -157,6 +167,11 @@ func (prebuilt *Import) AndroidMk() android.AndroidMkData { } func (prebuilt *DexImport) AndroidMk() android.AndroidMkData { if !prebuilt.IsForPlatform() { return android.AndroidMkData{ Disabled: true, } } return android.AndroidMkData{ Class: "JAVA_LIBRARIES", OutputFile: android.OptionalPathForPath(prebuilt.maybeStrippedDexJarFile), Loading
java/hiddenapi_singleton.go +8 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,14 @@ func stubFlagsRule(ctx android.SingletonContext) { // Collect dex jar paths for modules that had hiddenapi encode called on them. if h, ok := module.(hiddenAPIIntf); ok { if jar := h.bootDexJar(); jar != nil { // For a java lib included in an APEX, only take the one built for // the platform variant, and skip the variants for APEXes. // Otherwise, the hiddenapi tool will complain about duplicated classes if a, ok := module.(android.ApexModule); ok { if android.InAnyApex(module.Name()) && !a.IsForPlatform() { return } } bootDexJars = append(bootDexJars, jar) } } Loading
java/java.go +10 −1 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ func (me *CompilerDeviceProperties) EffectiveOptimizeEnabled() bool { type Module struct { android.ModuleBase android.DefaultableModuleBase android.ApexModuleBase properties CompilerProperties protoProperties android.ProtoProperties Loading Loading @@ -1581,6 +1582,7 @@ func LibraryFactory() android.Module { &module.Module.protoProperties) InitJavaModule(module, android.HostAndDeviceSupported) android.InitApexModule(module) return module } Loading @@ -1603,6 +1605,7 @@ func LibraryHostFactory() android.Module { module.Module.properties.Installable = proptools.BoolPtr(true) InitJavaModule(module, android.HostSupported) android.InitApexModule(module) return module } Loading Loading @@ -1858,6 +1861,7 @@ type ImportProperties struct { type Import struct { android.ModuleBase android.DefaultableModuleBase android.ApexModuleBase prebuilt android.Prebuilt properties ImportProperties Loading Loading @@ -2014,6 +2018,7 @@ func ImportFactory() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) InitJavaModule(module, android.HostAndDeviceSupported) android.InitApexModule(module) return module } Loading @@ -2029,6 +2034,7 @@ func ImportFactoryHost() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) InitJavaModule(module, android.HostSupported) android.InitApexModule(module) return module } Loading @@ -2041,6 +2047,7 @@ type DexImportProperties struct { type DexImport struct { android.ModuleBase android.DefaultableModuleBase android.ApexModuleBase prebuilt android.Prebuilt properties DexImportProperties Loading Loading @@ -2132,6 +2139,7 @@ func DexImportFactory() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) InitJavaModule(module, android.DeviceSupported) android.InitApexModule(module) return module } Loading @@ -2141,6 +2149,7 @@ func DexImportFactory() android.Module { type Defaults struct { android.ModuleBase android.DefaultsModuleBase android.ApexModuleBase } // java_defaults provides a set of properties that can be inherited by other java or android modules. Loading Loading @@ -2199,7 +2208,7 @@ func DefaultsFactory(props ...interface{}) android.Module { ) android.InitDefaultsModule(module) android.InitApexModule(module) return module } Loading