gradle的使用8

1.使用多渠道

productFlavors {
    baidu {
        resValue("string", "channel_name", "baidu")
//            这是专门为当前的渠道设置的包名
        applicationId "xxx.xxx.xxx"
    }
    google {
        resValue("string", "channel_name", "google")
    }
}

使用多渠道后就会有baiduRelease baiduDebug googleRelease googleDebug等四种组合。
对于产生apk的命令响应的也有gradle assembleBaidu,gradle assembleBaiduRelease,gradle assembleBaiduDebug等。

美团的快速多渠道打包工具
https://github.com/Meituan-Dianping/walle
本质应该是在打了一个基础包之后,通过在apk包中META-INF文件中增加具有渠道标记的空文件。然后在java代码中获取到这个空文件名,来知道是哪一个渠道包。

下面是在java代码中获取apk中的内容的代码,能够遍历apk中的所有的文件,如果找到mChannel标记的文件,就截串获取:

public static String getChannel(Context context) {
    ApplicationInfo applicationInfo = context.getApplicationInfo();
    String sourceDir = applicationInfo.sourceDir;
    String ret = "";
    ZipFile zipFile = null;
    try {
        zipFile = new ZipFile(sourceDir);
        Enumeration<? extends ZipEntry> entries = zipFile.entries();
        while (entries.hasMoreElements()) {
            ZipEntry zipEntry = entries.nextElement();
            String entryName = zipEntry.getName();
            Log.e("TAG", "entryName===="+entryName);
            if (entryName.startsWith("mChannel")) {
                ret = entryName;
                break;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (zipFile != null) {
            try {
                zipFile.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    String[] split = ret.split("_");
    if (split != null && split.length >= 2) {

        return ret.substring(split[0].length() + 1);
    } else {
        return "";
    }
}

2.测试类的使用
在这个方法中只能是纯java的代码,不能用android的特性,比如Log
依赖testImplementation ‘junit:junit:4.12’

@Test
public void foo1(){
	  System.out.print("eeeeeeee");
}

3.lint的使用

  lintOptions{
    abortOnError true
//        当出现警告的时候,也被当做错误对待
    warningsAsErrors true
//        这是单独的检查
//        check "NewApi"

//        可以使用set集合
//        def checkSet=new HashSet<String>()
//        checkSet.add("NewApi")
//        checkSet.add("InlineApi")
//        check=checkSet

//        或者使用
    check "InlineApi","NewApi"

    checkAllWarnings false

//        默认为true
    checkReleaseBuilds true
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Idea是一个功能强大的集成开发环境(IDE),而Gradle是一个灵活的构建工具。将Idea与Gradle结合使用可以提高开发效率和代码管理能力。 首先,通过在Idea中导入或创建Gradle项目,我们可以轻松地管理项目的依赖关系。通过Gradle的依赖管理机制,我们可以在项目中引入所需的第三方库,而不必手动下载、配置和添加它们。在Idea中,我们可以通过简单的配置来更新和更新这些依赖项,以确保项目始终使用最新版本的库。 其次,通过在Idea中启用Gradle插件,我们可以使用Gradle的强大功能来构建和运行我们的项目。我们可以通过Gradle脚本定义和自定义构建任务,例如编译代码、运行测试、生成文档等。在Idea中,我们可以直接在Gradle工具窗口中查看和运行这些任务,而不必在终端中手动执行Gradle命令。 另外,Idea还提供了对Gradle的语法高亮、代码提示和错误检查。它可以帮助我们更轻松地编写和修改Gradle脚本,并防止常见的语法错误。此外,Idea还提供了对Gradle的自动补全功能,以帮助我们更快地查找和使用Gradle提供的功能。 最后,Idea还集成了对Gradle构建过程的可视化和调试支持。我们可以通过在Idea中设定断点和调试标记,以及查看构建过程的详细日志,来分析和解决构建问题。这使得调试Gradle构建变得更加方便和高效。 总的来说,Idea结合Gradle使用可以帮助开发者更好地管理项目依赖、构建项目、编写和调试Gradle脚本。这种结合能够提升开发效率和代码管理能力,是现代软件开发中常用的工具组合之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值