Android 谷歌Play商店拒绝apk,因为libpng版本有漏洞

Android 谷歌Play商店拒绝apk,因为libpng版本有漏洞,android,opencv,android-ndk,google-play,tesseract,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或更高版本。你可以在这篇谷歌帮助中心的文章中找到更多关于如何解决这个问题的信息 但是,我根本不需要libpng,所以我不想升级,而是将其删除。我的应用程序使用OpenCV 2.4.11和Tesseract(leptonica也提供)。在使用ndk build将HAVE_LIBPNG标志

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

libpng v1.0.66、v.1.2.56、v.1.4.19中修复了这些漏洞, v1.5.26或更高版本。你可以在这篇谷歌帮助中心的文章中找到更多关于如何解决这个问题的信息

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

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

为什么谷歌一直拒绝这个应用?我还可以做些什么让应用程序被接受

欢迎提出任何意见

编辑: 我读过。
我不想更新到OpenCV 3.1,只想从我的应用程序中删除libpng。我没有使用它,所以一个较小的apk也会从简单的移除中受益。

好的,下面是我所做的:

  • 更新至OpenCV 2.4.13.1,可下载

  • 将Tesseract(以及tess two项目附带的Leptonica)更新至最新版本

  • 在构建Tesseract之前:

    • 在tess two/jni/com\u googlecode\u leptonica\u android/config\u auto.h中将HAVE_LIBPNG设置为0
    • 重命名了tess two/jni/libpng的Android.mk,这样它就不是通过include$(调用所有subdir makefile)构建的
    • 从tess two/jni/com\u googlecode\u leptonica\u android/android.mk中的本地包含中删除了LIBPNG\u路径
    • 从tess two/jni/com\u googlecode\u leptonica\u android/android.mk中的本地共享库中删除了libpngt
    • 从tess two/jni/Android.mk中删除了LIBPNG_路径
  • 已从Tesseract的Java文件中删除所有System.loadLibrary(“pngt”)调用
总而言之:我的OpenCV过时版本是一个问题,但Tesseract也使用了易受攻击的libpng版本。即使是我现在使用的较新的tesseract版本也使用这个易受攻击的libpng版本,因此我不得不手动将其排除


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

阅读本文:谢谢@Stanojkovic。已经读过了,但是,我不想升级OpenCV。我不使用libpng,因此不需要升级。您不应该取消定义HAVE_PNG而不是将其定义为值0/false吗?(对于OpenCV,即.Tessercat可能希望您将
HAVE_LIBPNG
定义为0)。感谢@Michael的评论。对于Tesseract/Leptonica,我将HAVE_LIBPNG标志设置为0。对于OpenCV,我没有找到HAVE_PNG或HAVE_LIBPNG标志。有吗?相反,我删除了所有架构的libpng.a文件。在不同的OpenCV版本中,该文件的位置/是否存在可能有所不同。