由于易受攻击的libpng版本,Google Play商店拒绝了apk

时间:2016-10-18 14:18:43

标签: android opencv android-ndk google-play tesseract

当我尝试在Google Play开发者控制台中发布我的应用时,我收到一个错误,即所使用的libpng版本容易受到攻击。

  

漏洞已在libpng v1.0.66,v.1.2.56,v.1.4.19中修复,   v1.5.26或更高。您可以在此Google帮助中心文章https://support.google.com/faqs/answer/7011127中找到有关如何解决问题的详细信息。

但是,我根本不需要libpng所以我不想升级而是删除它。我的应用程序使用OpenCV 2.4.11和Tesseract(再次附带leptonica)。在使用ndk-build将HAVE_LIBPNG标志设置为false后,我重新编译了OpenCV和Tesseract。

检查我的apk文件时,库文件夹中没有libpng。

Google为什么一直拒绝该应用?我还能做些什么才能接受该应用?

任何想法都表示赞赏。

编辑: 我看过Android: Removing OpenCV older version will resolve Libpng Vulnerability warning?。 我不想更新到OpenCV 3.1,只是从我的应用程序中删除libpng。我没有使用它,所以较小的apk也可以从简单的移除中获益。

1 个答案:

答案 0 :(得分:1)

好的,我的所作所为:

  • 已更新至OpenCV 2.4.13.1,可以下载here

  • 更新了Tesseract(以及Leptonica,其中包括tess-two项目)到最新版本。

  • 在构建Tesseract之前:

    • 在tess-two / jni / com_googlecode_leptonica_android / config_auto.h中将HAVE_LIBPNG设置为0
    • 重命名为tess-two / jni / libpng的Android.mk,使其不是由include $(call all-subdir-makefiles)构建的
    • 在tess-two / jni / com_googlecode_leptonica_android / Android.mk中从LOCAL_C_INCLUDES中删除了LIBPNG_PATH
    • 从tess-two / jni / com_googlecode_leptonica_android / Android.mk中的LOCAL_SHARED_LIBRARIES中删除了libpngt
    • 从tess-two / jni / Android.mk
    • 中删除了LIBPNG_PATH
  • 从Tesseract的Java文件中删除了所有System.loadLibrary(" pngt")调用

总结一下:我过时的OpenCV版本是一个问题,但Tesseract也使用了易受攻击的libpng版本。即使是我现在使用的较新的tesseract版本也使用了这个易受攻击的libpng版本,所以我不得不手动排除它。

如果有人知道比上述所有要点更好的解决方案,我仍然感兴趣。