Android apk签名 Structure配置与Gradle的关係
2017-11-04 09:48
671 查看
一、签名:
生成签名文件
通过cmd.exe获取SHA1值和MD5值
二、Structure配置:
Properties属性
Signing签名
Flavors(多样性,多渠道)
Build Types构建类型
Dependencies(依赖)
<<签名–生成密钥和签名文件>>
1.点击菜单栏中的Build的,选中Generate Signed APK,并点击。弹出窗体,如下图
3.点击Create new…按钮,创建一个签名文件。选择keystore保存的路径,填写keystore和key密码。ketstore密码和key密码在后面会用到。其他信息不是很重要,按实际情况写就好。
4.点击ok按钮。可以看到,重要的信息都显示在这里了,点击next
5.在Build Type类型选择release,点击Finish,release是发布版本用的签名文件,选择debug是debug用的签名文件。
android studio 2.3 签名时添加签名版本Signature Versions:V1 V2 二者区别
V1:可对签名后的文件,作适当修改,并重新压缩。
V2:不能对签名后的 APK作任何修改,包括 zipalign。因为它是针对字节进行的签名,所以任何改动都会影响最终结果。
勾选V2就可能导致在Android7.0以下的设备无法安装【 INSTALL_PARSE_FAILED_NO_CERTIFICATES】。所以只要打包的时候勾选V1就好了,或者选择 V1和 V2。如果使用运行是自带签名配置在自定义签名中配置——v2SigningEnabled false—–
<<签名–获取SHA1值和MD5值>>
1、第一步黑窗口进入jdk bin目录
2、输入keytool.exe -list -v -keystore C:/Users/Administrator/Desktop/demo.jks(jks的绝对路径)
<
Ignore Assets Pattern:打包时候要忽略的文件(AAPT的属性,AAPT为Android打包工具)很少用到
Incremental Dex :dex增量编译
android studio默认是关闭的 false,选择true ,打开后会加快编译
对应的gradle的文件中看见
加快编译
preDexLibraries
声明是否预先编译依赖库,从而加快构建速度,实质是通过延时清除已生成的依赖库的构建文件,从而提高构建速度,根据使用情况合理配置。
maxProcessCount
设置进程运行过程中可以使用的最大线程数。默认值为4。
javaMaxHeapSize
设置DEX编译器的最大堆大小,堆或者栈都是用于存放暂时不用的垃圾,当内存不足时,垃圾回收机制会清除过时的缓存,堆大小决定垃圾清除的频率,影响着构建的速度
Source Compatibility:资源版本
Target Compatibility:目标版本
两个都选了1.7,可以看到增加了如下代码:
生成签名文件
通过cmd.exe获取SHA1值和MD5值
二、Structure配置:
Properties属性
Signing签名
Flavors(多样性,多渠道)
Build Types构建类型
Dependencies(依赖)
<<签名–生成密钥和签名文件>>
1.点击菜单栏中的Build的,选中Generate Signed APK,并点击。弹出窗体,如下图
3.点击Create new…按钮,创建一个签名文件。选择keystore保存的路径,填写keystore和key密码。ketstore密码和key密码在后面会用到。其他信息不是很重要,按实际情况写就好。
4.点击ok按钮。可以看到,重要的信息都显示在这里了,点击next
5.在Build Type类型选择release,点击Finish,release是发布版本用的签名文件,选择debug是debug用的签名文件。
android studio 2.3 签名时添加签名版本Signature Versions:V1 V2 二者区别
V1:可对签名后的文件,作适当修改,并重新压缩。
V2:不能对签名后的 APK作任何修改,包括 zipalign。因为它是针对字节进行的签名,所以任何改动都会影响最终结果。
勾选V2就可能导致在Android7.0以下的设备无法安装【 INSTALL_PARSE_FAILED_NO_CERTIFICATES】。所以只要打包的时候勾选V1就好了,或者选择 V1和 V2。如果使用运行是自带签名配置在自定义签名中配置——v2SigningEnabled false—–
<<签名–获取SHA1值和MD5值>>
1、第一步黑窗口进入jdk bin目录
2、输入keytool.exe -list -v -keystore C:/Users/Administrator/Desktop/demo.jks(jks的绝对路径)
<
repositories { mavenCentral() }
Ignore Assets Pattern:打包时候要忽略的文件(AAPT的属性,AAPT为Android打包工具)很少用到
Incremental Dex :dex增量编译
android studio默认是关闭的 false,选择true ,打开后会加快编译
对应的gradle的文件中看见
dexOptions { incremental true preDexLibraries true maxProcessCount 8 javaMaxHeapSize "2048m" }
加快编译
preDexLibraries
声明是否预先编译依赖库,从而加快构建速度,实质是通过延时清除已生成的依赖库的构建文件,从而提高构建速度,根据使用情况合理配置。
maxProcessCount
设置进程运行过程中可以使用的最大线程数。默认值为4。
javaMaxHeapSize
设置DEX编译器的最大堆大小,堆或者栈都是用于存放暂时不用的垃圾,当内存不足时,垃圾回收机制会清除过时的缓存,堆大小决定垃圾清除的频率,影响着构建的速度
Source Compatibility:资源版本
Target Compatibility:目标版本
两个都选了1.7,可以看到增加了如下代码:
compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 }
Structure–Signing签名配置签名信息
点击ok,对应的gradle的文件中看见signingConfigs { test { keyAlias 'demo' keyPassword '123456' storeFile file('C:/Users/Administrator/Desktop/demo.jks') storePassword '123456' } }
Structure–Flavors(多样性,多渠道)
Name:Flaveor的名字
Min Sdk Version:向下兼容的SDK版本
Application Id:包名
Proguard File:混淆文件
Signig Config:签名文件名.
签名的文件信息在前一个选项卡Signing中设置.在这里选择
Target Sdk Version:目标SDK版本
Test Instrumentation Runner:Test Runner
Test Application Id:测试时的ID
Version Code:Module版本Version Name:Module版本名称
对应的gradle的文件中看见defaultConfig { applicationId "com.hedan.appgradledemo" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.test }
Structure–Build Types构建类型
Name:Build Type名称
Debugable:是否可以调试
Jin Debuggable:是否可以调试JNI
Signing Config:签名信息
Renderscript Debuggale:是否使用RenderScript
Renderscript Optim Level:Rendescript版本.
Minify Enabled:是否去除无用的资源
Pseudo Locales Enaled:是否支持本地化整理
Proguard File:混淆,去重文件路径
Application Id Suffix:App id后缀
Version Name Suffix:版本名称后缀
Zip Align Enabled:是否支持Zip Align
对应的gradle的文件中看见buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } texttype { debuggable false jniDebuggable false signingConfig signingConfigs.test minifyEnabled true zipAlignEnabled true } }
Structure–Dependencies(依赖)
在这里添加添加jar包,library等.
1.表示添加用系统的library,例如v7,v4包.
2.添加jar包(注意这个jar包必须在当前的Module)
3.添加一个Module(这个工程是AS A Libray)
对应的gradle的文件中看见dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' }
引入依赖包你不知道的秘密dependencies { compile project(":mylibrary") compile files('libs/zxing.jar') compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:25.1.0' compile group: 'com.android.support', name: 'appcompat-v7', version: '25.1.0' }
可以看到Android Studio引入依赖项的方式分为上述四种,按顺序依次称为:1、模块依赖项,2、本地二进制依赖项,3、本地二进制依赖项,4、远程二进制依赖项,5、远程二进制依赖项
compile project(‘:mylibrary’)
声明了一个名为mylibrary的本地 Android 库模块作为依赖项,并要求构建系统在构建应用时编译并包含该本地模块。
compile files(‘libs/zxing.jar’)和compile fileTree(dir: ‘libs’, include: [‘*.jar’])
都称为本地依赖项,告诉构建系统在编译类路径和最终的应用软件包中包含 app/libs/ 目录内的指定或全部 JAR 文件。如果您有模块需要本地二进制依赖项,请将这些依赖项的 JAR 文件复制到项目内部的 /libs 中。
compile ‘com.android.support:appcompat-v7:25.1.0’和compile group: ‘com.android.support’, name: ‘appcompat-v7’, version: ‘25.1.0’
都称为远程二进制依赖项,通过指定其 JCenter 坐标,针对 Android 支持库的 25.1.0 版本声明了一个依赖项。默认情况下,Android Studio 会将项目配置为使用顶级构建文件中的 JCenter 存储区。当您将项目与构建配置文件同步时,Gradle 会自动从 JCenter 中抽取依赖项。或者,您也可以通过使用 SDK 管理器下载和安装特定的依赖项。
第五种可以清楚看出每一节表示的含义,在Android Studio引入远程二进制依赖项,通常的做法是在Library Dependency窗口中搜索,搜索到最新版本的依赖项,如果想要引入低版本的,那该怎么办呢?如果先前不了解远程二进制依赖项的含义,可能想不到修改version的办法,现在就变得很简单了。
相关文章推荐
- Android studio 通过build.gradle 配置打包签名文件,生成 xxx.apk
- Android studio build.gradle配置,debug下使用正式签名,重命名apk
- Android Studio Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)、配置签名文件
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 使用gradle配置apk签名信息
- Android studio gradle 配置APK签名
- [置顶] Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android下的配置管理之道之apk签名相关
- Gradle for Android(三)多渠道打包、配置签名信息
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Gradle for Android(三)多渠道打包、配置签名信息
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Gradle For Android(二) 多渠道打包与签名配置
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 在gradle中配置apk的签名文件keystore
- Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解
- 安卓学习笔记---Android 开发技巧-以友盟为例在Android Studio利用gradle进行多渠道打包和apk签名发布
- gradle文件配置签名apk
- Android studio + Gradle 或 命令行 进行apk签名打包