Android apk签名 、Structure配置與Gradle的關係

一、签名:

  • 生成签名文件
  • 通过cmd.exe获取SHA1值和MD5值

二、Structure配置:

  • Properties属性
  • Signing签名
  • Flavors(多样性,多渠道)
  • Build Types构建类型
  • Dependencies(依赖)

<<签名--生成密钥和签名文件>>

1.点击菜单栏中的Build的,选中Generate Signed APK,并点击。弹出窗体,如下图
QQ图片20170328151412.png
3.点击Create new…按钮,创建一个签名文件。选择keystore保存的路径,填写keystore和key密码。ketstore密码和key密码在后面会用到。其他信息不是很重要,按实际情况写就好。
key.png
4.点击ok按钮。可以看到,重要的信息都显示在这里了,点击next
key1.png
5.在Build Type类型选择release,点击Finish,release是发布版本用的签名文件,选择debug是debug用的签名文件。
key2.png

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的绝对路径)

<<Structure--Properties属性>>

1.png
  • Complie Sdk Version: Android的编译版本
  • Build Tools Version : 构建版本
  • Library Repostitory :当前的Module的仓库源

这里可以定义一个地址,一个本地路径,或者是jcenter()和mavenCentral().
填写任何一个仓库,AS会自动下载对应的仓库,如果你随便填写一个,会提示你无法连接到该仓库.
填写mavenCentral后你会在app.gradle的文件中看见

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签名>>配置签名信息

2.png

点击ok,对应的gradle的文件中看见

signingConfigs {
        test {
            keyAlias 'demo'
            keyPassword '123456'
            storeFile file('C:/Users/Administrator/Desktop/demo.jks')
            storePassword '123456'
        }
    }

signingConfigs 的作用会在后面介绍

<<Structure--Flavors(多样性,多渠道)>>

3.png
  • 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构建类型>>

4.png
  • 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(依赖)>>

5.png
  • 在这里添加添加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的办法,现在就变得很简单了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,837评论 25 707
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,122评论 8 72
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 转载注明出处:http://www.jianshu.com/p/5255b100930e 0. 前言 完全由个人翻...
    王三的猫阿德阅读 2,506评论 0 4
  • 2017.4.15 1.五点半起床 2.没有背英语单词,因为七个单词觉得多了,所以今天把前几天背的都复习了一遍 3...
    Fhwak阅读 212评论 0 0