RikkaApps / HiddenApiRefinePlugin

A Gradle plugin that improves the experience when developing Android apps, especially system tools, that use hidden APIs.
MIT License
267 stars 17 forks source link

Use annotation instead of hardcode prefix #3

Closed Kr328 closed 3 years ago

Kr328 commented 3 years ago

用法

导入 annotation 到 hideapi 子项目

dependencies {
    implementation("dev.rikka.tools.refine:annotation:2.0.0")
}

为隐藏 API 标记需要重定义的目标类

package android.app;

import dev.rikka.tools.refine.RefineAs;
import utils.Utils;

@RefineAs(ActivityManager.class) // 将 ActivityManagerHidden 定义为 ActivityManager
public class ActivityManagerHidden {
    public void forceStopPackageAsUser(String packageName, int userId) {
        Utils.throwStub();
    }
}

导入 gradle 插件

buildscript {
    dependencies {
        classpath("dev.rikka.tools.refine:gradle-plugin:2.0.0")
    }
}

应用插件

plugins {
    id("dev.rikka.tools.refine.gradle-plugin")
}

使用与原方法一致

fun ActivityManager.forceStopPackageAsUser(packageName: String, userId: Int) {
    this.unsafeCast<ActivityManagerHidden>().forceStopPackageAsUser(packageName, userId)
}