Android进阶之路 - debug模式下打出release签名包

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

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

优先掌握:

  • 查看是否配置Signing属性

方式一 :项目 - 右键 - Open-Moudle-Settings
Android进阶之路 - debug模式下打出release签名包_第1张图片
方式二:Ctrl+Shift+Alt+S
这里写图片描述

  • 如Signing没有配置过,那么就如下图
    Android进阶之路 - debug模式下打出release签名包_第2张图片

配置方式有俩种

其均与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'
        }
    }
}

场景模拟,讲解
Android进阶之路 - debug模式下打出release签名包_第3张图片

步骤 2.在Build Types下把debug Type默认的Signing Config 选取为 release,同时 第一个选项 Debuggable 设置为 true!!!
Android进阶之路 - debug模式下打出release签名包_第4张图片

方式二

所有配置全部在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签名的信息
Android进阶之路 - debug模式下打出release签名包_第5张图片

错误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存储的具体地址

Android进阶之路 - debug模式下打出release签名包_第6张图片

注意:因为读取不到属性,所以查看Signing配置是 Unrecognized value (无法识别)
Android进阶之路 - debug模式下打出release签名包_第7张图片

错误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 文件读取

你可能感兴趣的:(Android进阶之路,#,项目开发知识点归纳)