首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

第十二章 Android Gradle测试

既然它可以生成一个Apk,那么它一定有Apk的必备属性和文件,比如包名、比如AndroidManifest.xml文件等等,那么他们是怎么被配置的呢,还记得我们讲的ProductFlavor?...前面我们讲过,每一个SourceSet都可以配置它自己的dependencies依赖,androidTest也不例外,它也可以,并且它可以有自己的资源,配置等,和我们使用其他的SourceSet是一样的...,如果想更改也很方便,Android Gradle为我们提供了testBuildType,可以更改要测试BuildType。...testBuildType是android对象的一个属性,接受BuildType的名字作为参数,是一个String字符串。...源代码里我们可以看到,它的默认值是debug,也就是我们上面讲的测试的是debug类型的App包。 写好了测试的代码,我们怎么运行呢,测试需要我们手动执行来运行,使用.

50920

第七章 Android Gradle插件

应用;一类是Library库工程,它可以生成AAR包给其他的App工程公用,就和我们的Jar一样,但是它包含了Android的资源等信息,是一个特殊的Jar包;最后一类是Test测试工程,用于对App工程或者...以上的方法原型中可以看到,我们可以通过buildToolsVersion方法赋值,也可以通过android.buildToolsVersion这个属性读写它的值。...BuildType,名字就是我们定义的名字。...release就是一个BuildType,后面章节我们会详细介绍BuildType,例子中我们用到了两个配置 minifyEnabled 是否为该构建类型启用混淆,我们这里是false表示不启用,如果想要启用可以设置为...它对应BuildType的proguardFiles方法,可以接受一个可变参数,所以我们同时可以配置多个配置文件,比如我们例子中的 proguardFiles getDefaultProguardFile

91520

第九章 Android Gradle高级自定义

这一小结到这里也写完了,动态获取生成版本信息的思路都大同小异,只是信息来源不一样,比如git tag,比如version配置等等,你自己的业务项目中还可以其他更多的渠道来生成,这也是因为gradle的灵活...9.5 动态配置AndroidManifest文件 动态配置AndroidManifest文件,顾名思义,就是我们可以在构建的过程中,动态的修改Androidmanifest文件中的一些内容。...(ProductFlavor),其实不光渠道可以配置自定义字段,构建类型(BuildType)也可以配置,比如针对debug、release甚至其他构建类型来自定义配置,构建类型的一旦配置,那么所有渠道的这个构建类型都会有这个常量字段可以使用...方法非常相似,参考即可,记得它也可以BuildType中使用。...如果你的自定义的Application是继承其他第三方提供的Application,就不能改变继承了,这时候我们通过重写attachBaseContext方法实现。

1.6K10

AndroidStudio3.0多渠道打包:我用一行命令打出N个包

多渠道和统计时息息相关的,因为我们做多渠道打包的目的就是要统计,友盟统计是大家日常开发中常用的渠道统计工具,使用相当普遍,接下来我讲到的打包方法就是基于友盟统计实施的。...正文: 一、按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值: <meta-data android:value="Channel ID" android:name...五、执行打包命令 到这一步,所有配置已经完成,从此以后我们可以用一行命令打出N个包啦! linux下打包全部的Release版渠道包: ....assembleDebug 如果只要豌豆荚的包: gradlew.bat assemblewandoujia 如果只要豌豆荚的Release版: gradlew.bat assemblewandoujiaRelease 可以看出这个命令是可以自由组合的...到此一行命令就能打出我们想要的N个包啦!希望我写的内容对大家有所帮助,有什么不对的地方欢迎指正!!!

34910

Android Dex分包最全总结:含Facebook解决方案

