Reland aosp/1535007:
Enforce <uses-library> checks for android_app and android_app_import. Bug: 132357300 Test: lunch aosp_cf_x86_phone-userdebug && m Merged-In: I50911f727ba98df1035500dbbf467b849be8d6c2 Change-Id: Ief02df2afe56e58189e3165fbb6dbb75f6ff6384
This commit is contained in:
@@ -925,6 +925,8 @@ func AndroidAppFactory() android.Module {
|
|||||||
&module.appProperties,
|
&module.appProperties,
|
||||||
&module.overridableAppProperties)
|
&module.overridableAppProperties)
|
||||||
|
|
||||||
|
module.usesLibrary.enforce = true
|
||||||
|
|
||||||
android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon)
|
android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon)
|
||||||
android.InitDefaultableModule(module)
|
android.InitDefaultableModule(module)
|
||||||
android.InitOverridableModule(module, &module.appProperties.Overrides)
|
android.InitOverridableModule(module, &module.appProperties.Overrides)
|
||||||
@@ -1195,6 +1197,9 @@ type UsesLibraryProperties struct {
|
|||||||
// with knowledge of their shared libraries.
|
// with knowledge of their shared libraries.
|
||||||
type usesLibrary struct {
|
type usesLibrary struct {
|
||||||
usesLibraryProperties UsesLibraryProperties
|
usesLibraryProperties UsesLibraryProperties
|
||||||
|
|
||||||
|
// Whether to enforce verify_uses_library check.
|
||||||
|
enforce bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *usesLibrary) addLib(lib string, optional bool) {
|
func (u *usesLibrary) addLib(lib string, optional bool) {
|
||||||
@@ -1279,7 +1284,7 @@ func (u *usesLibrary) classLoaderContextForUsesLibDeps(ctx android.ModuleContext
|
|||||||
func (u *usesLibrary) enforceUsesLibraries() bool {
|
func (u *usesLibrary) enforceUsesLibraries() bool {
|
||||||
defaultEnforceUsesLibs := len(u.usesLibraryProperties.Uses_libs) > 0 ||
|
defaultEnforceUsesLibs := len(u.usesLibraryProperties.Uses_libs) > 0 ||
|
||||||
len(u.usesLibraryProperties.Optional_uses_libs) > 0
|
len(u.usesLibraryProperties.Optional_uses_libs) > 0
|
||||||
return BoolDefault(u.usesLibraryProperties.Enforce_uses_libs, defaultEnforceUsesLibs)
|
return BoolDefault(u.usesLibraryProperties.Enforce_uses_libs, u.enforce || defaultEnforceUsesLibs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Freeze the value of `enforce_uses_libs` based on the current values of `uses_libs` and `optional_uses_libs`.
|
// Freeze the value of `enforce_uses_libs` based on the current values of `uses_libs` and `optional_uses_libs`.
|
||||||
|
@@ -470,6 +470,8 @@ func AndroidAppImportFactory() android.Module {
|
|||||||
android.InitDefaultableModule(module)
|
android.InitDefaultableModule(module)
|
||||||
android.InitSingleSourcePrebuiltModule(module, &module.properties, "Apk")
|
android.InitSingleSourcePrebuiltModule(module, &module.properties, "Apk")
|
||||||
|
|
||||||
|
module.usesLibrary.enforce = true
|
||||||
|
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -222,31 +222,31 @@ func TestAndroidAppImport_DpiVariants(t *testing.T) {
|
|||||||
name: "no preferred",
|
name: "no preferred",
|
||||||
aaptPreferredConfig: nil,
|
aaptPreferredConfig: nil,
|
||||||
aaptPrebuiltDPI: []string{},
|
aaptPrebuiltDPI: []string{},
|
||||||
expected: "prebuilts/apk/app.apk",
|
expected: "verify_uses_libraries/apk/app.apk",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AAPTPreferredConfig matches",
|
name: "AAPTPreferredConfig matches",
|
||||||
aaptPreferredConfig: proptools.StringPtr("xhdpi"),
|
aaptPreferredConfig: proptools.StringPtr("xhdpi"),
|
||||||
aaptPrebuiltDPI: []string{"xxhdpi", "ldpi"},
|
aaptPrebuiltDPI: []string{"xxhdpi", "ldpi"},
|
||||||
expected: "prebuilts/apk/app_xhdpi.apk",
|
expected: "verify_uses_libraries/apk/app_xhdpi.apk",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AAPTPrebuiltDPI matches",
|
name: "AAPTPrebuiltDPI matches",
|
||||||
aaptPreferredConfig: proptools.StringPtr("mdpi"),
|
aaptPreferredConfig: proptools.StringPtr("mdpi"),
|
||||||
aaptPrebuiltDPI: []string{"xxhdpi", "xhdpi"},
|
aaptPrebuiltDPI: []string{"xxhdpi", "xhdpi"},
|
||||||
expected: "prebuilts/apk/app_xxhdpi.apk",
|
expected: "verify_uses_libraries/apk/app_xxhdpi.apk",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "non-first AAPTPrebuiltDPI matches",
|
name: "non-first AAPTPrebuiltDPI matches",
|
||||||
aaptPreferredConfig: proptools.StringPtr("mdpi"),
|
aaptPreferredConfig: proptools.StringPtr("mdpi"),
|
||||||
aaptPrebuiltDPI: []string{"ldpi", "xhdpi"},
|
aaptPrebuiltDPI: []string{"ldpi", "xhdpi"},
|
||||||
expected: "prebuilts/apk/app_xhdpi.apk",
|
expected: "verify_uses_libraries/apk/app_xhdpi.apk",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no matches",
|
name: "no matches",
|
||||||
aaptPreferredConfig: proptools.StringPtr("mdpi"),
|
aaptPreferredConfig: proptools.StringPtr("mdpi"),
|
||||||
aaptPrebuiltDPI: []string{"ldpi", "xxxhdpi"},
|
aaptPrebuiltDPI: []string{"ldpi", "xxxhdpi"},
|
||||||
expected: "prebuilts/apk/app.apk",
|
expected: "verify_uses_libraries/apk/app.apk",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ func TestAndroidAppImport_DpiVariants(t *testing.T) {
|
|||||||
if len(matches) != 2 {
|
if len(matches) != 2 {
|
||||||
t.Errorf("failed to extract the src apk path from %q", jniRuleCommand)
|
t.Errorf("failed to extract the src apk path from %q", jniRuleCommand)
|
||||||
}
|
}
|
||||||
if test.expected != matches[1] {
|
if strings.HasSuffix(matches[1], test.expected) {
|
||||||
t.Errorf("wrong src apk, expected: %q got: %q", test.expected, matches[1])
|
t.Errorf("wrong src apk, expected: %q got: %q", test.expected, matches[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -342,7 +342,7 @@ func TestAndroidAppImport_ArchVariants(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
expected: "prebuilts/apk/app_arm64.apk",
|
expected: "verify_uses_libraries/apk/app_arm64.apk",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no matching arch",
|
name: "no matching arch",
|
||||||
@@ -361,7 +361,7 @@ func TestAndroidAppImport_ArchVariants(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
expected: "prebuilts/apk/app.apk",
|
expected: "verify_uses_libraries/apk/app.apk",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no matching arch without default",
|
name: "no matching arch without default",
|
||||||
@@ -399,7 +399,7 @@ func TestAndroidAppImport_ArchVariants(t *testing.T) {
|
|||||||
if len(matches) != 2 {
|
if len(matches) != 2 {
|
||||||
t.Errorf("failed to extract the src apk path from %q", jniRuleCommand)
|
t.Errorf("failed to extract the src apk path from %q", jniRuleCommand)
|
||||||
}
|
}
|
||||||
if test.expected != matches[1] {
|
if strings.HasSuffix(matches[1], test.expected) {
|
||||||
t.Errorf("wrong src apk, expected: %q got: %q", test.expected, matches[1])
|
t.Errorf("wrong src apk, expected: %q got: %q", test.expected, matches[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user