【问题标题】:Crashlytics NDK multi androidNdkOut path supportCrashlytics NDK 多 androidNdkOut 路径支持
【发布时间】:2015-11-16 12:24:21
【问题描述】:

我使用 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会发生什么?有谁知道如何在 app 项目和 jar 库项目中支持 ndk crashlytics?

【问题讨论】:

    标签: android android-ndk crashlytics twitter-fabric


    【解决方案1】:

    来自 Crashlytics 的 Matt!

    更新

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


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

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

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

    【讨论】:

    • 你的意思是这个临时目录只是用来上传符号的?所以 app 项目和 jar 库项目中的库保持不变?
    • 我接受这个作为答案......但希望 Fabric 能够改进它。
    • @orcsYang 是的,这个临时目录只是用于上传符号,您可以在该任务运行后将其删除。是的,应用程序项目和库项目中的 .so 库将保持不变,您只需将副本复制到临时目录中。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多