美文网首页Android技术知识Android开发Android开发
Robolectric被墙下载缓慢的解决方法

Robolectric被墙下载缓慢的解决方法

作者: Charle_Lin | 来源:发表于2017-05-17 10:40 被阅读127次

Robolectric被墙下载缓慢的解决方法

把下载地址换成阿里的maven,速度杠杠的。

public final class XLTestRunner extends RobolectricGradleTestRunner {

    public XLTestRunner(Class<?> testClass) throws InitializationError {
        super(testClass);
    }

    @Override protected DependencyResolver getJarResolver() {
        return new CustomDependencyResolver();
    }

    static final class CustomDependencyResolver implements DependencyResolver {
        private final Project project = new Project();

        public URL[] getLocalArtifactUrls(DependencyJar... dependencies) {
            DependenciesTask dependenciesTask = new DependenciesTask();
            RemoteRepository repository = new RemoteRepository();
            repository.setUrl("http://maven.aliyun.com/nexus/content/groups/public/");
            repository.setId("alimaven");
            dependenciesTask.addConfiguredRemoteRepository(repository);
            dependenciesTask.setProject(project);
            for (DependencyJar dependencyJar : dependencies) {
                Dependency dependency = new Dependency();
                dependency.setArtifactId(dependencyJar.getArtifactId());
                dependency.setGroupId(dependencyJar.getGroupId());
                dependency.setType(dependencyJar.getType());
                dependency.setVersion(dependencyJar.getVersion());
                if (dependencyJar.getClassifier() != null) {
                    dependency.setClassifier(dependencyJar.getClassifier());
                }
                dependenciesTask.addDependency(dependency);
            }
            dependenciesTask.execute();

            @SuppressWarnings("unchecked")
            Hashtable<String, String> artifacts = project.getProperties();
            URL[] urls = new URL[dependencies.length];
            for (int i = 0; i < urls.length; i++) {
                try {
                    urls[i] = Util.url(artifacts.get(key(dependencies[i])));
                } catch (MalformedURLException e) {
                    throw new RuntimeException(e);
                }
            }
            return urls;
        }

        @Override
        public URL getLocalArtifactUrl(DependencyJar dependency) {
            URL[] urls = getLocalArtifactUrls(dependency);
            if (urls.length > 0) {
                return urls[0];
            }
            return null;
        }

        private String key(DependencyJar dependency) {
            String key =
                    dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getType();
            if (dependency.getClassifier() != null) {
                key += ":" + dependency.getClassifier();
            }
            return key;
        }
    }

    @Override
    protected AndroidManifest getAppManifest(Config config) {
        AndroidManifest appManifest = super.getAppManifest(config);
        FsFile androidManifestFile = appManifest.getAndroidManifestFile();

        if (androidManifestFile.exists()) {
            return appManifest;
        } else {
            String moduleRoot = getModuleRootPath(config);
            androidManifestFile = FileFsFile.from(moduleRoot, appManifest.getAndroidManifestFile().getPath().replace("bundles", "manifests/full"));
            FsFile resDirectory = FileFsFile.from(moduleRoot, appManifest.getResDirectory().getPath().replace("/res", "").replace("bundles", "res"));
            FsFile assetsDirectory = FileFsFile.from(moduleRoot, appManifest.getAssetsDirectory().getPath().replace("/assets", "").replace("bundles", "assets"));
            return new AndroidManifest(androidManifestFile, resDirectory, assetsDirectory);
        }
    }

    private String getModuleRootPath(Config config) {
        String moduleRoot = config.constants().getResource("").toString().replace("file:", "");
        return moduleRoot.substring(0, moduleRoot.indexOf("/build"));
    }
}

相关文章

  • Robolectric被墙下载缓慢的解决方法

    Robolectric被墙下载缓慢的解决方法 把下载地址换成阿里的maven,速度杠杠的。

  • golang.org/x包无法下载

    由于谷歌被墙,跟谷歌相关的模块无法通过go get来下载,解决方法

  • Homebrew

    命令 问题 brew install webp 原因是googleapis被墙了解决方法:替换下载地址 修改url如下:

  • npm的registry

    问题描述 由于node下载第三方依赖包是从国外服务器下载,虽然没有被墙,但是下载的速度是非常的缓慢且有可能会出现异...

  • 下载VSCode很慢或失败的解决方法

    下载失败或缓慢的原因都懂,直接说解决方法 找到下载的链接地址复制出来。image.png 然后把 /stable之...

  • git clone时RPC failed

    原因1:缓存区溢出 解决方法:命令行输入 原因2:网络下载速度缓慢 解决方法:命令行输入 原因3:首先浅层clon...

  • Composer下载缓慢原因和解决方法

    参考地址:https://blog.csdn.net/root_miss/article/details/8118...

  • phantomjs 在centos环境下配置

    phantomjs的安装 phantomjs的安装比较简单,从官网下载会被墙,所以速度正常缓慢,文末提供百度去下载...

  • 利用VPS下载国外FTP文件

    今天遇到需要下载国外FTP的文件的问题,由于墙的原因直接通过 FileZilla下载速度缓慢,经好友提醒可以通过之...

  • npm install 报错node-sass

    原因:node-sass被墙,改用淘宝镜像安装 解决方法:

网友评论

    本文标题:Robolectric被墙下载缓慢的解决方法

    本文链接:https://www.haomeiwen.com/subject/fmfdxxtx.html