Android应用程序-仅在发布包中显示错误
我最近将我的第一个Kotlin Android应用程序上传到Google Play控制台的一个封闭测试(alpha)轨道上。审查已经完成,我与一些测试人员分享了我的链接。不幸的是,发布包中有调试APK中不存在的主要bug!(当我在Android Studio中点击“Run”时自动生成的)。我在我的设备上检查了这两个捆绑包,调试版本工作得很好,但版本无法使用。是否仍然需要调试发布版本???或者可以创建一个模拟其行为的可调试构建(因为出于安全原因,发布构建被设置为不可调试…)。有没有办法查看应用程序日志?(或者在发布版本中删除了它们?) 我认为重要的是要提到所有的bug都与Firebase操作有关。我的Firebase项目具有所有必需的“SHA证书指纹”(用于调试、上载和应用程序签名密钥的SAH-1和SHA-256)。也许又少了一样东西 也许具体的bug可以指出差异的根源,因此以下是我的两个最大bug:Android应用程序-仅在发布包中显示错误,android,firebase,kotlin,debugging,release,Android,Firebase,Kotlin,Debugging,Release,我最近将我的第一个Kotlin Android应用程序上传到Google Play控制台的一个封闭测试(alpha)轨道上。审查已经完成,我与一些测试人员分享了我的链接。不幸的是,发布包中有调试APK中不存在的主要bug!(当我在Android Studio中点击“Run”时自动生成的)。我在我的设备上检查了这两个捆绑包,调试版本工作得很好,但版本无法使用。是否仍然需要调试发布版本???或者可以创建一个模拟其行为的可调试构建(因为出于安全原因,发布构建被设置为不可调试…)。有没有办法查看应用程序
任何帮助都将不胜感激。您可以将此
可调试true
添加到您的gradle文件中
release {
debuggable true
minifyEnabled false
shrinkResources false
}
这将帮助您调试发布版本,确保minifyEnabled
和shrinkResources
为false
要使用Release密钥库运行应用程序的Release
版本,请使用以下命令
signingConfigs {
release {
storeFile file('file location')
storePassword 'your store password'
keyAlias 'your key alias'
keyPassword 'your key password'
}
}
然后添加此版本的变体
release{
signingConfig singingConfigs.release
}
我找到了调试发布包的方法。问题是“release”构建变量使用了默认的签名密钥-调试密钥。我必须用一把安全的钥匙。最后,我的“build.gradle(:app)”文件中有以下代码:
。。。
def keystorePropertiesFile=rootProject.file()
def keystreproperties=新属性()
加载(新文件输入流(keystoreProperties文件))
安卓{
签名配置{
爱奥尼斯{
keyAlias密钥复制属性['keyAlias']
keyPassword密钥复制属性['keyPassword']
storeFile文件(keystoreProperties['storeFile'])
storePassword密钥复制属性['storePassword']
}
}
...
建筑类型{
释放{
...
signingConfig signingConfigs.ionce
}
}
...
}
...
(我选择这样做。如果这样做,请注意storeFile
字段中的“\”方向,因为错误信息不多。帮助了我)
如果任何人也遇到我提到的两个问题之一,以下是解决方案:
构建变量之间的区别在于,在我的“发布”变量中,我使用了minifyEnabled true
,这会更改属性名称以缩小代码。从Firestore获取文档时,文档与对象结构不匹配,无法加载列表。解决办法就在这里
这一点与构建类型的差异无关-似乎在升级gradle中的firebase auth库后,我没有检查该功能。升级firebase ui验证库(如图所示)成功了:)
我添加了您建议的内容,但当我尝试使用“release”构建变量运行时,仍然出现以下错误:“安装未成功。无法安装应用程序:安装\解析\失败\没有\证书”。我假设内部构建过程使用调试键对应用程序进行签名,而不考虑变量?。。。有没有办法将Android Studio调试器附加到非由它启动的Android进程?因为我运行buggy bundle的唯一方法是单击我手机中的图标。你需要先卸载旧的,然后再试一次。事实并非如此。检查编辑的应答器。这就是我的意思,将你自己的发布密钥凭据而不是我拥有的调试密钥凭据放在上面,我想这在“storeFile”文件中是清楚的('file location')”,很高兴它为您解决了问题
...
def keystorePropertiesFile = rootProject.file(<keystore.properties file location>)
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
signingConfigs {
ionce {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
...
buildTypes {
release {
...
signingConfig signingConfigs.ionce
}
}
...
}
...