Apk打包与多渠道打包

时间:2021-07-19 09:28:19

前言:

应用再上线之前,肯定需要打包Apk,而打包Apk必要的文件就是xxx.keystore文件,一般用Android Studio模拟程序运行时候,就是使用的默认的debug.keystore。

打包方式一:使用AS来完成

(1)点击Android Studio 导航栏上Build - Generate Signed APK(使生成 已签名的 APK)
可能首先展示的是输入密码的输入框,就是你AS的密码,主要作用是,解锁密码数据库
,后续在使用可以不用输入密码了,但一般是如下界面:
Apk打包与多渠道打包

   第一栏:输入一个keystore文件的路径。如果存在可以点击Choose existing...按钮选择一个已经存在的,如果要是没有的话,可以选择Create New...建立一个新的keystore文件
第二栏:keystore 密码,一般你选择了你的keystore文件,其自己读取出来
第三栏:keysotre 别名,
第四栏:key password:别名对应的密码

建立一个自己的(Create New …)key store 文件,截图如下:
Apk打包与多渠道打包
第一栏:key store path :key store 文件建立之后,放在哪里。
第二栏:password :密码,confirm:再输一遍密码
第三栏:Alias: 别名,
第四栏:password:密码,confirm:再输一遍密码
第五栏:Validity :证书有效年限,自己定义一个
Certificate 版块:依次是姓名、组织单位(可以为个人或者组织)、组织、国家(省会)、
城市、国家代码(一般为86)

这样有了自己的keystore文件了。
(2)回到第一张图界面,所有信息填完之后,点击Next,之后点击finisn 就可以了

使用Gradle方式打包

(1)首先在build中添加如下:

signingConfigs{
config{
storeFile file('D:/xljnew.jks')
storePassword '000000'
keyAlias 'key0'
keyPassword '000000'
}

}

其实也是和AS一样的原理,也是需要keystore 文件,一次是:文件位置、密码、
别名、别名密码、
需要注意的是,这句话一定要在buildTypes{}之前,要不然回报
Could not get unknown property ‘config’ for SigningConfig container.的错误
(2)在buildTypes 中添加:

 buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config //主要是添加这个
}
}

(3)生成需要Apk文件:
如图所示:
Apk打包与多渠道打包

   点击右侧的Gradle按钮,弹出如图所示的框,看build里面可以看见许多东西,
其中,assembleDebug:生成测试版本Apk文件、assembleRelease 生成正式版Apk文件
文件自动生成到左侧app/build/outputs/apk中

(4)技巧,如何放置keystore文件泄露
可以在gradle.properties文件中添加:
KEY_PATH = D:/xlj.jks
KEY_PASS = 000000
ALISA_NAME= key0
ALIAS_PASS=0000
这样在使用时候:

  signingConfigs{
config{
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}

}
这样在合代码时候,将gradle.properties文件放在本地就好了

多渠道打包

由于,不同的平台会有自己的需求等一系列的原因,需要用到多渠道打包。
(1)先修改build文件如下:

productFlavors{
qihoo{
applicationId “com.example.administrator.qihoo”
}
baidu{
applicationId “com.example.administrator.baidu”
}
}
如上述添加了360和百度的包,其实就是将aplicationId属性进行了复写。那么生成的各渠道的包名也将不相同。
(2)如何定义差异性
这个不是必须的,但是也要知道,正如qq国际版、qq百度版之类的效果
我们在app/src(与main的平级目录)新建一个qihoo和baidu的文件夹,然后在下面分别建立java和res 这两个目录,Java目录是存放代码,res是存放资源,但是并不是将内容拷贝过来,而是改啥添加什么,比如,在baidu 文件下修改app_name,那就是建立src/values/string.xml文件,在其中:

< string name = “app_name”>测试版App< /string>
那么就会在百度版本的APK中用新定义的名字覆盖原来应用的。
(3)生成apk,按照前面说的一步步操作就可以了。如图:
Apk打包与多渠道打包

Apk打包与多渠道打包

如上图所示:就是生成的两个Apk。