Crashlytics NDK 多 androidNdkOut 路径支持

Crashlytics NDK multi androidNdkOut path support

我使用 Fabric Crashlytic 来提高我的本机代码性能。我在应用程序项目和 jar 库项目中都有多个 .so 库。在我的应用程序 build.gradle 中,它是:

crashlytics {
    enableNdk true
    androidNdkOut '<myJarProjectPath>/src/main/obj' //or src/main/obj
    androidNdkLibsOut '<myJarProjectPath>/src/main/jniLibs' //or src/main/jniLibs
}

然后我使用 "crashlyticsUploadSymbolsXXXXRelease" 打包我的应用程序,并在 Fabric 中获取 ndk 崩溃堆栈跟踪。但我只能配置其中一个 .so 库。请问如果使用"crashlyticsUploadSymbolsXXXXRelease"获取Apk,jar库工程中的.so会怎么样?有谁知道如何在应用程序项目和 jar 库项目中支持 ndk crashlytics?

来自 Crashlytics 的 Matt!

更新

version 1.23.0 开始,当使用 Gradle 2.2.0+ 的 Android 插件和 externalNativeBuild 时,Fabric 插件支持自动检测本地二进制文件的路径数字用户线。如果使用这个,你应该简单地从你的 crashlytics 块中删除 androidNdkOutandroidNdkLibsOut 属性。


目前我们不支持为您的原生库定义多个目录。但是,一个非常简单的解决方法是定义一个 Gradle 任务,该任务将两个项目的调试和发布 .so 文件复制到一个公共临时目录(例如 temp/ndkout/... 和 temp/ndklibsout/),然后将 androidNdkOutandroidNdkLibsOut 属性设置为这些目录。

需要注意一件事:您需要在每组目录下维护特定于体系结构的文件夹结构!这里有一个完整的例子来给你一个想法:

temp/
-- ndkout/
  -- armeabi
    -- libappproject.so
    -- libjarproject.so
  -- x86
    -- libappproject.so
    -- libjarproject.so
  ...
-- ndklibsout/
  -- armeabi
    -- libappproject.so
    -- libjarproject.so
  -- x86
    -- libappproject.so
    -- libjarproject.so
  ...