2017-10-16 112 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方法找不到它。