Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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.builder.sdk;
 
 import static com.android.SdkConstants.FD_EXTRAS;
 import static com.android.SdkConstants.FD_M2_REPOSITORY;
 import static com.android.SdkConstants.FD_PLATFORM_TOOLS;
 import static com.android.SdkConstants.FD_SUPPORT;
 import static com.android.SdkConstants.FD_TOOLS;
 import static com.android.SdkConstants.FN_ADB;
 import static com.android.SdkConstants.FN_ANNOTATIONS_JAR;
 import static com.android.SdkConstants.FN_SOURCE_PROP;
 
 
 import java.io.File;
 import java.io.Reader;
 import java.util.List;
Singleton-based implementation of SdkLoader for a standard SDK
 
 public class DefaultSdkLoader implements SdkLoader {
 
     private static DefaultSdkLoader sLoader;
 
     @NonNull
     private final File mSdkLocation;
     private SdkManager mSdkManager;
     private SdkInfo mSdkInfo;
     private final ImmutableList<FilemRepositories;
 
     public static synchronized SdkLoader getLoader(
             @NonNull File sdkLocation) {
         if ( != null && !sdkLocation.equals(.)) {
             throw new IllegalStateException("Already created an SDK Loader with different SDK Path");
         }
 
         return  = new DefaultSdkLoader(sdkLocation);
     }
 
     public static synchronized void unload() {
          = null;
     }
 
     @Override
     @NonNull
     public TargetInfo getTargetInfo(
             @NonNull String targetHash,
             @NonNull FullRevision buildToolRevision,
             @NonNull ILogger logger) {
         init(logger);
 
         IAndroidTarget target = .getTargetFromHashString(targetHash);
         if (target == null) {
             throw new IllegalStateException("failed to find target " + targetHash + " : " + );
         }
 
         BuildToolInfo buildToolInfo = .getBuildTool(buildToolRevision);
         if (buildToolInfo == null) {
             throw new IllegalStateException("failed to find Build Tools revision "
                     + buildToolRevision.toString());
         }
 
         return new TargetInfo(targetbuildToolInfo);
     }
 
     @Override
     @NonNull
    public SdkInfo getSdkInfo(@NonNull ILogger logger) {
        init(logger);
        return ;
    }
    @Override
    @NonNull
    public ImmutableList<FilegetRepositories() {
        return ;
    }
    private DefaultSdkLoader(@NonNull File sdkLocation) {
         = sdkLocation;
         = computeRepositories();
    }
    private synchronized void init(@NonNull ILogger logger) {
        if ( == null) {
             = SdkManager.createManager(.getPath(), logger);
            if ( == null) {
                throw new IllegalStateException("failed to parse SDK! Check console for details");
            }
            File toolsFolder = new File();
            File supportToolsFolder = new File(toolsFolder);
            File platformTools = new File();
             = new SdkInfo(
                    new File(supportToolsFolder),
                    new File(platformTools));
        }
    }
    @Nullable
    private FullRevision getPlatformToolsRevision(@NonNull File platformToolsFolder) {
        if (!platformToolsFolder.isDirectory()) {
            return null;
        }
        Reader reader = null;
        try {
            reader = new InputStreamReader(
                    new FileInputStream(new File(platformToolsFolder)),
                    .);
            Properties props = new Properties();
            props.load(reader);
            String value = props.getProperty(.);
            return FullRevision.parseRevision(value);
        } catch (FileNotFoundException ignore) {
            // return null below.
        } catch (IOException ignore) {
            // return null below.
        } catch (NumberFormatException ignore) {
            // return null below.
        } finally {
            try {
                Closeables.close(readertrue /* swallowIOException */);
            } catch (IOException e) {
                // cannot happen
            }
        }
        return null;
    }
    @NonNull
        List<Filerepositories = Lists.newArrayListWithExpectedSize(2);
        File androidRepo = new File( + . + "android"
                + . + );
        if (androidRepo.isDirectory()) {
            repositories.add(androidRepo);
        }
        File googleRepo = new File( + . + "google"
                + . + );
        if (googleRepo.isDirectory()) {
            repositories.add(googleRepo);
        }
        return ImmutableList.copyOf(repositories);
    }
New to GrepCode? Check out our FAQ X