android 报警代码,Android Lollipop 5.1:致命信号11(SIGSEGV),代码2,故障地址0x9e985ff8 in tid 4093(RenderThread)/当使用大量...

我在应用程序视图中使用了大量的NinePatchDrawables.底层位图是缓存的,因此没有内存问题.

在准备/绘制屏幕时,应用程序崩溃并显示以下日志条目:

04-03 19:37:42.651: A/libc(4064): Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9e985ff8 in tid 4093 (RenderThread)

这个问题刚刚出现在最新的Android 5.1版本中(LMY47D,LMY47E,LMY47I).

具有相同图形的相同视图在早期版本高达5.0.2(LRX22C)的Android版本上运行良好.

我在Nexus 6上遇到问题,到目前为止我还没有机会在任何其他设备上测试它.

只有在使用大量NinePatchDrawables时才会发生崩溃,尤其是在将它们叠加在一起时.当我加载与普通png完全相同的图形(仅用于测试)时,它可以正常工作.使用较少量的NinePatchDrawables的其他视图也可以正常工作.

早期的Android版本(5.0.2或更早版本)也存在同样的问题,但每个屏幕至少发生了三到四倍的NinePatchDrawable.

04-03 19:37:42.651: A/libc(4064): Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9e985ff8 in tid 4093 (RenderThread)

04-03 19:37:42.752: I/DEBUG(354): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

04-03 19:37:42.752: I/DEBUG(354): Build fingerprint: 'google/shamu/shamu:5.1/LMY47D/1743759:user/release-keys'

04-03 19:37:42.752: I/DEBUG(354): Revision: '33696'

04-03 19:37:42.752: I/DEBUG(354): ABI: 'arm'

04-03 19:37:42.752: I/DEBUG(354): pid: 4064, tid: 4093, name: RenderThread >>> com.xyz.myapp <<<

04-03 19:37:42.752: I/DEBUG(354): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x9e985ff8

04-03 19:37:42.794: I/DEBUG(354): r0 b4a23880 r1 aee24000 r2 00000000 r3 00000001

04-03 19:37:42.794: I/DEBUG(354): r4 9e986064 r5 aec3c658 r6 00000001 r7 aec2c570

04-03 19:37:42.794: I/DEBUG(354): r8 00000003 r9 00000001 sl 0000001c fp aee24000

04-03 19:37:42.794: I/DEBUG(354): ip aadb4948 sp 9e985ff8 lr aad072db pc aac954a2 cpsr a0030030

04-03 19:37:42.795: I/DEBUG(354): backtrace:

04-03 19:37:42.795: I/DEBUG(354): #00 pc 001024a2 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxResource::PrepareGpuAccess(EsxContext*, unsigned int, EsxAccessType)+1)

04-03 19:37:42.795: I/DEBUG(354): #01 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.795: I/DEBUG(354): #02 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.795: I/DEBUG(354): #03 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.795: I/DEBUG(354): #04 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.796: I/DEBUG(354): #05 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.796: I/DEBUG(354): #06 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.796: I/DEBUG(354): #07 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.796: I/DEBUG(354): #08 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.796: I/DEBUG(354): #09 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:42.796: I/DEBUG(354): #10 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.796: I/DEBUG(354): #11 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.797: I/DEBUG(354): #12 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.797: I/DEBUG(354): #13 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.797: I/DEBUG(354): #14 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.797: I/DEBUG(354): #15 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.797: I/DEBUG(354): #16 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.797: I/DEBUG(354): #17 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.798: I/DEBUG(354): #18 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:42.798: I/DEBUG(354): #19 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.798: I/DEBUG(354): #20 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.798: I/DEBUG(354): #21 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.798: I/DEBUG(354): #22 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.798: I/DEBUG(354): #23 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.798: I/DEBUG(354): #24 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.799: I/DEBUG(354): #25 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.799: I/DEBUG(354): #26 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.799: I/DEBUG(354): #27 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:42.799: I/DEBUG(354): #28 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.799: I/DEBUG(354): #29 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.799: I/DEBUG(354): #30 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.799: I/DEBUG(354): #31 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.800: I/DEBUG(354): #32 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.800: I/DEBUG(354): #33 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.800: I/DEBUG(354): #34 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.800: I/DEBUG(354): #35 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.800: I/DEBUG(354): #36 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:42.800: I/DEBUG(354): #37 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.801: I/DEBUG(354): #38 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.801: I/DEBUG(354): #39 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.801: I/DEBUG(354): #40 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.801: I/DEBUG(354): #41 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.801: I/DEBUG(354): #42 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.801: I/DEBUG(354): #43 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.801: I/DEBUG(354): #44 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.802: I/DEBUG(354): #45 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:42.802: I/DEBUG(354): #46 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.802: I/DEBUG(354): #47 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.802: I/DEBUG(354): #48 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.802: I/DEBUG(354): #49 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.802: I/DEBUG(354): #50 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.802: I/DEBUG(354): #51 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.803: I/DEBUG(354): #52 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.803: I/DEBUG(354): #53 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.803: I/DEBUG(354): #54 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:42.803: I/DEBUG(354): #55 pc 0010d4fd /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::HwBlt(EsxBltCopy const*)+12)