同样分析第二种情况,根据错误信息可以具体定位到代码,但是很奇怪的是 DexMerger ,我们没有设置分包参数或者其他参数,为什么会有 DexMerger ,而且依赖工程最终不都是 aar 格式的?...如果继承其他的 Application ,那么可以重写 attachBaseContext(Context): @Override protected void attachBaseContext(...那么问题来了,第一,主进程进入死循环会 ANR ?...过的,但是这个 SharedPreference 我们得保证我们的程序只有这个地方可以修改,其他地方不能修改。...那么用 Broadcast 广播可以?可是可以,但是增加了 Application 的负担,在拉起 dexopt 进程前还得注册一个动态广播,接收到广播之后还得注销掉,所以这个也没有采用。

2.9K20

Android-Gradle(二) Gradle相关配置详解

该任务继承自Delete,意思是删除根目录中多余的build目录或文件。和Android Studio的clean差不多。...它可以生成AAR包给其他的App工程公用,就和我们的Jar一样,但是它包含了Android的资源等信息,是一个特殊的Jar包 Test插件id:com.android.test....默认跟AndroidManifest里面的package包名一致,但其实他跟AndroidManifest里面的package是可以不同的,他们之间并没有直接的关系。...debug模式的签名信息 buildType 构建类型,在Android Gradle工程中,它已经帮我们内置了debug和release两个构建类型,两种模式主要车别在于,能否在设备上调试以及签名不一样...AndroidManifest文件一些内容,譬如app的名字: 上面就是我们引用了在productFlavors 中定义的不同平台对应的应用名称。

1.7K10

第十一章 Android Gradle多渠道构建

,现在我们要做的就是为每个渠道配置不同的Flurry Key,还记得我们在第九章讲的自动已BuildConfig,利用的就是这个功能。...现在通过这两个例子我们可以发现,我们所做的其实就是对每个渠道,根据不同的业务进行不同的定制,这里是两个统计分析,以后可能还有其他监控、推送等业务,在定制的过程中我们用到了Android Gradle提供的不同的配置以及功能...一般的testApplicationId的值为App的包名+.test,当然大家也可以设置其他的。...我们可以使用示例中的方法指定很多个参数,使用上我们可以看出,它是一个Map,和我们前面讲的manifestPlaceholders很相似。...此外我们要记得productFlavors是一个ProductFlavor集合,我们可以通过操纵它做很多批量处理的事情,比如9.5小节中的批量修改AndroidManifest.xml中友盟统计的渠道名等等

78410

Android多渠道打包总结(推荐)

android:value="${UMENG_CHANNEL_VALUE}" / //这里改成对应build.gradle中的 productFlavors.all 对应的字符串 然后选择你要打包的渠道就 可以了...在这介绍美团最新的walle打包,之前美团还有一个打包方式是通过python脚本修改apk(apk也是一个压缩包)中的一个配置文件的名称,配置文件名称也就是渠道名称从而打不不同的包,这种速度很快,但是android7.0...channels"); // 定制渠道包的APK的文件名称 // apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType...的方式,所以先把AndroidManifest中的配置友盟渠道的代码注释掉: <!...gradlew clean assembleReleaseChannels -PchannelList=meituan,dianping 总结 如果没有渠道的限制一般用as自带的gradle打包就可以

1.1K10

Gradle Plugin for Android Development User Guide 1

[Android插件对于Android项目还指定了一些其他的目录,注意test目录下的AndroidManifest.xml 文件不需要提供,因为它会自动创建,后面会提到为什么] Configuring...the Structure [当我们的项目原本的目录结构和上面默认的目录结构不同时,我们可以进行配置,使用sourceSets 节点来修改目录结构] When the default project...Manifest entries [通过DSL我们可以在build.gradle 文件中指定那些定义在AndroidManifest文件中的内容,不过能够指定的内容有限] Through the DSL...[Gradle Plugin 0.11.0 版本开始在build.gradle 文件中使用applicationId 而不是 packageName 来指定AndroidManifest文件中的packageName...[对应每个build type都有一个对应的Compile, 它们的dependencies也都可以自行定义使其不同。

79130

App磁盘沙盒工具实践

大概的原理如下 例如,我们的原图是一张 2700 1900 像素的照片,加载到内存就需要 19.6M 内存空间,但是,我们需要把它展示在一个列表页中,组件可展示尺寸为 270 190,这时,我们实际上只需要一张原图的低分辨率的缩略图即可...加载图片,先加载到内存,再进行操作可以如果先加载到内存,好像也不太对,这样只接占用了 19.6M + 0.2M 2份内存了,而我们想要的是,在原图不加载到内存中,只接将缩放后的图片加载到内存中,可以实现...Android进程间通信主要手段是Binder,而四大组件的通信也是依靠Binder,因此我们应用间传递路径可以依靠四大组件。...--android:exported="false" 限制其他应用获取Provider。--> ' + buildType + ',config = ' + config if (buildType.toLowerCase() == "debug" && config.toLowerCase

1.7K30

Android 构建过程分析

前言 或许我们都知道Android构建会经历资源合并打包、源码编译、dex生成及打包签名等步骤,可是不是每个人对这些过程中发生的事情都了然于心呢?...Androidmanifest.xml的合并相比来说则要复杂一些,除了第三方依赖中的manifest,项目还可以在不同目录下分别拥有manifest文件。...gradle为不同的manifest赋予了不同的优先级,其顺序如下: buildType 设置 > productFlavor 设置 > src/main > dependency&library...与resources.arsc 资源索引表resources.arsc记录了资源id到文件路径的转换关系,当应用通过Resources类获取res文件资源时,会先从resources.arsc中拿到文件路径...除此之外,默认添加的还有继承于 BackupAgent 及 Annotation 的类。

3.1K40

Android Studio 使用Gradle多渠道打包

第一步:配置AndroidManifest.xml 以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml文件中,大约如下: <meta-data android:name="UMENG_CHANNEL...<em>我们</em><em>可以</em>发现,按照上面的方式写,比较繁琐,其实还有更简洁的方式去写,方法如下: android { productFlavors { wandoujia{} xiaomi...第三步:一次生成所有渠道包 <em>我们</em><em>可以</em>使用CMD命令,进入到项目所在的目录,直接输入命令: gradle assembleRelease 就开始打包了,如果渠道很多的话,时间可能会很长。...,所以<em>我们</em><em>可以</em>根据渠道自定义apk的名称,方便运营人员看嘛,知道哪个apk对应的哪个渠道嘛。...new File( output.outputFile.parent, "xxxx(apk的名字)-${variant.buildType.name

82570
领券