Android proguard 如何预防剥离阵列
我在布局文件中实现了gooeymenu:Android proguard 如何预防剥离阵列,android-proguard,Android Proguard,我在布局文件中实现了gooeymenu: <com.mschwartz.dailyflightbuddy.ui.GooeyMenu android:id="@+id/gooeymenu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignPar
<com.mschwartz.dailyflightbuddy.ui.GooeyMenu
android:id="@+id/gooeymenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@id/btn_text_cockpit"
android:layout_centerInParent="true"
android:alpha="0.8"
app:center_drawable="@drawable/ic_settings_white_48dp"
app:hide_on_start="true"
app:itemorientation="LEFT"
app:menu_reference="@array/gooeymenu_command_array" />
在调试器中运行时,一切正常,但在剥离生产版本菜单中运行时,不会显示任何项目
我已尝试将多个命令添加到proguard rules.pro
中,包括以下命令:
-keepclassmembers class com.mschwartz.dailyflightbuddy.R$array {
*;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers类com.mschwartz.dailyflightbuddy.R$array{
*;
}
-keepclassmembers类**.R$*{
公共静态;
}
但到目前为止没有任何运气。因此,我的问题是:
- 如何验证字段是否确实已从中剥离 生产apk或如何确保是否包含字段(或更常见的类/方法)李>
- 如何命令proguard添加字段
ObjectAnimator
,它通过按名称引用方法来更改对象的属性:
'ObjectAnimator animShowAlpha=ObjectAnimator.offload(圆圈点,“Alpha”,0.0f,1.0f);'
然而,proguard会损坏对象的名称,因此方法CirclePoint.setAlpha(..)
被重命名为a(..)
。因此,解决方案是向proguard添加一行,以防止重命名类CirclePoint的方法:
-keep class com.mschwartz.dailyflightbuddy.ui.goeymenu$CirclePoint{*;}
就这样
顺便说一句,要查看proguard是否重命名了一个方法,文件“app/build/outputs/mapping/release/mapping.txt”非常有帮助(并且不言自明)
-keepclassmembers class com.mschwartz.dailyflightbuddy.R$array {
*;
}
-keepclassmembers class **.R$* {
public static <fields>;
}