04-03 19:37:42.803: I/DEBUG(354): #56 pc 0010eb6b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::Blt(EsxBltCopy const*)+10)

04-03 19:37:42.803: I/DEBUG(354): #57 pc 0010ec81 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::BlitRect(EsxResource*, EsxResource*, EsxRect, EsxRect*, int)+272)

04-03 19:37:42.803: I/DEBUG(354): #58 pc 0010ed67 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::PreserveBackBufferViaBlt(int)+126)

04-03 19:37:42.804: I/DEBUG(354): #59 pc 001159a7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+134)

04-03 19:37:42.804: I/DEBUG(354): #60 pc 00177435 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+412)

04-03 19:37:42.804: I/DEBUG(354): #61 pc 0017759d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::GetCmdSpace(EsxCmdBufType, unsigned int)+140)

04-03 19:37:42.804: I/DEBUG(354): #62 pc 00173653 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBltHw(EsxBltCopy const*)+938)

04-03 19:37:42.804: I/DEBUG(354): #63 pc 0017430d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxBltLib::CopyBlt(EsxBltCopy const*)+132)

04-03 19:37:43.285: I/AudioFlinger(357): BUFFER TIMEOUT: remove(4099) from active list on thread 0xb59c4000

04-03 19:37:43.381: W/ActivityManager(859): Force finishing activity 1 com.xyz.myapp/.MainLandscape

04-03 19:37:43.382: I/DEBUG(354): Tombstone written to: /data/tombstones/tombstone_09

04-03 19:37:43.382: I/BootReceiver(859): Copying /data/tombstones/tombstone_09 to DropBox (SYSTEM_TOMBSTONE)

04-03 19:37:43.384: W/AudioTrack(4064): releaseBuffer() track 0xb491df80 disabled due to previous underrun, restarting

04-03 19:37:43.396: D/audio_hw_primary(357): out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2

04-03 19:37:43.446: I/Adreno(859): EGLInit: QTI Build: 01/29/15, 1bccc5d, I0ba6dce82d

04-03 19:37:43.452: I/WindowState(859): WIN DEATH: Window{10b6ffea u0 com.xyz.myapp/com.xyz.myapp.MainLandscape}

04-03 19:37:43.463: I/OpenGLRenderer(859): Initialized EGL, version 1.4

04-03 19:37:43.467: I/Zygote(377): Process 4064 exited due to signal (11)

04-03 19:37:43.479: I/ActivityManager(859): Process com.xyz.myapp (pid 4064) has died

04-03 19:37:43.513: V/ActivityManager(859): Display changed displayId=0

04-03 19:37:43.514: I/InputReader(859): Reconfiguring input devices. changes=0x00000004

04-03 19:37:43.514: I/InputReader(859): Device reconfigured: id=5, name='atmel_mxt_ts', size 1440x2560, orientation 0, mode 1, display id 0

04-03 19:37:43.516: I/ActivityManager(859): Config changes=480 {1.0 ?mcc?mnc en_US ?layoutDir sw411dp w411dp h658dp 560dpi nrml port finger -keyb/v/h -nav/h s.9}

