0

Мое приложение считывает контакты на телефоне с Ti.Contacts.getAllPeople(). КСН все работает отлично, на андроид она отлично работает, пока число контактов не находится на уровне около 400. Если вы запустите приложение с более чем 500 контактов, он выходит из строя из-за ошибки: появляетсяAppcelerator Android Ti.Contacts.getAllPeople() jni error local reference table overflow

[INFO] : art: art/runtime/indirect_reference_table.cc:98] JNI ERROR (app bug): local reference table overflow (max=512) 
[INFO] : art: art/runtime/indirect_reference_table.cc:98] local reference table dump: 
[INFO] : art: art/runtime/indirect_reference_table.cc:98] Last 10 entries (of 510): 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  509: 0x23182b80 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  508: 0x23182b20 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  507: 0x23182ac0 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  506: 0x23182a60 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  505: 0x23182a00 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  504: 0x231829a0 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  503: 0x23182940 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  502: 0x231828e0 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  501: 0x23182880 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  500: 0x23182820 ti.modules.titanium.contacts.PersonProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98] Summary: 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]   1 of ti.modules.titanium.ui.WindowProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]  508 of ti.modules.titanium.contacts.PersonProxy (508 unique instances) 
[INFO] : art: art/runtime/indirect_reference_table.cc:98]   1 of org.appcelerator.titanium.proxy.ActivityProxy 
[INFO] : art: art/runtime/indirect_reference_table.cc:98] 
[INFO] : art: art/runtime/runtime.cc:289] Runtime aborting... 
[INFO] : art: art/runtime/runtime.cc:289] Aborting thread: 
[INFO] : art: art/runtime/runtime.cc:289] "KrollRuntimeThread" prio=5 tid=15 Runnable 
[INFO] : art: art/runtime/runtime.cc:289] | group="" sCount=0 dsCount=0 obj=0x22c07460 self=0xf3fa0400 
[INFO] : art: art/runtime/runtime.cc:289] | sysTid=2001 nice=0 cgrp=default sched=0/0 handle=0xf3c56580 
[INFO] : art: art/runtime/runtime.cc:289] | state=R schedstat=(370171847 41934738 232) utm=26 stm=10 core=1 HZ=100 
[INFO] : art: art/runtime/runtime.cc:289] | stack=0xe27ac000-0xe27ae000 stackSize=1052KB 
[INFO] : art: art/runtime/runtime.cc:289] | held mutexes= "abort lock" "mutator lock"(shared held) 
[INFO] : art: art/runtime/runtime.cc:289] native: #00 pc 00005d03 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+83) 
[INFO] : art: art/runtime/runtime.cc:289] native: #01 pc 00003051 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33) 
[INFO] : art: art/runtime/runtime.cc:289] native: #02 pc 003c9b97 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+135) 
[INFO] : art: art/runtime/runtime.cc:289] native: #03 pc 00392f52 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+306) 
[INFO] : art: art/runtime/runtime.cc:289] native: #04 pc 00377674 /system/lib/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+644) 
[INFO] : art: art/runtime/runtime.cc:289] native: #0 
[INFO] : art: art/runtime/runtime.cc:289] native: #06 pc 000ec704 /system/lib/libart.so (art::LogMessage::~LogMessage()+1876) 
[INFO] : art: art/runtime/runtime.cc:289] native: #07 pc 00224429 /system/lib/libart.so (art::IndirectReferenceTable::Add(unsigned int, art::mirror::Object*)+1065) 
[INFO] : art: art/runtime/runtime.cc:289] native: #08 pc 002cb4e8 /system/lib/libart.so (art::JNI::NewString(_JNIEnv*, unsigned short const*, int)+392) 
[INFO] : art: art/runtime/runtime.cc:289] native: #09 pc 00087517 /data/app/co.rittler.invitepro-1/lib/x86/libkroll-v8.so (titanium::TypeConverter::jsValueToJavaString(_JNIEnv*, v8::Handle<v8::Value>)+103) 
[INFO] : art: art/runtime/runtime.cc:289] native: #10 pc 0011c323 /data/app/co.rittler.invitepro-1/lib/x86/libkroll-v8.so (titanium::app::PropertiesModule::hasProperty(v8::Arguments const&)+691) 
[INFO] : art: art/runtime/runtime.cc:289] native: #11 pc 000a93d2 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #12 pc 0004ea24 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #13 pc 000b5fea (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #14 pc 000b102e (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #15 pc 00003b40 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #16 pc 0001eafc (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #17 pc 0001f163 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #18 pc 00003b40 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #19 pc 00017bf1 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #20 pc 00008c29 (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #21 pc 002a5b70 /data/app/co.rittler.invitepro-1/lib/x86/libkroll-v8.so (???) 
[INFO] : art: art/runtime/runtime.cc:289] native: #22 pc 68ffffff ??? 
[INFO] : art: art/runtime/runtime.cc:289] at org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native method) 
[INFO] : art: art/runtime/runtime.cc:289] at org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62) 
[INFO] : art: art/runtime/runtime.cc:289] at org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:908) 
[INFO] : art: art/runtime/runtime.cc:289] at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1131) 
[INFO] : art: art/runtime/runtime.cc:289] at org.appcelerator.titaniu 
[INFO] : art: art/runtime/runtime.cc:289] at android.os.Handler.dispatchMessage(Handler.java:98) 
[INFO] : art: art/runtime/runtime.cc:289] at android.os.Looper.loop(Looper.java:135) 
[INFO] : art: art/runtime/runtime.cc:289] at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) 
[INFO] : art: art/runtime/runtime.cc:289] Dumping all threads without appropriate locks held: thread list lock 

