【问题标题】:Android Huawei image segmentation not working on release buildAndroid 华为图像分割不适用于发布版本
【发布时间】:2021-12-27 06:53:04
【问题描述】:

我正在使用华为图像分割从图像中去除背景。此代码在 debug build 上运行良好,但在 release build 上无法正常运行。我不明白会是什么情况。

代码:

  private fun imageSegmentation(bitmap: Bitmap?) {
            if (bitmap == null) {
                dialog.dismiss()
                Toast.makeText(requireContext(), "Something went wrong. Try again!", Toast.LENGTH_LONG).show()
                return
            }
    
            val setting =
                MLImageSegmentationSetting.Factory()
                    .setAnalyzerType(MLImageSegmentationSetting.BODY_SEG)
                    .setExact(true)
                    .create()
            val analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting)
            val mlFrame = MLFrame.Creator().setBitmap(bitmap).create()
            val task = analyzer?.asyncAnalyseFrame(mlFrame)
            task?.addOnSuccessListener { mlImageSegmentationResults ->
                if (mlImageSegmentationResults != null) {
                    removalFlag = true
                    removalBitmap = mlImageSegmentationResults.foreground
                } else
                    Toast.makeText(context, "No human body is detected!", Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }?.addOnFailureListener {
                Toast.makeText(context, "No human body is detected!", Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
        }

依赖关系:

 implementation 'com.huawei.hms:ml-computer-vision-segmentation:2.2.0.300'
 implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-body-model:2.2.0.300'

注意:据我了解,task?.addOnSuccessListener 被调用,但 mlImageSegmentationResults 返回 null

【问题讨论】:

  • 你在发布版本中启用了 Proguard 吗?像这样的东西通常是 Proguard 的“错误”。
  • hi@ahmad bajwa,您能否分享一下您的测试设备模型、堆栈跟踪或任何调试和发布版本的日志,以便我们为您提供适当的帮助?
  • 是的,我已经启用了proguard。
  • @shirley,如果 mlImageSegmentationResults 为空,我认为堆栈跟踪不会有帮助。
  • @shirley 感谢您的帮助 - Primož Ivančič 是对的。

标签: android kotlin huawei-mobile-services huawei-ml-kit


【解决方案1】:

当您启用了 ProGuard 但未正确配置时,通常会发生这种情况。确保在proguard-rules.pro 文件中添加适当的规则,以防止其混淆相关类。

这方面的信息通常由库开发人员提供。经过快速搜索,我找到了this example。来源似乎记录得很好,因此找到正确的设置应该不是问题。

请记住,您可能需要为多个库添加规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多