使用 Hello Jni 应用程序的 Crashlytics
Crashlytics with Hello Jni App
我在使用 crashlytics 时遇到了一些问题。我想我无法设置 crashlytics androidNdkOut 和 androidNdkLibsOut 路径。
第一个问题是 gradle 根据此 gradle 设置的默认 ndk 输出路径是什么?
其次,如果设置正确,为什么我看到我的 ndk 错误为“???”在 Crashlytics 仪表板上?
这是我的应用程序 build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'io.fabric.tools:gradle:1.21.7'
}
}
allprojects {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这是我的模块 build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 24
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.test.crashlyticsndktest"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
moduleName "crashlytics-jni"
abiFilters "armeabi"
cFlags "-g"
}
}
}
crashlytics {
enableNdk=true
androidNdkOut getProjectDir().absolutePath +'/build/intermediates/ndk/debug/lib'
//androidNdkOut "src/main/obj"
androidNdkLibsOut getProjectDir().absolutePath + "/build/intermediates/ndk/debug/obj/local"
//androidNdkLibsOut "src/main/jniLibs"
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
testCompile 'junit:junit:4.12'
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.5@aar') { transitive = true; }
}
这是我的混淆文件:
-keep public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
-keepattributes SourceFile,LineNumberTable,Annotation
-keep class com.crashlytics.android.**
这是我的 Activity 的面料代码:
Fabric.with(this, new Crashlytics(),new CrashlyticsNdk());
来自 Fabric 团队的 Matt!
我想让您知道,我们刚刚发布了 Gradle 的 Fabric 插件 1.23.0 版,它支持在您使用 Android Gradle 插件 2.2.0+ 与 externalNativeBuild
DSL,因此如果您使用最新的 Android,则不再需要设置 androidNdkOut
和 androidNdkLibsOut
Gradle 插件。这应该可以帮助您正确上传 NDK 符号并改进堆栈跟踪!
我在使用 crashlytics 时遇到了一些问题。我想我无法设置 crashlytics androidNdkOut 和 androidNdkLibsOut 路径。
第一个问题是 gradle 根据此 gradle 设置的默认 ndk 输出路径是什么? 其次,如果设置正确,为什么我看到我的 ndk 错误为“???”在 Crashlytics 仪表板上?
这是我的应用程序 build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'io.fabric.tools:gradle:1.21.7'
}
}
allprojects {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这是我的模块 build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 24
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.test.crashlyticsndktest"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
moduleName "crashlytics-jni"
abiFilters "armeabi"
cFlags "-g"
}
}
}
crashlytics {
enableNdk=true
androidNdkOut getProjectDir().absolutePath +'/build/intermediates/ndk/debug/lib'
//androidNdkOut "src/main/obj"
androidNdkLibsOut getProjectDir().absolutePath + "/build/intermediates/ndk/debug/obj/local"
//androidNdkLibsOut "src/main/jniLibs"
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
testCompile 'junit:junit:4.12'
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.5@aar') { transitive = true; }
}
这是我的混淆文件:
-keep public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
-keepattributes SourceFile,LineNumberTable,Annotation
-keep class com.crashlytics.android.**
这是我的 Activity 的面料代码:
Fabric.with(this, new Crashlytics(),new CrashlyticsNdk());
来自 Fabric 团队的 Matt!
我想让您知道,我们刚刚发布了 Gradle 的 Fabric 插件 1.23.0 版,它支持在您使用 Android Gradle 插件 2.2.0+ 与 externalNativeBuild
DSL,因此如果您使用最新的 Android,则不再需要设置 androidNdkOut
和 androidNdkLibsOut
Gradle 插件。这应该可以帮助您正确上传 NDK 符号并改进堆栈跟踪!