lin
2025-08-01 633231e833e21d5b8b1c00cb15aedb62b3b78e8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Copyright (C) 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
#
# Builds a package which can be instrumented to retrieve information about the device under test.
#
 
DEVICE_INFO_PACKAGE := com.android.compatibility.common.deviceinfo
DEVICE_INFO_INSTRUMENT := androidx.test.runner.AndroidJUnitRunner
DEVICE_INFO_USES_LIBRARY := android.test.runner
DEVICE_INFO_PERMISSIONS += \
  android.permission.READ_PHONE_STATE \
  android.permission.WRITE_EXTERNAL_STORAGE
DEVICE_INFO_ACTIVITIES += \
  $(DEVICE_INFO_PACKAGE).AppStandbyDeviceInfo \
  $(DEVICE_INFO_PACKAGE).ClientIdDeviceInfo \
  $(DEVICE_INFO_PACKAGE).ConfigurationDeviceInfo \
  $(DEVICE_INFO_PACKAGE).CpuDeviceInfo \
  $(DEVICE_INFO_PACKAGE).FeatureDeviceInfo \
  $(DEVICE_INFO_PACKAGE).GenericDeviceInfo \
  $(DEVICE_INFO_PACKAGE).GlesStubActivity \
  $(DEVICE_INFO_PACKAGE).GraphicsDeviceInfo \
  $(DEVICE_INFO_PACKAGE).LocaleDeviceInfo \
  $(DEVICE_INFO_PACKAGE).MediaDeviceInfo \
  $(DEVICE_INFO_PACKAGE).MemoryDeviceInfo \
  $(DEVICE_INFO_PACKAGE).PackageDeviceInfo \
  $(DEVICE_INFO_PACKAGE).PropertyDeviceInfo \
  $(DEVICE_INFO_PACKAGE).ScreenDeviceInfo \
  $(DEVICE_INFO_PACKAGE).StorageDeviceInfo \
  $(DEVICE_INFO_PACKAGE).UserDeviceInfo \
  $(DEVICE_INFO_PACKAGE).VintfDeviceInfo
 
ifeq ($(DEVICE_INFO_MIN_SDK),)
DEVICE_INFO_MIN_SDK := 8
endif
 
ifeq ($(DEVICE_INFO_TARGET_SDK),)
DEVICE_INFO_TARGET_SDK := 17
endif
 
# Add the base device info
LOCAL_STATIC_JAVA_LIBRARIES += compatibility-device-info compatibility-device-util-axt
 
# Generator of APK manifests.
MANIFEST_GENERATOR_JAR := $(HOST_OUT_JAVA_LIBRARIES)/compatibility-manifest-generator.jar
MANIFEST_GENERATOR := $(JAVA) -jar $(MANIFEST_GENERATOR_JAR)
 
# Generate the manifest
manifest_xml := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME))/AndroidManifest.xml
$(manifest_xml): PRIVATE_INFO_PERMISSIONS := $(foreach permission, $(DEVICE_INFO_PERMISSIONS),-r $(permission))
$(manifest_xml): PRIVATE_INFO_ACTIVITIES := $(foreach activity,$(DEVICE_INFO_ACTIVITIES),-a $(activity))
$(manifest_xml): PRIVATE_USES_LIBRARY := $(DEVICE_INFO_USES_LIBRARY)
$(manifest_xml): PRIVATE_PACKAGE := $(DEVICE_INFO_PACKAGE)
$(manifest_xml): PRIVATE_INSTRUMENT := $(DEVICE_INFO_INSTRUMENT)
$(manifest_xml): PRIVATE_MIN_SDK := $(DEVICE_INFO_MIN_SDK)
$(manifest_xml): PRIVATE_TARGET_SDK := $(DEVICE_INFO_TARGET_SDK)
 
# Regenerate manifest.xml if the generator jar, */cts-device-info/Android.mk, or this file is changed.
$(manifest_xml): $(MANIFEST_GENERATOR_JAR) $(LOCAL_PATH)/Android.mk cts/build/device_info_package.mk
   $(hide) echo Generating manifest for $(PRIVATE_NAME)
   $(hide) mkdir -p $(dir $@)
   $(hide) $(MANIFEST_GENERATOR) \
                       $(PRIVATE_INFO_PERMISSIONS) \
                       $(PRIVATE_INFO_ACTIVITIES) \
                       -l $(PRIVATE_USES_LIBRARY) \
                       -p $(PRIVATE_PACKAGE) \
                       -i $(PRIVATE_INSTRUMENT) \
                       -s $(PRIVATE_MIN_SDK) \
                       -t $(PRIVATE_TARGET_SDK) \
                       -o $@
 
# Reset variables
DEVICE_INFO_MIN_SDK :=
DEVICE_INFO_TARGET_SDK :=
DEVICE_INFO_PACKAGE :=
DEVICE_INFO_INSTRUMENT :=
DEVICE_INFO_PERMISSIONS :=
DEVICE_INFO_ACTIVITIES :=
 
LOCAL_FULL_MANIFEST_FILE := $(manifest_xml)
# Disable by default
LOCAL_DEX_PREOPT := false
LOCAL_PROGUARD_ENABLED := disabled
 
# Don't include this package in any target
LOCAL_MODULE_TAGS := optional
# And when built explicitly put it in the data partition
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
 
#TODO(b/72620511) remove this condition when AtsDeviceInfo can be built with SDK again
ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),true)
LOCAL_SDK_VERSION := current
endif
 
include $(BUILD_CTS_SUPPORT_PACKAGE)