### Android
- * Android NDK r15c or later.
+ * Android NDK r17c or later.
* Android SDK with: SDK Tools, SDK Platform-tools, SDK Build-tools, and API 28
* Java Development Kit (JDK)
* Windows: either NMake or Ninja in PATH
-If you have downloaded Android SDK tools, you can install necessary components
-by running:
+If you have downloaded the Android SDK command line tools package (25.2.3 or higher) then
+you can install the necessary components by running:
- tools/android update sdk --no-ui --all --filter tools,platform-tools,build-tools-25.0.2,android-28
+ tools/bin/sdkmanager tools platform-tools 'build-tools;25.0.2' 'platforms;android-28'
Building CTS
python scripts/android/install_apk.py
By default the CTS package will contain libdeqp.so built for armeabi-v7a, arm64-v8a,
-x86, and x86_64 ABIs, but that can be changed using --abis command line option.
+x86, and x86_64 ABIs, but that can be changed at build time by passing the --abis command line
+option to `scripts/android/build_apk.py`.
-To pick which ABI to use at install time, following commands must be used
-instead:
+To pick which ABI to use at _install time_, use the following command instead:
- adb install --abi <ABI name> <build-root>/package/dEQP.apk /data/local/tmp/dEQP-debug.apk
+ adb install -g --abi <ABI name> <build-root>/package/dEQP.apk
Building Mustpass
self.ndk = ndk
class Configuration:
- def __init__(self, env, buildPath, abis, nativeApi, nativeBuildType, gtfTarget, verbose, layers, angle):
+ def __init__(self, env, buildPath, abis, nativeApi, minApi, nativeBuildType, gtfTarget, verbose, layers, angle):
self.env = env
self.sourcePath = DEQP_DIR
self.buildPath = buildPath
self.abis = abis
self.nativeApi = nativeApi
- self.javaApi = 22
+ self.javaApi = 28
+ self.minApi = minApi
self.nativeBuildType = nativeBuildType
self.gtfTarget = gtfTarget
self.verbose = verbose
if self.env.ndk.version[0] < 15:
raise Exception("Android NDK version %d is not supported; build requires NDK version >= 15" % (self.env.ndk.version[0]))
+ if not (self.minApi <= self.javaApi <= self.nativeApi):
+ raise Exception("Requires: min-api (%d) <= java-api (%d) <= native-api (%d)" % (self.minApi, self.javaApi, self.nativeApi))
+
if self.env.sdk.buildToolsVersion == (0,0,0):
raise Exception("No build tools directory found at %s" % os.path.join(self.env.sdk.path, "build-tools"))
aaptPath,
"package",
"-f",
+ "--min-sdk-version", str(config.minApi),
+ "--target-sdk-version", str(config.javaApi),
"-M", resolvePath(config, self.package.getManifestPath()),
"-I", config.env.sdk.getPlatformLibrary(config.javaApi),
"-F", dstPath,
dest='nativeApi',
default=28,
help="Android API level to target in native code")
+ parser.add_argument('--min-api',
+ type=int,
+ dest='minApi',
+ default=22,
+ help="Minimum Android API level for which the APK can be installed")
parser.add_argument('--sdk',
dest='sdkPath',
default=defaultSDKPath,
sdk = SDKEnv(os.path.realpath(args.sdkPath))
buildPath = os.path.realpath(args.buildRoot)
env = Environment(sdk, ndk)
- config = Configuration(env, buildPath, abis=args.abis, nativeApi=args.nativeApi, nativeBuildType=args.nativeBuildType, gtfTarget=args.gtfTarget, verbose=args.verbose,
- layers=args.layers, angle=args.angle)
+ config = Configuration(env, buildPath, abis=args.abis, nativeApi=args.nativeApi, minApi=args.minApi, nativeBuildType=args.nativeBuildType, gtfTarget=args.gtfTarget,
+ verbose=args.verbose, layers=args.layers, angle=args.angle)
try:
config.check()