
Gsy Proguard R8
在启用了 R8 优化 / Full Mode / Configuration Analyzer 的项目里,为 GSYVideoPlayer 配置正确、最小面积的保留规则。
Install
npx skills add CarGuo/GSYVideoPlayer --skill gsy-proguard-r8 -g -a claude-code -y- Repository
- CarGuo/GSYVideoPlayer21.5k
- Category
- Engineering
- Updated
- 25d ago
- License
- Apache-2.0
- Context cost
- Lightabout 969 tokens
- Runs scripts
- No, instructions only
What it does
在启用了 R8 优化 / Full Mode / Configuration Analyzer 的项目里,为 GSYVideoPlayer 配置正确、最小面积的保留规则。
gsy-proguard-r8
三个必须的反射热点
分别在源代码里:
- PlayerFactory #L11-L13, ,
Class.newInstance()反射构造IPlayerManager实现。 - CacheFactory, , 同上,构造
ICacheManager实现(见 CacheFactory)。 - GSYBaseVideoPlayer.startWindowFullscreen, , 通过
getConstructor(Context, Boolean)复刻自身,实现"全屏时另起一份 player",见 GSYBaseVideoPlayer。
推荐 proguard-rules.pro(IJK 内核,含 Media3 抑警)
# ---- ijkplayer JNI ----
-keep class tv.danmaku.ijk.media.player.** { *; }
-dontwarn tv.danmaku.ijk.media.player.**
# ---- GSYVideoPlayer 反射热点 ----
-keep class * extends com.shuyu.gsyvideoplayer.video.base.GSYBaseVideoPlayer {
public <init>(android.content.Context);
public <init>(android.content.Context, java.lang.Boolean);
}
-keep class * implements com.shuyu.gsyvideoplayer.player.IPlayerManager {
public <init>();
}
-keep interface com.shuyu.gsyvideoplayer.player.IPlayerManager { *; }
-keep class * implements com.shuyu.gsyvideoplayer.cache.ICacheManager {
public <init>();
}
-keep interface com.shuyu.gsyvideoplayer.cache.ICacheManager { *; }
# ---- Media3 aar 已自带 consumer rules,仅抑警 ----
-dontwarn androidx.media3.**
-dontwarn com.google.android.exoplayer2.**
# ---- 常规序列化 ----
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
完整版参照仓库当前的 proguard-rules.pro。
