0

私のアプリは、Ti.Contacts.getAllPeople() を使用して電話の連絡先を読み取ります。iOS ではすべて正常に動作し、Android では連絡先の数が約 400 になるまで問題なく動作します。500 を超える連絡先でアプリを起動すると、次のエラーでクラッシュします。

[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も試しました。

誰でも助けることができますか?連絡先を正しく読み取るための回避策はありますか?

ありがとう、クリスチャン

4

2 に答える 2

0

Titanium Appcelerator の世界では、アプリケーションが起動されると、JavaScript 実行環境がネイティブ コードで作成され、アプリケーションのソース コードが評価されます。アプリケーションの JavaScript ランタイム環境に挿入されるのは、私たちが「プロキシ」オブジェクトと呼んでいるものです。基本的には、ネイティブ コードに対になったオブジェクトを持つ JavaScript オブジェクトです。口語的に、Titanium アプリケーションでは「JavaScript ランド」と「ネイティブ ランド」をよく参照しますが、これらは互いにパラレル ユニバースのようなものです。プロキシ オブジェクトは、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)にあります。そして 2 番目のコードは、ネイティブ ランドでの参照の数を減らします。したがって、推奨事項はそれです。詳細については、リファレンスhttp://jaljale.com/blog/titanium-appcelerator-crossing-the-bridge-dalvikvm-jni-error-app-bug-local-reference-table-overflow-max-512/を参照してください。

于 2016-02-01T08:40:56.127 に答える