在Android Studio中构建后,.so文件异常修改

时间:2018-01-24 06:13:57

标签: android android-studio java-native-interface android-studio-3.0

  • Windows 10家庭版(中文)
  • Android Studio 3.0.1
  • Gradle 4.1

步骤:

  1. 使用android模块创建一个新项目。
  2. 在android模块的“/ src / main”目录下,创建“jniLibs / armeabi-v7a”文件夹,将任何“.so”文件放入其中。
  3. 构建项目并生成“.apk”文件。
  4. 使用Zip-Tools打开“.apk”文件(解压缩“.apk”文件),从APK中提取所有文件。
  5. 比较并检查“.so”文件。所有这些“.so”文件已被修改为3个字节(接近文件尾部),如“0x00”更改为“0x04”,“0x08”更改为“0x12”。
  6. 为什么APK中的'.so'文件不等于原始'.so'文件?

1 个答案:

答案 0 :(得分:0)

我和你有完全相同的问题。在.sok(app / build / outputs / apk / debug)中打包的.so尾端附近有3个字节不同。这三个字节改变如下:

  • 0x00至0x04
  • 0x04至0x00
  • 0x0a到0x14(差异与您的字节从0x08变为0x12相同)

我正在app / build文件夹中挖掘,我看到.so文件也位于intermediates / transforms / mergeJniLibs和intermediates / transforms / stripDebugSymbol中。 mergeJniLibs中.so文件的md5sum与原始.so文件的总和相匹配。 stripDebugSymbol中.so文件的md5sum是不同的。进一步调查使我将其添加到Module的build.gradle的android部分(另请参阅:PackagingOptions doNotStrip documentation ):

android {
    .
    .
    packagingOptions {
        doNotStrip "**/*.so"
    }
    .
}

在Gradle同步,清理和重建之后,app / build / outputs / apk / debug中.so的md5sum与原始md5sum匹配。