2017-10-16 166 views
-2

我已經寫了一個混合應用程序,它使用react-native-svg來呈現svg圖像的反應原生視圖。 一切正常。今天,當我創建發佈APK我的應用程序,並將其部署到模擬器墜毀一個錯誤:react-native android應用程序在發佈apk崩潰時

E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules 
Process: com.example.packagname, PID: 8574 
java.lang.IllegalStateException: java.lang.NoSuchFieldException: mFill 
    at com.horcrux.svg.q.a(Unknown Source:78) 
at com.horcrux.svg.i$1.a(Unknown Source:9) 
at com.horcrux.svg.aa.a(Unknown Source:22) 
at com.horcrux.svg.i.b(Unknown Source:14) 
at com.horcrux.svg.i.a(Unknown Source:10) 
at com.horcrux.svg.t.a(Unknown Source:104) 
at com.horcrux.svg.t.c(Unknown Source:25) 
at com.horcrux.svg.t.a(Unknown Source:7) 
at com.facebook.react.uimanager.u.a(Unknown Source:5) 
at com.facebook.react.uimanager.ag.a(Unknown Source:56) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.a(Unknown Source:34) 
at com.facebook.react.uimanager.ag.d(Unknown Source:83) 
at com.facebook.react.uimanager.ag.e(Unknown Source:17) 
at com.facebook.react.uimanager.UIManagerModule.onBatchComplete(Unknown Source:27) 
at com.facebook.react.bridge.z.d(Unknown Source:30) 
at com.facebook.react.bridge.CatalystInstanceImpl$a.onBatchComplete(Unknown Source:14) 
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method) 
at android.os.Handler.handleCallback(Handler.java:789) 
at android.os.Handler.dispatchMessage(Handler.java:98) 
at com.facebook.react.bridge.queue.a.dispatchMessage(Unknown Source:0) 
at android.os.Looper.loop(Looper.java:164) 
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(Unknown Source:16) 
at java.lang.Thread.run(Thread.java:764) 
Caused by: java.lang.NoSuchFieldException: mFill 
at java.lang.Class.getField(Class.java:1601) 
at com.horcrux.svg.q.a(Unknown Source:41) 
at com.horcrux.svg.i$1.a(Unknown Source:9)  
at com.horcrux.svg.aa.a(Unknown Source:22)  
at com.horcrux.svg.i.b(Unknown Source:14)  
at com.horcrux.svg.i.a(Unknown Source:10)  
at com.horcrux.svg.t.a(Unknown Source:104)  
at com.horcrux.svg.t.c(Unknown Source:25)  
at com.horcrux.svg.t.a(Unknown Source:7)  
at com.facebook.react.uimanager.u.a(Unknown Source:5)  
at com.facebook.react.uimanager.ag.a(Unknown Source:56)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.a(Unknown Source:34)  
at com.facebook.react.uimanager.ag.d(Unknown Source:83)  
at com.facebook.react.uimanager.ag.e(Unknown Source:17)  
at com.facebook.react.uimanager.UIManagerModule.onBatchComplete(Unknown Source:27)  
at com.facebook.react.bridge.z.d(Unknown Source:30)  
at com.facebook.react.bridge.CatalystInstanceImpl$a.onBatchComplete(Unknown Source:14)  
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)  
at android.os.Handler.handleCallback(Handler.java:789)  
at android.os.Handler.dispatchMessage(Handler.java:98)  
at com.facebook.react.bridge.queue.a.dispatchMessage(Unknown Source:0)  
at android.os.Looper.loop(Looper.java:164)  
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(Unknown Source:16)  
at java.lang.Thread.run(Thread.java:764)  

我看到這個問題,只有當我評論-dontobfuscate從proguard-rule.pro文件。我想混淆我的apk代碼(我無法控制它)。 我正在使用類似於本示例中所示的proguard文件, https://github.com/magicismight/react-native-svg-example/blob/cfb788461efae0de367c97aadcc829cdeb959a8d/android/app/proguard-rules.pro

是否有其他人面臨此問題?任何建議,如何在不啓用proguard-rules文件中啓用-dontobfuscate的情況下阻止應用程序崩潰?

編輯我很新的android開發,我第一次嘗試proguard。任何關於如何調試這些問題的積極建議都將非常有用。

回答

2

這是proguard。它需要耐心和眼淚:)

在你的stacktrace很容易可以看到,你正試圖通過反射訪問mField。任何使用 反射的行都必須添加到proguard異常中。

爲什麼你問?因爲它的名字將會改變,所以Class方法找不到它。