我尝试在我的应用程序中集成ndk。我使用eclipse,它很好,现在我切换到android studio,我得到一个本机崩溃:
JNI DETECTED ERROR IN APPLICATION: native code passing in reference to invalid local reference: 0x200001
build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 17
targetSdkVersion 19
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir 'src/main/libs'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile files('libs/FlurryAnalytics-5.3.0.jar')
compile files('libs/jericho-html-3.3.jar')
compile files('libs/smack.jar')
compile 'com.android.support:support-v4:22.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.1.2'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0'
}
我已经从android studio生成了so个文件,我从eclipse复制了so个文件,并把它放在libs文件夹中。什么帮助。
这是我想要整合的库[vorbis][1].
我发现在调试本机应用程序时使用墓碑非常有帮助。
每次在Android下进程崩溃时,在/data/tombstones
目录下创建一个Tombstone文件。里面有关于坠机的重要信息。
你可以在这里阅读更多关于墓碑的信息
在我的例子中,tombstone文件包含回溯,它清楚地表明问题是与DeleteLocalRef函数有关。我发现我不小心在同一个引用上调用了它两次。
backtrace:
#00 pc 00038094 /system/lib/libc.so (tgkill+12)
#01 pc 00014261 /system/lib/libc.so (pthread_kill+52)
#02 pc 00014e7f /system/lib/libc.so (raise+10)
#03 pc 000116d5 /system/lib/libc.so (__libc_android_abort+36)
#04 pc 0000fc1c /system/lib/libc.so (abort+4)
#05 pc 00214ded /system/lib/libart.so (art::Runtime::Abort()+160)
#06 pc 000a63d3 /system/lib/libart.so (art::LogMessage::~LogMessage()+1322)
#07 pc 000afb71 /system/lib/libart.so (art::JniAbort(char const*, char const*)+1060)
#08 pc 000b00cd /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
#09 pc 000b2455 /system/lib/libart.so (_ZN3art11ScopedCheck5CheckEbPKcz.constprop.128+672)
#10 pc 000b4fef /system/lib/libart.so (art::CheckJNI::DeleteLocalRef(_JNIEnv*, _jobject*)+54)
#11 pc 0007b110 /data/app/com.myapp/lib/arm/mynativelib.so (CMyNativeClass::Copy(_JNIEnv*, CMyNativeClass const&)+2812)