android写代码不进release包,Android进阶之路 - debug模式下打出release签名包

此篇文章基于一些特殊场景,如三方分享的时候,微信需要release包才能进行分享;

当然诸如此类的三方框架不在少数,故此我借鉴了网上多篇同此需求的文章,加以总结与实践有了此篇Blog,末尾也包含了一些我遇到的坑~

优先掌握:

查看是否配置Signing属性

方式一 :项目 - 右键 - Open-Moudle-Settings

e28554c757085675bc623e4ff3d0037f.png

方式二:Ctrl+Shift+Alt+S

869ca055d564bd35303824a85da4b4f8.png

如Signing没有配置过,那么就如下图

01b3a9664794ed99ab100d197696eb3c.png

配置方式有俩种

其均与signingConfigs 与 buildTypes 配置属性有关

方式一 : 在配置文件中,让 signingConfigs 只配置 release 包属性 ,然后通过步骤2 把release的属性设置到debug 包内 ,实现的最终效果与方式二相同

方式二 : 在配置文件中, signingConfigs 同时配置 release 包与debug 包 属性 ,同时buildTypes进行下文注释下的配置属性~

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

//以下俩行记得添加!

debuggable true

signingConfig signingConfigs.release

}

//以下配置记得添加!

debug {

signingConfig signingConfigs.release

}

}

使用流程

方式一

步骤 1.在build.gradle(app)内添加 signingConfigs 属性

请将signingConfigs 放在最前方,不然buildTypes会因读取不到signingConfigs 报错!!! 因为系统默认会从从头到尾优先读取配置,同时记得配置buildTypes - - ~

android {

signingConfigs {

release {

keyAlias '别名'

keyPassword 'key 密码'

storePassword 'store 密码'

storeFile file('key存储的具体地址')

}

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

场景模拟,讲解 :

2964102e2694718088eb9fb024d6d40a.png

步骤 2.在Build Types下把debug Type默认的Signing Config 选取为 release,同时 第一个选项 Debuggable 设置为 true!!!

d21d233ed612498643177384b6fb1980.png

方式二

所有配置全部在build.gradle(app) 下完成( 完整代码):

android {

signingConfigs {

release {

keyAlias '别名'

keyPassword 'key 密码'

storePassword 'store 密码'

storeFile file('key存储的具体地址')

}

debug{

keyAlias '别名'

keyPassword 'key 密码'

storePassword 'store 密码'

storeFile file('key存储的具体地址')

}

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

//以下俩行记得添加!

debuggable true

signingConfig signingConfigs.release

}

//以下配置记得添加!

debug {

signingConfig signingConfigs.release

}

}

/**

*补充知识

*debuggable这个构建类型是否应该生成可调试的apk

*debug "debug"类型的构建类型

*signingConfig signingConfigs.release 设置默认调用上方我们刚配置的signingConfigs.release

*/

}

错误锦集(可忽略,均为个人想法):

错误1 :AndroidMainfest加入了debug签名的信息

025fe6c5d05f6028fbca5ae4de591800.png

错误2:意为防止被他人反编译后,暴露key.store,所以在gradle.propertles中新增key.store属性,但最后发现根本读取不到此处配置的数据!(后续如有发现,在补不足之处)

gradle.properties(Project Properties)添入配置:

//签名别名

RELEASE_KEY_ALIAS=签名别名

//签名密码

RELEASE_KEY_PASSWORD=签名密码

//store密码

RELEASE_STORE_PASSWORD=store密码

//签名文件地址

RELEASE_STORE_FILE=key存储的具体地址

0b2fb125d9182cfcd4ebcea4fb0ba6f1.png

注意:因为读取不到属性,所以查看Signing配置是 Unrecognized value (无法识别)

db46f0afcc93ee99ee98c2b18ea6610d.png

错误3(疑惑)gradle.propertles的属性通过网上查找的方法,有错误报出(后续如有发现,在补不足之处):

//这里的release 可与 config互换名称,保留其一既可

config{

Properties properties = new Properties();

//获取别名且进行赋值

def key_Alias = properties.getProperty('RELEASE_KEY_ALIAS')

keyAlias key_Alias

//获取key密码且进行赋值

def key_Password = properties.getProperty('RELEASE_KEY_PASSWORD')

keyPassword key_Password

//获取store密码且进行赋值

def store_Password = properties.getProperty('RELEASE_KEY_PASSWORD')

storePassword store_Password

//方式1(获取key的存储位置)且进行赋值

def sdkDir = properties.getProperty('RELEASE_STORE_FILE')

storeFile sdkDir

//方式2(读取文件)且进行赋值

// def sdkDir = properties.getProperty('RELEASE_STORE_FILE')

// storeFile file(sdkDir)

}

借鉴文章:

Android Studio 下debug情况下直接使用release的签名

Android Studio 教你在debug调试模式下使用正式签名

Android local.properties 文件读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值