Android 签名生成中无此属性异常

Android 签名生成中无此属性异常,android,Android,我正在通过以下代码设置贴图标记的动画: final Property<Marker, LatLng> property = Property.of(Marker.class, LatLng.class, "position"); final ObjectAnimator animator = ObjectAnimator.ofObject(otherMarker, property, typeEvaluator, toLatLng); 最终属性= (

我正在通过以下代码设置贴图标记的动画:

final Property<Marker, LatLng> property =
        Property.of(Marker.class, LatLng.class, "position");
final ObjectAnimator animator =
        ObjectAnimator.ofObject(otherMarker, property, typeEvaluator, toLatLng);
最终属性=
(标记类、板条类、“位置”)的属性;
最终对象动画师=
对象的ObjectAnimator.ofObject(其他标记、属性、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)
0
android.util.NoSuchPropertyException:找不到名称为position的属性的访问器方法或字段
1.
位于android.util.ReflectiveProperty。(ReflectiveProperty.java:71)
2.
位于android.util.Property.of(Property.java:55)
3.
位于com.myapp.fragment.MapWrapperFragment.j(MapWrapperFragment.java:1090)
4.
位于com.myapp.ActivityA.l(ActivityA.java:860)
5.
在com.myapp.fragment.FragmentA$22.onClick上(FragmentA.java:377)
6.
在android.view.view.performClick上(view.java:4438)
7.
在android.view.view$PerformClick.run(view.java:18422)
8.
位于android.os.Handler.handleCallback(Handler.java:733)
9
位于android.os.Handler.dispatchMessage(Handler.java:95)
10
位于android.os.Looper.loop(Looper.java:136)
11
位于android.app.ActivityThread.main(ActivityThread.java:5001)
12
位于java.lang.reflect.Method.Invokenactive(本机方法)
13
位于java.lang.reflect.Method.invoke(Method.java:515)
14
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)上
15
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
16
在dalvik.system.NativeStart.main(本机方法)

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

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


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

我偶然发现了相同的问题,但提供的proguard更改对我没有帮助。我猜是因为我使用了新的play服务('com.google.android.gms:play services maps:7.0.0'),它们可能有不同的内部结构

对我起作用的是:

-keep class com.google.android.gms.** { *; }

在使用proguard时,我在标记动画中遇到了相同的问题。你能告诉我你使用了什么规则来保留或保留matiash建议的名字吗?谢谢。我在网站上使用了这些信息,你在使用谷歌地图7.0.0吗?我使用了你的proguard设置,但我仍然得到了错误,也许他们在内部更改了某些内容。