androidNdkOut和androidNdkLibsOut自动检测库不起作用

rzh*_*hik 4 android-ndk crashlytics-android google-fabric

最新的面料文档说

如果将Gradle版本2.2.0+的Android插件与externalNativeBuild DSL一起使用,则应删除androidNdkOut和androidNdkLibsOut属性,因为Fabric插件会自动检测这些路径。但这对我不起作用,因为我的本地代码位于库模块中。我在库模块中有本机代码,并在应用程序模块中启用了Crashlytics。我该如何运作?

我正在使用com.android.tools.build:gradle:2.3.3和io.fabric.tools:gradle:1.23.0。

错误:

com.crashlytics.tools.android.project.codemapping.CodeMappingException:Crashlytics找不到NDK输出目录'[我的应用程序模块路径] / obj'。-androidNdkOut设置是否正确配置?

更新。我将Crashlytics配置移至我的库模块:

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath('com.android.tools.build:gradle:2.3.3') {
            force = true
        }
        classpath 'io.fabric.tools:gradle:1.23.0'
    }
}

repositories {
    jcenter()
}

apply plugin: 'com.android.library'
apply plugin: 'io.fabric'

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    publishNonDefault true

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"

        ndk {
            moduleName "core"
        }

        externalNativeBuild {
            ndkBuild {
                abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64"
            }
        }
    }

    lintOptions {
        abortOnError false
    }

    buildTypes {
        debug {
            debuggable true
            jniDebuggable true
            minifyEnabled false
        }
        release {
            debuggable false
            jniDebuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    externalNativeBuild {
        ndkBuild {
            path 'jni/Android.mk'
        }
    }
}

crashlytics {
    enableNdk true
    baseManifestPath '../app/src/main/AndroidManifest.xml'
}

dependencies {
    compile "com.android.support:support-v4:${rootProject.ext.supportLibVersion}"
    compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    compile "com.android.support:design:${rootProject.ext.supportLibVersion}"
    compile "com.google.android.gms:play-services-maps:${rootProject.ext.playServicesVersion}"
    compile "com.google.android.gms:play-services-location:${rootProject.ext.playServicesVersion}"
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序模块现在仅包含依赖项:

dependencies {    
    // Crashlytics Kit
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true
    }
    // NDK Kit
    compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.6@aar') {
        transitive = true
    }
}
Run Code Online (Sandbox Code Playgroud)

但是现在我得到了错误

在类型com.crashlytics.tools.gradle.CrashlyticsExtension的对象上找不到参数[Manifest的路径]的方法baseManifestPath()。

kas*_*urd 7

我面临着同样的问题。我有主应用程序模块“ app”,“库”模块包含ndk源。

2019年6月更新

上个月,我在使用gradle执行“ crashlyticsUploadSymbolsRelease”命令时遇到了一个错误。似乎libs文件的位置已更改。

以下代码使我可以看到带有行号的NDK崩溃:

crashlytics {
    enableNdk true
    androidNdkOut '../library/build/intermediates/cmake/release/obj'
    androidNdkLibsOut '../library/build/intermediates/stripped_native_libs/release/out/lib'
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。