我正在通过以下代码为 map 标记设置动画:

final Property<Marker, LatLng> property =
        Property.of(Marker.class, LatLng.class, "position");
final ObjectAnimator animator =
        ObjectAnimator.ofObject(otherMarker, property, typeEvaluator, toLatLng);

这在调试版本中工作正常,但在签名版本中失败并显示以下堆栈跟踪:
0
android.util.NoSuchPropertyException: No accessor method or field found for property with name position
1
at android.util.ReflectiveProperty.<init>(ReflectiveProperty.java:71)
2
at android.util.Property.of(Property.java:55)
3
at com.myapp.fragment.MapWrapperFragment.j(MapWrapperFragment.java:1090)
4
at com.myapp.ActivityA.l(ActivityA.java:860)
5
at com.myapp.fragment.FragmentA$22.onClick(FragmentA.java:377)
6
at android.view.View.performClick(View.java:4438)
7
at android.view.View$PerformClick.run(View.java:18422)
8
at android.os.Handler.handleCallback(Handler.java:733)
9
at android.os.Handler.dispatchMessage(Handler.java:95)
10
at android.os.Looper.loop(Looper.java:136)
11
at android.app.ActivityThread.main(ActivityThread.java:5001)
12
at java.lang.reflect.Method.invokeNative(Native Method)
13
at java.lang.reflect.Method.invoke(Method.java:515)
14
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
15
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
16
at dalvik.system.NativeStart.main(Native Method)

这可能是什么原因?我不确定它是否相关,但我正在使用 Proguard。

最佳答案

Proguard 正在删除或重命名该字段,因为它不知道通过反射完成的任何访问。这就是它在运行时失败的原因。

您可能应该添加 -keep (或 -keepnames )规则来防止这种情况。

关于android - 签名版本中的 NoSuchPropertyException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27326218/

10-09 02:47