blob: 1712e61f743cacfbada94886543b7de2f58204b6 [file] [log] [blame]
// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.utils;
import com.android.tools.r8.errors.Unreachable;
/**
* Android API level description
*/
public enum AndroidApiLevel {
LATEST(-1),
Q(29), // Speculative, this can change.
P(28),
O_MR1(27),
O(26),
N_MR1(25),
N(24),
M(23),
L_MR1(22),
L(21),
K_WATCH(20),
K(19),
J_MR2(18),
J_MR1(17),
J(16),
I_MR1(15),
I(14),
H_MR2(13),
H_MR1(12),
H(11),
G_MR1(10),
G(9),
F(8),
E_MR1(7),
E_0_1(6),
E(5),
D(4),
C(3),
B_1_1(2),
B(1);
private final int level;
AndroidApiLevel(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
public String getName() {
return "Android " + name();
}
public static AndroidApiLevel getDefault() {
return AndroidApiLevel.B;
}
public DexVersion getDexVersion() {
return DexVersion.getDexVersion(this);
}
public static AndroidApiLevel getMinAndroidApiLevel(DexVersion dexVersion) {
switch (dexVersion) {
case V35:
return AndroidApiLevel.B;
case V37:
return AndroidApiLevel.N;
case V38:
return AndroidApiLevel.O;
case V39:
return AndroidApiLevel.P;
default:
throw new Unreachable();
}
}
public static AndroidApiLevel getAndroidApiLevel(int apiLevel) {
switch (apiLevel) {
case 0:
// 0 is not supported, it should not happen
throw new Unreachable();
case 1:
return B;
case 2:
return B_1_1;
case 3:
return C;
case 4:
return D;
case 5:
return E;
case 6:
return E_0_1;
case 7:
return E_MR1;
case 8:
return F;
case 9:
return G;
case 10:
return G_MR1;
case 11:
return H;
case 12:
return H_MR1;
case 13:
return H_MR2;
case 14:
return I;
case 15:
return I_MR1;
case 16:
return J;
case 17:
return J_MR1;
case 18:
return J_MR2;
case 19:
return K;
case 20:
return K_WATCH;
case 21:
return L;
case 22:
return L_MR1;
case 23:
return M;
case 24:
return N;
case 25:
return N_MR1;
case 26:
return O;
case 27:
return O_MR1;
case 28:
return P;
default:
return LATEST;
}
}
}