blob: 5755c048cae5276eb29c42eb5f072c29b5ad6d07 [file] [log] [blame]
// Copyright (c) 2018, 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;
import com.android.tools.r8.origin.EmbeddedOrigin;
import com.google.common.collect.ImmutableList;
import java.nio.file.Path;
import java.util.List;
public class CompatProguardCommandBuilder extends R8Command.Builder {
private static final List<String> REFLECTIONS = ImmutableList.of(
"-identifiernamestring public class java.lang.Class {",
" public static java.lang.Class forName(java.lang.String);",
" public java.lang.reflect.Field getField(java.lang.String);",
" public java.lang.reflect.Field getDeclaredField(java.lang.String);",
" public java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class[]);",
" public java.lang.reflect.Method getDeclaredMethod(java.lang.String, java.lang.Class[]);",
"}",
"-identifiernamestring public class java.util.concurrent.atomic.AtomicIntegerFieldUpdater {",
" public static java.util.concurrent.atomic.AtomicIntegerFieldUpdater",
" newUpdater(java.lang.Class, java.lang.String);",
"}",
"-identifiernamestring public class java.util.concurrent.atomic.AtomicLongFieldUpdater {",
" public static java.util.concurrent.atomic.AtomicLongFieldUpdater",
" newUpdater(java.lang.Class, java.lang.String);",
"}",
"-identifiernamestring public class",
" java.util.concurrent.atomic.AtomicReferenceFieldUpdater {",
" public static java.util.concurrent.atomic.AtomicReferenceFieldUpdater",
" newUpdater(java.lang.Class, java.lang.Class, java.lang.String);",
"}"
);
public CompatProguardCommandBuilder() {
this(true);
}
public CompatProguardCommandBuilder(boolean forceProguardCompatibility) {
super(forceProguardCompatibility);
setIgnoreDexInArchive(true);
setDisableDesugaring(true);
addProguardConfiguration(REFLECTIONS, EmbeddedOrigin.INSTANCE);
}
public void setProguardCompatibilityRulesOutput(Path path) {
proguardCompatibilityRulesOutput = path;
}
}