Studio 打包以及Gradle配置

xiaoxiao2021-02-28  18

这是我的第一篇博客,如您看着很不爽,请见谅!因为我还是个处。。。(✿◡‿◡)

通过这篇文章我们可以学习到:

手动生成签名文件通过配置自动打包通过设置风味实现不同风味包的资源替换隐藏签名文件敏感信息多渠道打包

一起来观赏。。。

一、如何生成签名文件以及手动打包?

首先生成签名文件,点击Build->Generate Signed APK:

如何还没有签名文件创建新的签名文件,并且按要求填写相关的Password和别名Alias已经别名的Password,和其他的信息

点击ok后,使用刚才填写的信息填入,生成签名文件

点击next然后选择好输出路径和打包类型即可。

二、通过配置自动打包

点击图标或者快捷键Ctrl+Alt+Shift+S

选择APP点击Signing标签,点击+创建签名文件realease版本,填写信息

我们还需要配置不同构建类型包的签名文件,Signning Config选择我们创建的签名文件,如图这样就创建出了Debug和Realease两个不同版本的包签名文件

点击ok构建完以后,会在modules的build.gradle中生成如下代码:

此信息即为我们创建签名文件时候填写的信息,然后在buildTypes标签下引用设置;

当然在不使用这样的签名时或者不进行引用时,也是会签名打包,只是使用的是Studio默认的签名文件

三、隐藏签名文件的敏感信息

在上述我们提到的系统生成的签名信息代码部分

这些内容都是属于敏感信息,一般在多人开发的时候都是隐藏起来的。

首先在工程目录下创建一个 keystore.properties文件,注意所有的属性都没有引号:

然后在build.gradle中引用

这样我们就将签名文件的敏感信息隐藏了起来,只要保存好keystore.properties文件就行了。

四、设置风味实现不同风味资源的替换

什么是风味?

如图,打开file–project structure界面,Flavors标签下可以创建多个个性化的风味,编辑不同风味的version等信息,即一套代码生成不同风格的app: 点击oK后会在gradle中生成

可能不同的包我们需要生成不同的logo,或者不同的代码,那么我们就可以设置不同的源集目录,专门收录不同的资源或代码,我们的工程默认只有main源集,我们可以再src文件下新建Java Folder,并为其设置源集:

这里的target source set会包含 buildTypes、productFlavors 和二者的组合变体,会出现多种风味。例如我选择的是baidudebug,就会生成一个包含Java文件夹的baidudebug文件夹。当然我这里已经创建了多个风味。。

可以添加xml,我这里添加了 values 文件,同理可以添加 colors、strings、styles文件。

继续添加图片资源:

这里会提示资源文件夹重复,没关系我们在后面可以为其指定源集:

会自动生成mip文件夹(这里Java文件夹没有变成蓝色,和res文件夹图标没有换是因为我目前的Build Variant选择的是其他的风味的,要是切换baidudebug就会变的)

同样我们可以在不同的风味Java文件下创建与main文件包名相同的Java class文件,但此Java class文件在main中不能有,因为这是有main+flavors构成的包

当我们切换成想要的Build Variant时候,在编译的时候就会优先查找对应的风味中的资源。对于moudle.gradle中的defaultConfig属性值applicationId、versionCode等的值都将被flavors中的中被替换

五、多渠道打包

在项目中要上传到各个应用市场,这就可能会涉及到多渠道打包,对不同市场的APP进行重命名,重新设定渠道号值等。我们常用的打包方法都是基于友盟的多渠道打包依据文档:

1、在AndroidManifest.xml里设置动态渠道变量

<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />

2.在build.gradle中设置manifestPlaceholders属性值更改渠道号

或者批量更改:

android { productFlavors { default_channel {} QQ {} WEIXIN {} WEIBO {} wandoujia {} _360 {} yingyongbao {} xiaomi {} baidu {} huawei {} jifeng {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } }

3.统一重命名APP name buildTypes中

转载请注明原文地址: https://www.6miu.com/read-1399975.html

最新回复(0)