Android 使用Firebase应用程序分发服务导致应用程序未安装错误

Android 使用Firebase应用程序分发服务导致应用程序未安装错误,android,firebase,firebase-app-distribution,Android,Firebase,Firebase App Distribution,我正在使用Android平台的。对于自动分发,我已经按照中提到的步骤设置了Gradle文件。安装和身份验证成功。发行也很成功。但一旦我使用Firebase的Android应用程序测试程序下载应用程序,就会导致应用程序未安装错误。这既适用于调试,也适用于发行版变体 我尝试在禁用Google play protect后安装该应用程序,但问题依然存在。有人能帮我一下吗 当我们的应用程序的生产版本在相关设备上可用时,我们遇到了这个错误 只需卸载生产应用程序就很有魅力——我们可以安装我们的test/

我正在使用Android平台的。对于自动分发,我已经按照中提到的步骤设置了Gradle文件。安装和身份验证成功。发行也很成功。但一旦我使用Firebase的Android应用程序测试程序下载应用程序,就会导致应用程序未安装错误。这既适用于调试,也适用于发行版变体

我尝试在禁用Google play protect后安装该应用程序,但问题依然存在。有人能帮我一下吗


当我们的应用程序的生产版本在相关设备上可用时,我们遇到了这个错误


只需卸载生产应用程序就很有魅力——我们可以安装我们的test/dev/两个应用程序中的任何一个,而不会出现任何问题

我也有同样的问题。因此,我检查了日志,在安装失败时发现:

2019-10-07 10:20:29.941 771-2406/? E/ResolverController: No valid NAT64 prefix (114, <unspecified>/0)
2019-10-07 10:20:30.740 1278-1537/? W/NativeHelper: Failure copying native libraries [errorCode=-113]
2019-10-07 10:20:30.740 1278-1537/? E/PackageInstallerSession: Commit of session 392193568 failed: Failed to extract native libraries, res=-113
2019-10-07 10:20:29.941771-2406/?E/ResolverController:没有有效的NAT64前缀(114,/0)
2019-10-07 10:20:30.740 1278-1537/? W/NativeHelper:复制本机库失败[errorCode=-113]
2019-10-07 10:20:30.740 1278-1537/? E/PackageInstallerSession:提交会话392193568失败:无法提取本机库,res=-113

所以我认为我使用的APK文件一定有问题。我按下Build->Build APK(s),并在完成后将该文件上传到Firebase。我不确定我第一次是否真的完成了构建过程,或者只是直接从构建文件夹中获取了apk。它可能已经损坏或只是错误的一个。我建议您只需再执行一次这些步骤,并确保您构建了正确的步骤并将其上载。

请确保您为每个变体提供了一个
signingConfigs

将以下代码添加到应用程序的
build.gradle
android
标记中:

signingConfigs {
    config {
        keyAlias '<YOUR_ALIES>'
        keyPassword '<YOUR_KEY_PASSWORD>'
        storeFile file('<YOUR_KEY_PATH>') // Usually use '../keystore.key'
        storePassword '<YOUR_STORE_PASSWORD>'
    }
}
希望这有帮助。

这是一个随机错误(显然)


对我有效的方法是手动删除
app
模块中的
build
文件夹(简单地清理项目不会删除所有编译的代码),再次构建APK,在FAD上重新上传,然后APK成功安装。

我与一位客户遇到了这个问题,结果她需要删除手机上的应用程序版本,才能使其正常工作。(这是以前安装的非Firebase版本)

在尝试了所有其他解决方案后,我的问题是没有足够的可用存储空间-在这种情况下,软件包安装程序也会给出一个通用的“安装失败”。希望这能为其他人节省我浪费的时间。

消息“安装失败”或“应用程序未安装”的原因可能会有所不同,因为这是安装应用程序时唯一可能出现的错误。 我同意这是没有帮助的

但是,在大多数情况下,这是由于签名问题引起的。 以下是一些解决方案:

  • 确保您在Firebase分发版中使用了经发布签名的APK。
  • 生成签名的APK时,可以选择V1或V2签名。尝试使用V1签名。 V2签名是Android 7.0中引入的一项功能:

  • 通过检查文件app/build.gradle中的值,确保应用程序已正确签名:

    android {
       ...
       defaultConfig {...}
       signingConfigs {
           release {
               storeFile file("myreleasekey.keystore")
               storePassword "password"
               keyAlias "MyReleaseKey"
               keyPassword "password"
           }
       }
       buildTypes {
           release {
               ...
               signingConfig signingConfigs.release
           }
       }
    
    }


  • 最后但并非最不重要的一点是,确保您的手机有足够的存储空间来安装应用程序,并且在设置中选中了“从未知来源安装”选项。

    发生这种情况的原因是您生成的APK可能与所有移动CPU架构不兼容。说到CPU架构,我的意思是一些APK仅与ARM或x86 Android设备兼容。因此,在
    /android/app/build.gradle
    中的app-level-gradle文件中有一个名为
    universalApk
    的标记,该标记必须设置为true,以便当您从android studio或CLI生成APK时,它将为您生成与所有CPU架构兼容的通用APK,因此,多个Android设备,无论Android设备支持哪种CPU体系结构

    参数
    universalApk
    可以通过前面提到的
    build.gradle
    文件在splits JSON对象中找到,如下所示:

    拆分{
    阿比{
    重置()
    启用EnableSeperCPU体系结构
    universalApk true//如果为true,还生成一个通用APK
    包括“armeabi-v7a”、“x86”、“arm64-v8a”、“x86_64”
    }
    
    }
    至于我的案例,当我执行
    /gradlew AppDistributionPloaddebug
    时,它只是抓取它找到的任何APK文件并上传。换句话说,它只是上传了恰巧在那里的应用程序的一部分,比它应该的要小得多


    /gradlew assembleDebug/gradlew AppDistributionPloaddebug解决了这个问题。

    我遇到了这个问题。这可能是因为手机的内部存储空间不足。
    我尝试释放一些空间,然后安装了应用程序。这对我来说很有效。

    我投票将这个问题作为离题题来结束,因为它应该直接提交给Firebase支持部门@当这项服务昨天发布时,可能会有很多开发者面临同样的问题。我从事安卓应用程序开发已经4年了,我对应用程序的所有其他方面都做得很好。该应用程序没有安装在任何版本的多个设备上,这是令人担忧的。此外,Firebase团队成员的回答将帮助所有面临此问题的开发人员。我请求你不要关闭这个问题。谢谢你的反馈。我听了你的建议:猜一猜
    android {
       ...
       defaultConfig {...}
       signingConfigs {
           release {
               storeFile file("myreleasekey.keystore")
               storePassword "password"
               keyAlias "MyReleaseKey"
               keyPassword "password"
           }
       }
       buildTypes {
           release {
               ...
               signingConfig signingConfigs.release
           }
       }