Fix instrumentation_for to match LOCAL_INSTRUMENTATION_FOR
The value from instrumentation_for should not go to aapt2 link --rename-instrumentation-target-package, that should be the equivalent of LOCAL_MANIFEST_INSTRUMENTATION_FOR. That property is never used in Make, so it is left unimplemented in Soong. Add the module listed in instrumentation_for as a shared library for javac, but don't import its resources. Bug: 117804211 Test: m checkbuild Change-Id: I7f035dc0ecb964a3ca391ae1ca2b87cb0f6a7cec
This commit is contained in:
@@ -250,6 +250,8 @@ func aaptLibs(ctx android.ModuleContext, sdkContext sdkContext) (transitiveStati
|
||||
}
|
||||
|
||||
switch ctx.OtherModuleDependencyTag(module) {
|
||||
case instrumentationForTag:
|
||||
// Nothing, instrumentationForTag is treated as libTag for javac but not for aapt2.
|
||||
case libTag, frameworkResTag:
|
||||
if exportPackage != nil {
|
||||
sharedLibs = append(sharedLibs, exportPackage)
|
||||
|
12
java/app.go
12
java/app.go
@@ -318,12 +318,6 @@ type AndroidTest struct {
|
||||
}
|
||||
|
||||
func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
if String(a.appTestProperties.Instrumentation_for) != "" {
|
||||
a.AndroidApp.extraLinkFlags = append(a.AndroidApp.extraLinkFlags,
|
||||
"--rename-instrumentation-target-package",
|
||||
String(a.appTestProperties.Instrumentation_for))
|
||||
}
|
||||
|
||||
a.generateAndroidBuildActions(ctx)
|
||||
|
||||
a.testConfig = tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config, a.testProperties.Test_config_template, a.manifestPath)
|
||||
@@ -335,6 +329,12 @@ func (a *AndroidTest) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
android.ExtractSourceDeps(ctx, a.testProperties.Test_config_template)
|
||||
android.ExtractSourcesDeps(ctx, a.testProperties.Data)
|
||||
a.AndroidApp.DepsMutator(ctx)
|
||||
if a.appTestProperties.Instrumentation_for != nil {
|
||||
// The android_app dependency listed in instrumentation_for needs to be added to the classpath for javac,
|
||||
// but not added to the aapt2 link includes like a normal android_app or android_library dependency, so
|
||||
// use instrumentationForTag instead of libTag.
|
||||
ctx.AddVariationDependencies(nil, instrumentationForTag, String(a.appTestProperties.Instrumentation_for))
|
||||
}
|
||||
}
|
||||
|
||||
func AndroidTestFactory() android.Module {
|
||||
|
@@ -157,6 +157,8 @@ func (j *Module) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8F
|
||||
if !Bool(opt.Obfuscate) {
|
||||
r8Flags = append(r8Flags, "-dontobfuscate")
|
||||
}
|
||||
// TODO(ccross): if this is an instrumentation test of an obfuscated app, use the
|
||||
// dictionary of the app and move the app from libraryjars to injars.
|
||||
|
||||
return r8Flags, r8Deps
|
||||
}
|
||||
@@ -171,8 +173,6 @@ func (j *Module) compileDex(ctx android.ModuleContext, flags javaBuilderFlags,
|
||||
outDir := android.PathForModuleOut(ctx, "dex")
|
||||
|
||||
if useR8 {
|
||||
// TODO(ccross): if this is an instrumentation test of an obfuscated app, use the
|
||||
// dictionary of the app and move the app from libraryjars to injars.
|
||||
proguardDictionary := android.PathForModuleOut(ctx, "proguard_dictionary")
|
||||
j.proguardDictionary = proguardDictionary
|
||||
r8Flags, r8Deps := j.r8Flags(ctx, flags)
|
||||
|
23
java/java.go
23
java/java.go
@@ -371,16 +371,17 @@ type jniDependencyTag struct {
|
||||
}
|
||||
|
||||
var (
|
||||
staticLibTag = dependencyTag{name: "staticlib"}
|
||||
libTag = dependencyTag{name: "javalib"}
|
||||
annoTag = dependencyTag{name: "annotation processor"}
|
||||
bootClasspathTag = dependencyTag{name: "bootclasspath"}
|
||||
systemModulesTag = dependencyTag{name: "system modules"}
|
||||
frameworkResTag = dependencyTag{name: "framework-res"}
|
||||
frameworkApkTag = dependencyTag{name: "framework-apk"}
|
||||
kotlinStdlibTag = dependencyTag{name: "kotlin-stdlib"}
|
||||
proguardRaiseTag = dependencyTag{name: "proguard-raise"}
|
||||
certificateTag = dependencyTag{name: "certificate"}
|
||||
staticLibTag = dependencyTag{name: "staticlib"}
|
||||
libTag = dependencyTag{name: "javalib"}
|
||||
annoTag = dependencyTag{name: "annotation processor"}
|
||||
bootClasspathTag = dependencyTag{name: "bootclasspath"}
|
||||
systemModulesTag = dependencyTag{name: "system modules"}
|
||||
frameworkResTag = dependencyTag{name: "framework-res"}
|
||||
frameworkApkTag = dependencyTag{name: "framework-apk"}
|
||||
kotlinStdlibTag = dependencyTag{name: "kotlin-stdlib"}
|
||||
proguardRaiseTag = dependencyTag{name: "proguard-raise"}
|
||||
certificateTag = dependencyTag{name: "certificate"}
|
||||
instrumentationForTag = dependencyTag{name: "instrumentation_for"}
|
||||
)
|
||||
|
||||
type sdkDep struct {
|
||||
@@ -820,7 +821,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
||||
switch tag {
|
||||
case bootClasspathTag:
|
||||
deps.bootClasspath = append(deps.bootClasspath, dep.HeaderJars()...)
|
||||
case libTag:
|
||||
case libTag, instrumentationForTag:
|
||||
deps.classpath = append(deps.classpath, dep.HeaderJars()...)
|
||||
// sdk lib names from dependencies are re-exported
|
||||
j.exportedSdkLibs = append(j.exportedSdkLibs, dep.ExportedSdkLibs()...)
|
||||
|
Reference in New Issue
Block a user