最新的android SDK中没有SdkManager类

时间:2017-05-11 08:29:53

标签: java android

下载最新的Android Studio(android-studio-bundle-162.3871768-windows)。 我们在我们的软件中使用了com.android.sdklib.SdkManager类,但在最新的Android Studio中,我无法在jar文件夹中的任何tools\lib中找到上述类。

有谁能建议什么是更好的选择?

2 个答案:

答案 0 :(得分:0)

如果您想获得为知识安装的所有目标的列表,那么您只需运行SDK管理器即可。但是因为你想调用getTargets()方法,这意味着你需要它用于其他目的。检查android studio网页上的文档,找出你要搜索的类是否存在以及它的jar文件的位置。

答案 1 :(得分:0)

我们可以在下面的链接中找到所有android类的源代码。

https://javalibs.com/artifact/com.android.tools/sdklib?className=com.android.sdklib.tool.SdkManagerCli&source

SdkManagerCli类具有等效方法listPackages(),它将列出包。

我们需要将sdklib-25.3.2.jar,repository-25.3.2.jar和common-25.3.2.jar导入到项目中。 以下是列出包的工作代码: -

    import java.io.File;
    import java.lang.reflect.Method;
    import java.util.Collection;
    import java.util.TreeSet;
    import com.android.repository.Revision;
    import com.android.repository.api.ConsoleProgressIndicator;
    import com.android.repository.api.LocalPackage;
    import com.android.repository.api.ProgressIndicator;
    import com.android.repository.api.RepoManager;
    import com.android.repository.impl.meta.RepositoryPackages;
    import com.android.sdklib.repository.AndroidSdkHandler;

        public class AndroidTesting {

            public static void main(String[] args) {
                listPackages();
            }

           private static void listPackages() {
           AndroidSdkHandler mHandler = AndroidSdkHandler.getInstance(new 
            File("filePath")); //for eg:-sdk/platforms for API 
            ProgressIndicator progress = new ConsoleProgressIndicator();

            RepoManager mRepoManager = mHandler.getSdkManager(progress);
            mRepoManager.loadSynchronously(cacheExpirationMs, progress, 
            downloader, settings)(0, progress, null, null);

            RepositoryPackages packages = mRepoManager.getPackages();

            Collection<LocalPackage> locals = new TreeSet<LocalPackage>();
            Collection<LocalPackage> localObsoletes = new 
            TreeSet<LocalPackage>();
            for (LocalPackage local : packages.getLocalPackages().values()) {
                if (local.obsolete()) {
                    localObsoletes.add(local);
                } else {
                    locals.add(local);
                }
                Revision version = local.getVersion();

                System.out.println(local.getDisplayName() + " "
                    + local.getVersion() );
            }

        }
    }