04-03 19:37:43.530: W/AudioPolicyManager(357): unregisterEffect() unknown effect ID 39

04-03 19:37:43.530: W/AudioFlinger(357): session id 36 not found for pid 4064

04-03 19:37:43.530: W/AudioFlinger(357): removeEffect_l() 0xb59c4000 cannot promote chain for effect 0xb5958d80

04-03 19:37:43.530: W/AudioPolicyManager(357): unregisterEffect() unknown effect ID 39

04-03 19:37:43.540: D/ImsConfigImpl(1308): onConfigurationChange

04-03 19:37:43.546: E/SurfaceFlinger(258): rejecting buffer: bufWidth=1792, bufHeight=728, front.active.{w=225, h=225}

04-03 19:37:43.562: E/SurfaceFlinger(258): rejecting buffer: bufWidth=1664, bufHeight=728, front.active.{w=225, h=225}

04-03 19:37:43.717: I/WindowManager(859): Screen frozen for +232ms due to Window{eccfac3 u0 com.android.systemui.ImageWallpaper}

04-03 19:37:45.792: I/art(859): Explicit concurrent mark sweep GC freed 16618(953KB) AllocSpace objects, 12(2MB) LOS objects, 30% free, 37MB/53MB, paused 1.137ms total 68.663ms

04-03 19:37:45.855: D/audio_hw_primary(357): disable_audio_route: reset and update mixer path: low-latency-playback speaker

04-03 19:37:45.856: D/audio_hw_primary(357): disable_snd_device: snd_device(2: speaker)

任何帮助将非常感谢.

非常感谢提前.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Android语音机器人应用的实例代码使用Android Studio进行开发。 1. 在布局文件中添加一个TextView和一个Button控件,用于显示对话和启动语音识别: ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/dialogue" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:padding="10dp" /> <Button android:id="@+id/speech_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Speak" android:layout_below="@id/dialogue" android:layout_centerHorizontal="true"/> </RelativeLayout> ``` 2. 创建一个名为MainActivity的活动,并在其中添加以下代码: ``` public class MainActivity extends AppCompatActivity { private TextView dialogue; private Button speechBtn; private SpeechRecognizer speechRecognizer; private Intent speechRecognizerIntent; private String keeper = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dialogue = findViewById(R.id.dialogue); speechBtn = findViewById(R.id.speech_btn); speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); speechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); speechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); speechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); speechRecognizer.setRecognitionListener(new RecognitionListener() { @Override public void onReadyForSpeech(Bundle params) { } @Override public void onBeginningOfSpeech() { } @Override public void onRmsChanged(float rmsdB) { } @Override public void onBufferReceived(byte[] buffer) { } @Override public void onEndOfSpeech() { } @Override public void onError(int error) { } @Override public void onResults(Bundle results) { ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); if(matches != null){ String text = matches.get(0); dialogue.setText(text); processText(text.toLowerCase()); } } @Override public void onPartialResults(Bundle partialResults) { } @Override public void onEvent(int eventType, Bundle params) { } }); speechBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { speechRecognizer.startListening(speechRecognizerIntent); } }); } private void processText(String text) { if(text.indexOf("hello") != -1 || text.indexOf("hi") != -1){ keeper = "Hello, how can I help you?"; speak(); } else if(text.indexOf("what") != -1 && text.indexOf("name") != -1){ keeper = "My name is Chatbot"; speak(); } else if(text.indexOf("how") != -1 && text.indexOf("you") != -1){ keeper = "I'm doing well, thank you. How about you?"; speak(); } else if(text.indexOf("bye") != -1){ keeper = "Goodbye!"; speak(); finish(); } } private void speak(){ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ TextToSpeech tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if(status != TextToSpeech.ERROR){ tts.setLanguage(Locale.US); tts.speak(keeper, TextToSpeech.QUEUE_FLUSH, null, null); } } }); } else { Intent intent = new Intent(); intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(intent, 1); } } } ``` 这个代码使用SpeechRecognizer来捕获用户的语音输入,并使用TextToSpeech来回答用户。它有一些简单的if/else语句来识别用户的输入并生成相应的回答。 请注意,这只是一个简单的示例应用程序,需要进一步扩展才能实现更复杂的对话。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值