Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查失败:接收器!=写入本地存储时为空PTR虚拟(SIGABRT)_Android_Android Native Library - Fatal编程技术网

Android 检查失败:接收器!=写入本地存储时为空PTR虚拟(SIGABRT)

Android 检查失败:接收器!=写入本地存储时为空PTR虚拟(SIGABRT),android,android-native-library,Android,Android Native Library,我有办法 fun generateIdentity(deviceId:String, environment: String) { val identity= Identity() identity.deviceId = deviceId identity.environment = environment AppLog.i(TAG, "generateIdentity()") if (!configDirectory.exists()

我有办法

   fun generateIdentity(deviceId:String, environment: String) {

     val identity= Identity()

     identity.deviceId = deviceId
     identity.environment = environment

    AppLog.i(TAG, "generateIdentity()")

    if (!configDirectory.exists()) {
        configDirectory.mkdirs()
    }

    val identityFile = File("$configDirectory/identity.json")

    if (identityFile.exists()) {
        identityFile.delete()
    }

    identityFile.createNewFile()

    val jsonIdentity = GsonBuilder().setPrettyPrinting().create().toJson(identity)

    try {
        val buf = BufferedWriter(FileWriter(identityFile, true))
        buf.append(jsonIdentity)
        buf.newLine()
        buf.close()
    } catch (e: IOException) {
        AppLog.e(TAG, e.printStackTrace().toString())
    }
}
写入序列化对象的

 class Identity{

@Expose
@SerializedName("device-id")
var deviceId: String = ""

@Expose
@SerializedName("environment")
var environment: String =""
}
以JSON文件的形式发送到本地存储

当在Gson构建过程中对identity对象调用.toJson()时,本机层中会发生崩溃,该层提供了一个非常长的以

03-09 14:20:08.416 7468-7468/ A/art: art/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc:801] Check failed: receiver != nullptr virtual 

03-09 14:20:08.799 7468-7468/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 7468 ()

没有生成墓碑。这是一段看似微不足道的代码,在过去一直有效,但不确定是什么变化导致了这种情况的发生。我如何调查造成这种情况的原因?

我将整个序列化和文件写入过程放入一个如下的协同程序中:

val jsonCoversionResult: Deferred<String> = GlobalScope.async {
         GsonBuilder()
             .setPrettyPrinting()
             .create()
             .toJson(
                 identity)
     }

     runBlocking {
         val jsonIdentity = jsonCoversionResult.await()

         try {
             val buf = BufferedWriter(FileWriter(identityFile, true))
             buf.append(jsonIdentity)
             buf.newLine()
             buf.close()
         } catch (e: IOException) {
             AppLog.e(TAG, e.printStackTrace().toString())
         }
     }
val jsonversionresult:Deferred=GlobalScope.async{
GsonBuilder()
.setPrettyPrinting()
.create()
.toJson(
(身份)
}
运行阻塞{
val jsonIdentity=jsonVersionResult.await()
试一试{
val buf=BufferedWriter(FileWriter(identityFile,true))
buf.append(jsonIdentity)
buf.newLine()
buf.close()
}捕获(e:IOException){
AppLog.e(标记,例如printStackTrace().toString())
}
}
我写的是一个拥有专有硬件的AOSP版本,内存管理有时会因为一些我不理解的原因而变得很糟糕,但这确实奏效了