/* * Copyright (C) 2014 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. */ package com.android.build.gradle.integration.common.utils; import com.android.annotations.NonNull; import com.android.sdklib.BuildToolInfo; import com.android.sdklib.SdkManager; import com.android.sdklib.repository.FullRevision; import com.android.utils.ILogger; import com.android.utils.StdLogger; import java.io.File; /** * Helper for SDK related functions. */ public class SdkHelper { private static final String BUILD_TOOLS_VERSION = "21.1.1"; /** * Returns the SDK folder as built from the Android source tree. */ public static File findSdkDir() { String androidHome = System.getenv("ANDROID_HOME"); if (androidHome != null) { File f = new File(androidHome); if (f.isDirectory()) { return f; } else { System.out.println("Failed to find SDK in ANDROID_HOME=" + androidHome); } } return null; } @NonNull public static File getAapt() { return getBuildTool( FullRevision.parseRevision(BUILD_TOOLS_VERSION), BuildToolInfo.PathId.AAPT); } @NonNull public static File getAapt(@NonNull FullRevision fullRevision) { return getBuildTool(fullRevision, BuildToolInfo.PathId.AAPT); } @NonNull public static File getDexDump() { return getBuildTool( FullRevision.parseRevision(BUILD_TOOLS_VERSION), BuildToolInfo.PathId.DEXDUMP); } @NonNull public static File getBuildTool( @NonNull FullRevision fullRevision, @NonNull BuildToolInfo.PathId pathId) { ILogger logger = new StdLogger(StdLogger.Level.VERBOSE); SdkManager sdkManager = SdkManager.createManager(findSdkDir().getAbsolutePath(), logger); assert sdkManager != null; BuildToolInfo buildToolInfo = sdkManager.getBuildTool(fullRevision); if (buildToolInfo == null) { throw new RuntimeException("Test requires build-tools " + fullRevision.toString()); } return new File(buildToolInfo.getPath(pathId)); } }