AndResGuard icon indicating copy to clipboard operation
AndResGuard copied to clipboard

无法签名问题

Open itchenning opened this issue 5 years ago • 4 comments

问题:keystoreAlias过长可能会导致签名失败!

发现过程: 今天打包项目A,一直不能签名成功,用了项目B的签名替换,成功了。但是把项目A的签名替换到项目B中,项目B也能打包成功。 项目A用正常的assembleRelease命令也是可以打包的。这下把我整晕了,到底是项目的问题,还是签名的问题? 项目A是一个很简单的小项目,仔细对比了一下build文件,没什么问题。然而签名文件又会有什么问题呢?不死心,就反复生成多个签名,反复打包。这些签名文件最大的差异只在keystoreAlias这个值上。 当我把keystoreAlias改短并小写之后,打包正常了! 请修复。

itchenning avatar Apr 30 '19 09:04 itchenning

补充一下环境: AS:3.3.2, Build:3.2.0, compileSdkVersion: 28, OS:WIN10

itchenning avatar Apr 30 '19 10:04 itchenning

keystoreAlias过长可能会导致签名失败!

是多长呢? 可否提供一下出错的keystoreAlias?

simpleton avatar May 15 '19 21:05 simpleton

出错的Alias为:MultifuncFlashlight 之后改为mfl,正常打包。

itchenning avatar May 20 '19 08:05 itchenning

更正之前的Bug,之前的Alias会影响自定义apk名的长度。

最近同事发现你们这个库当自定义apk名过长时签名失败。

出错的apk名长度
90位
改小长度后签名正常。

自定义apk名设置方式,在主项目build.gradle中:

applicationVariants.all {
       def buildType = it.buildType.name
       def fileName
       def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
       it.outputs.each {
           if (buildType == "release") {
               fileName = "release_V${defaultConfig.versionName}_N${defaultConfig.versionCode}_${appname}_${defaultConfig.applicationId}_${createTime}.apk"
           }
           it.outputFileName = fileName
       }
   }

itchenning avatar Apr 12 '20 13:04 itchenning