Ошибка при компиляции с 5.1.2GA, но я также пробовал 5.1.0GA и 5.0.1GA.

Может ли кто-нибудь помочь? Есть ли способ обхода контактов правильно?

Спасибо, Christian

ответ

0

В Titanium Appcelerator мире, когда приложение запускается, среда выполнения JavaScript создаются в машинном коде, а исходный код приложения обрабатываются. Внедрение в среду выполнения JavaScript вашего приложения - это то, что мы называем объектами «прокси» - в основном, объект JavaScript, который имеет сопряженный объект в собственном коде. Вкратце мы будем часто ссылаться на «землю JavaScript» и «родную землю» в приложении Titanium, поскольку они являются разновидностями параллельных вселенных друг к другу. Прокси-объект существует как на территории JavaScript, так и на родине, и служит «мостом» между ними. Теперь посмотрите на нижеприведенные символы.

for(i = 0; i<$.tableSection.rowCount; i++){ 
    $.tableSection.rows[i].children[1].image = "/myimage.png"; 
    $.tableSection.rows[i].children[0].color = '#fff'; 
    $.tableSection.rows[i].backgroundColor = '#000'; 
} 

И

var rows = $.tableSection.rows; 
for(i = 0; i<$.tableSection.rowCount; i++){ 
    rows[i].children[1].image = "/myimage.png"; 
    rows[i].children[0].color = '#fff'; 
    rows[i].backgroundColor = '#000'; 
} 

Теперь в первом присваивающей значение свойства, как и выше поперечного моста. Он создает какую-то ссылку на родине, которая автоматически не разрушается на родине. Так что ошибка нативного броска. Аналогичный пример переполнения ссылочной таблицы находится в Android : JNI ERROR (app bug): local reference table overflow (max=512). И второй код уменьшает количество ссылок на родину. Таким образом, рекомендация была бы такой. Более вот Referance http://jaljale.com/blog/titanium-appcelerator-crossing-the-bridge-dalvikvm-jni-error-app-bug-local-reference-table-overflow-max-512/

+0

Да, я нашел эту статью, но моя проблема заключается в том, что Ti.Contacts.getAllPeople() является функцией Appcelerator, так что я могу Если это пересечет мост, не так ли? –

+0

Я бы сказал вам создать билет JIRA в https://jira.appcelerator.org/, так как это ошибка, но уже есть открытый билет о проблеме https://jira.appcelerator.org/browse/TIMOB -15765 следить за билетом за любое обновление. –