Search in sources :

Example 1 with ProGuard

use of proguard.ProGuard in project atlas by alibaba.

the class BundleProguarder method doProguard.

public static void doProguard(AppVariantContext appVariantContext, Input input) throws Exception {
    Configuration configuration = parseConfiguration(appVariantContext, input);
    configuration.dump = input.dump;
    if (null == input.printConfiguration) {
        configuration.printConfiguration = new File(appVariantContext.getAwbProguardDir(input.getAwbBundles().get(0).getAwbBundle()), "proguard.cfg");
    } else {
        configuration.printConfiguration = input.printConfiguration;
    }
    configuration.printSeeds = null;
    configuration.dump = null;
    configuration.obfuscate = false;
    // configuration.optimizationPasses = 1;
    configuration.printUsage = input.printUsage;
    configuration.printMapping = input.printMapping;
    // Execute ProGuard with these options.
    ProGuard proGuard = new ProGuard(configuration);
    System.out.println(">>> start to do proguard");
    proGuard.execute();
    System.out.println("<<< end proguard");
    ClassPool classPool = (ClassPool) ReflectUtils.getField(proGuard, "programClassPool");
    Map<String, ClazzRefInfo> clazzRefInfoMap = BundleProguardDumper.dump(proGuard, input.getDefaultLibraryClasses());
    // Fileoutputs
    for (AwbTransform awbTransform : input.getAwbBundles()) {
        if (!awbTransform.getAwbBundle().isMainBundle()) {
            AwbBundle awbBundle = awbTransform.getAwbBundle();
            File fileOut = new File(appVariantContext.getAwbProguardDir(awbBundle), "keep.json");
            fileOut.delete();
            fileOut.getParentFile().mkdirs();
            FileUtils.write(fileOut, JSON.toJSONString(clazzRefInfoMap));
            awbBundle.setKeepProguardFile(fileOut);
        }
    }
}
Also used : Configuration(proguard.Configuration) ProGuard(proguard.ProGuard) AwbTransform(com.android.build.gradle.internal.api.AwbTransform) ClassPool(proguard.classfile.ClassPool) ClazzRefInfo(com.taobao.android.builder.tools.proguard.dump.ClazzRefInfo) AwbBundle(com.taobao.android.builder.dependency.model.AwbBundle) File(java.io.File)

Aggregations

AwbTransform (com.android.build.gradle.internal.api.AwbTransform)1 AwbBundle (com.taobao.android.builder.dependency.model.AwbBundle)1 ClazzRefInfo (com.taobao.android.builder.tools.proguard.dump.ClazzRefInfo)1 File (java.io.File)1 Configuration (proguard.Configuration)1 ProGuard (proguard.ProGuard)1 ClassPool (proguard.classfile.ClassPool)1