automatically infer type comparator

This commit is contained in:
oSumAtrIX 2026-02-23 17:37:55 +01:00
parent 93301e7f76
commit 2d568e0127
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4
68 changed files with 92 additions and 92 deletions

View file

@ -34,7 +34,7 @@ jobs:
- name: Build - name: Build
env: env:
ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ env.GITHUB_ACTOR }} ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ github.actor }}
ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }} ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew :patches:buildAndroid --no-daemon run: ./gradlew :patches:buildAndroid --no-daemon

View file

@ -9,7 +9,7 @@ internal val BytecodePatchContext.userStateSwitchMethod by gettingFirstMethodDec
} }
internal val BytecodePatchContext.cb11ConstructorMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.cb11ConstructorMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("CB11Details;") } definingClass("CB11Details;")
parameterTypes( parameterTypes(
"Ljava/lang/String;", "Ljava/lang/String;",
"Ljava/lang/String;", "Ljava/lang/String;",
@ -26,5 +26,5 @@ internal val BytecodePatchContext.cb11ConstructorMethod by gettingFirstMethodDec
internal val BytecodePatchContext.getBottomBarMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getBottomBarMethod by gettingFirstMethodDeclaratively {
name("getBottomBar") name("getBottomBar")
definingClass { endsWith("HomeMenu;") } definingClass("HomeMenu;")
} }

View file

@ -9,7 +9,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.launchCustomTabMethodMatch by composingFirstMethod { internal val BytecodePatchContext.launchCustomTabMethodMatch by composingFirstMethod {
definingClass { endsWith("CustomTabsArticleLauncher;") } definingClass("CustomTabsArticleLauncher;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
opcodes( opcodes(
Opcode.IPUT_OBJECT, Opcode.IPUT_OBJECT,

View file

@ -29,7 +29,7 @@ internal val startActivityInitHook = extensionHook(
}, },
) { ) {
name("onCreate") name("onCreate")
definingClass { endsWith("/StartActivity;") } definingClass("/StartActivity;")
opcodes( opcodes(
Opcode.INVOKE_STATIC, Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT, Opcode.MOVE_RESULT,

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.magazinesActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.magazinesActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("/StartActivity;") } definingClass("/StartActivity;")
} }

View file

@ -29,7 +29,7 @@ internal val homeActivityInitHook = extensionHook(
}, },
) { ) {
name("onCreate") name("onCreate")
definingClass { endsWith("/HomeActivity;") } definingClass("/HomeActivity;")
opcodes( opcodes(
Opcode.CONST_STRING, Opcode.CONST_STRING,
Opcode.INVOKE_STATIC, Opcode.INVOKE_STATIC,

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.homeActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.homeActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("/HomeActivity;") } definingClass("/HomeActivity;")
} }

View file

@ -5,6 +5,6 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.onApplicationCreateMethodMatch by composingFirstMethod { internal val BytecodePatchContext.onApplicationCreateMethodMatch by composingFirstMethod {
name("onCreate") name("onCreate")
definingClass { endsWith("RecorderApplication;") } definingClass("RecorderApplication;")
instructions("com.google.android.feature.PIXEL_2017_EXPERIENCE"()) instructions("com.google.android.feature.PIXEL_2017_EXPERIENCE"())
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.primaryAdsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.primaryAdsMethod by gettingFirstMethodDeclaratively {
name("isAdsDisabled") name("isAdsDisabled")
definingClass { endsWith("PreferencesHelper;") } definingClass("PreferencesHelper;")
} }

View file

@ -6,6 +6,6 @@ import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patcher.returnType import app.revanced.patcher.returnType
internal val BytecodePatchContext.checkProMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.checkProMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("IPSPurchaseRepository;") } definingClass("IPSPurchaseRepository;")
returnType("Z") returnType("Z")
} }

View file

@ -6,14 +6,14 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.isDeviceBootloaderOpenMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isDeviceBootloaderOpenMethod by gettingFirstMethodDeclaratively {
name("isDeviceBootloaderOpen") name("isDeviceBootloaderOpen")
definingClass { endsWith("/DeviceIntegrityCheckProviderImpl;") } definingClass("/DeviceIntegrityCheckProviderImpl;")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
returnType("Ljava/lang/Object;") returnType("Ljava/lang/Object;")
} }
internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMethodDeclaratively {
name("isDeviceRooted") name("isDeviceRooted")
definingClass { endsWith("/DeviceIntegrityCheckProviderImpl;") } definingClass("/DeviceIntegrityCheckProviderImpl;")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
returnType("Z") returnType("Z")
} }

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.spoofSignatureMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.spoofSignatureMethod by gettingFirstMethodDeclaratively {
name("getPubKey") name("getPubKey")
definingClass { endsWith("/SL2Step1Task;") } definingClass("/SL2Step1Task;")
accessFlags(AccessFlags.PRIVATE) accessFlags(AccessFlags.PRIVATE)
returnType("L") returnType("L")
parameterTypes("L") parameterTypes("L")

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.getLibertyInitMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getLibertyInitMethod by gettingFirstMethodDeclaratively {
name("init") name("init")
definingClass { endsWith("/Liberty;") } definingClass("/Liberty;")
} }

View file

@ -19,10 +19,10 @@ internal val BytecodePatchContext.admobHelperShouldShowAdsMethod by gettingFirst
internal val BytecodePatchContext.filmFragmentShowAdsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.filmFragmentShowAdsMethod by gettingFirstMethodDeclaratively {
name("showAds") name("showAds")
definingClass { endsWith("/FilmFragment;") } definingClass("/FilmFragment;")
} }
internal val BytecodePatchContext.memberExtensionShowAdsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.memberExtensionShowAdsMethod by gettingFirstMethodDeclaratively {
name("showAds") name("showAds")
definingClass { endsWith("/AMemberExtensionKt;") } definingClass("/AMemberExtensionKt;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.getCanChangeAppIconMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getCanChangeAppIconMethod by gettingFirstMethodDeclaratively {
name("getCanChangeAppIcon") name("getCanChangeAppIcon")
definingClass { endsWith("SettingsAppIconFragment;") } definingClass("SettingsAppIconFragment;")
} }

View file

@ -46,7 +46,7 @@ internal val BytecodePatchContext.historyMenuItemOfflineTabMethodMatch by compos
} }
internal val BytecodePatchContext.searchActionViewMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.searchActionViewMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("/SearchActionProvider;") } definingClass("/SearchActionProvider;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("Landroid/view/View;") returnType("Landroid/view/View;")
parameterTypes() parameterTypes()

View file

@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.musicActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.musicActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("/MusicActivity;") } definingClass("/MusicActivity;")
returnType("V") returnType("V")
parameterTypes("Landroid/os/Bundle;") parameterTypes("Landroid/os/Bundle;")
} }

View file

@ -9,7 +9,7 @@ import app.revanced.patcher.returnType
internal val BytecodePatchContext.googleApiActivityMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.googleApiActivityMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("GoogleApiActivity;") } definingClass("GoogleApiActivity;")
returnType("V") returnType("V")
parameterTypes("Landroid/os/Bundle;") parameterTypes("Landroid/os/Bundle;")
} }

View file

@ -10,13 +10,13 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.isPremiumUseCaseImplMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isPremiumUseCaseImplMethod by gettingFirstMethodDeclaratively {
name("doWork") name("doWork")
definingClass { endsWith("IsPremiumUseCaseImpl;") } definingClass("IsPremiumUseCaseImpl;")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
} }
internal val BytecodePatchContext.mainActivityNavigateToNativePremiumUpsellMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.mainActivityNavigateToNativePremiumUpsellMethod by gettingFirstMethodDeclaratively {
name("navigateToNativePremiumUpsell") name("navigateToNativePremiumUpsell")
definingClass { endsWith("MainActivity;") } definingClass("MainActivity;")
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returnType("V") returnType("V")
} }

View file

@ -9,6 +9,6 @@ val sharedExtensionPatch = sharedExtensionPatch(
extensionName = "nothingx", extensionName = "nothingx",
extensionHook { extensionHook {
name("onCreate") name("onCreate")
definingClass { contains("BaseApplication") } definingClass("BaseApplication")
}, },
) )

View file

@ -13,7 +13,7 @@ import app.revanced.patcher.returnType
*/ */
internal val BytecodePatchContext.applicationOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.applicationOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("BaseApplication;") } definingClass("BaseApplication;")
returnType("V") returnType("V")
parameterTypes() parameterTypes()
} }

View file

@ -10,7 +10,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMethodDeclaratively {
name("isDeviceRooted") name("isDeviceRooted")
definingClass { endsWith("/RootChecker;") } definingClass("/RootChecker;")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
returnType("Z") returnType("Z")
} }

View file

@ -12,5 +12,5 @@ internal val BytecodePatchContext.getIsAdSupportedMethod by gettingFirstMethodDe
internal val BytecodePatchContext.requestAudioAdMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.requestAudioAdMethod by gettingFirstMethodDeclaratively {
name("requestAudioAdFromAdSDK") name("requestAudioAdFromAdSDK")
definingClass { endsWith("ContentServiceOpsImpl;") } definingClass("ContentServiceOpsImpl;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.getSkipLimitBehaviorMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getSkipLimitBehaviorMethod by gettingFirstMethodDeclaratively {
name("getSkipLimitBehavior") name("getSkipLimitBehavior")
definingClass { endsWith("UserData;") } definingClass("UserData;")
} }

View file

@ -10,5 +10,5 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.isPlusUnlockedMethod by gettingFirstMethodDeclaratively("genius") { internal val BytecodePatchContext.isPlusUnlockedMethod by gettingFirstMethodDeclaratively("genius") {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("Z") returnType("Z")
definingClass { endsWith("/User;") } definingClass("/User;")
} }

View file

@ -9,7 +9,7 @@ import app.revanced.patcher.returnType
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.shouldShowAdsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.shouldShowAdsMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("AdUtils;") } definingClass("AdUtils;")
name("shouldShowAds") name("shouldShowAds")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("Z") returnType("Z")

View file

@ -9,7 +9,7 @@ import app.revanced.patcher.returnType
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.showReminderMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.showReminderMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("AdsNotify;") } definingClass("AdsNotify;")
name("show") name("show")
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returnType("V") returnType("V")

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.hideCommentAdsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.hideCommentAdsMethod by gettingFirstMethodDeclaratively {
name("invokeSuspend") name("invokeSuspend")
definingClass { contains("LoadAdsCombinedCall") } definingClass("LoadAdsCombinedCall")
} }

View file

@ -9,7 +9,7 @@ import app.revanced.patcher.returnType
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.adPostMethod by gettingFirstMethodDeclaratively("children") { internal val BytecodePatchContext.adPostMethod by gettingFirstMethodDeclaratively("children") {
definingClass { endsWith("Listing;") } definingClass("Listing;")
returnType("V") returnType("V")
} }

View file

@ -11,5 +11,5 @@ internal val BytecodePatchContext.buildUserAgentMethod by gettingFirstMethodDecl
internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively {
name("getClientId") name("getClientId")
definingClass { endsWith("Credentials;") } definingClass("Credentials;")
} }

View file

@ -22,5 +22,5 @@ internal val BytecodePatchContext.detectPiracyMethod by gettingFirstMethodDeclar
Opcode.INVOKE_VIRTUAL, Opcode.INVOKE_VIRTUAL,
Opcode.RETURN_VOID, Opcode.RETURN_VOID,
) )
definingClass { endsWith("ProcessLifeCyleListener;") } definingClass("ProcessLifeCyleListener;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively {
name("getClientId") name("getClientId")
definingClass { endsWith("Credentials;") } definingClass("Credentials;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("MainActivity;") } definingClass("MainActivity;")
} }

View file

@ -8,7 +8,7 @@ import app.revanced.patcher.patch.BytecodePatchContext
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.customImageViewLoadMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.customImageViewLoadMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("CustomImageView;") } definingClass("CustomImageView;")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
parameterTypes("Ljava/lang/String;", "Z", "Z", "I", "I") parameterTypes("Ljava/lang/String;", "Z", "Z", "I", "I")
} }

View file

@ -9,7 +9,7 @@ import app.revanced.patcher.returnType
internal val BytecodePatchContext.disableScreenshotPopupMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.disableScreenshotPopupMethod by gettingFirstMethodDeclaratively {
name("invoke") name("invoke")
definingClass { endsWith($$"$ScreenshotTakenBannerKt$lambda-1$1;") } definingClass("$ScreenshotTakenBannerKt$lambda-1$1;")
returnType("V") returnType("V")
parameterTypes("Landroidx/compose/runtime/", "I") parameterTypes("Landroidx/compose/runtime/", "I")
} }

View file

@ -8,6 +8,6 @@ import app.revanced.patcher.returnType
internal val BytecodePatchContext.hasPremiumIconAccessMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.hasPremiumIconAccessMethod by gettingFirstMethodDeclaratively {
name("isPremiumSubscriber") name("isPremiumSubscriber")
definingClass { endsWith("MyAccount;") } definingClass("MyAccount;")
returnType("Z") returnType("Z")
} }

View file

@ -7,6 +7,6 @@ import app.revanced.patcher.immutableClassDef
import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.shareLinkFormatterMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.shareLinkFormatterMethod by gettingFirstMethodDeclaratively {
definingClass { startsWith("Lcom/reddit/sharing/") } definingClass("Lcom/reddit/sharing/")
custom { immutableClassDef.sourceFile == "UrlUtil.kt" } custom { immutableClassDef.sourceFile == "UrlUtil.kt" }
} }

View file

@ -8,7 +8,7 @@ import app.revanced.patcher.returnType
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.rootDetectionMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.rootDetectionMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("/DeviceIntegrityCheck;") } definingClass("/DeviceIntegrityCheck;")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
returnType("V") returnType("V")
} }

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.canScrollVerticallyMethodMatch by composingFirstMethod { internal val BytecodePatchContext.canScrollVerticallyMethodMatch by composingFirstMethod {
definingClass { endsWith("SwipeRefreshLayout;") } definingClass("SwipeRefreshLayout;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("Z") returnType("Z")
parameterTypes() parameterTypes()

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.lithoFilterInitMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.lithoFilterInitMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("/LithoFilterPatch;") } definingClass("/LithoFilterPatch;")
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR) accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
} }

View file

@ -9,17 +9,17 @@ import com.android.tools.smali.dexlib2.iface.ClassDef
context(_: BytecodePatchContext) context(_: BytecodePatchContext)
internal fun ClassDef.getGetCompressionQualityMethod() = firstMethodDeclaratively { internal fun ClassDef.getGetCompressionQualityMethod() = firstMethodDeclaratively {
name("getCompressionQuality") name("getCompressionQuality")
definingClass { endsWith("/MediaUploadParameters;") } definingClass("/MediaUploadParameters;")
} }
context(_: BytecodePatchContext) context(_: BytecodePatchContext)
internal fun ClassDef.getGetMaxDurationMethod() = firstMethodDeclaratively { internal fun ClassDef.getGetMaxDurationMethod() = firstMethodDeclaratively {
name("getMaxDuration") name("getMaxDuration")
definingClass { endsWith("/MediaUploadParameters;") } definingClass("/MediaUploadParameters;")
} }
context(_: BytecodePatchContext) context(_: BytecodePatchContext)
internal fun ClassDef.getGetMaxSizeMethod() = firstMethodDeclaratively { internal fun ClassDef.getGetMaxSizeMethod() = firstMethodDeclaratively {
name("getMaxSize") name("getMaxSize")
definingClass { endsWith("/MediaUploadParameters;") } definingClass("/MediaUploadParameters;")
} }

View file

@ -6,5 +6,5 @@ import app.revanced.patches.shared.misc.extension.extensionHook
internal val applicationOnCreateHook = extensionHook { internal val applicationOnCreateHook = extensionHook {
name("onCreate") name("onCreate")
definingClass { endsWith("/StravaApplication;") } definingClass("/StravaApplication;")
} }

View file

@ -7,10 +7,10 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.logInGetUsePasswordMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.logInGetUsePasswordMethod by gettingFirstMethodDeclaratively {
name("getUsePassword") name("getUsePassword")
definingClass { endsWith("/RequestOtpLogInNetworkResponse;") } definingClass("/RequestOtpLogInNetworkResponse;")
} }
internal val BytecodePatchContext.emailChangeGetUsePasswordMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.emailChangeGetUsePasswordMethod by gettingFirstMethodDeclaratively {
name("getUsePassword") name("getUsePassword")
definingClass { endsWith("/RequestEmailChangeWithOtpOrPasswordResponse;") } definingClass("/RequestEmailChangeWithOtpOrPasswordResponse;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.getSubscribedMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getSubscribedMethod by gettingFirstMethodDeclaratively {
name("getSubscribed") name("getSubscribed")
definingClass { endsWith("/SubscriptionDetailResponse;") } definingClass("/SubscriptionDetailResponse;")
} }

View file

@ -9,6 +9,6 @@ import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.getModulesMethodMatch by composingFirstMethod { internal val BytecodePatchContext.getModulesMethodMatch by composingFirstMethod {
name("getModules") name("getModules")
definingClass { endsWith("/GenericLayoutEntry;") } definingClass("/GenericLayoutEntry;")
opcodes(Opcode.IGET_OBJECT) opcodes(Opcode.IGET_OBJECT)
} }

View file

@ -7,10 +7,10 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.checkLockedThemesMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.checkLockedThemesMethod by gettingFirstMethodDeclaratively {
name("isLockedTheme") name("isLockedTheme")
definingClass { endsWith("Theme;") } definingClass("Theme;")
} }
internal val BytecodePatchContext.setThemeMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.setThemeMethod by gettingFirstMethodDeclaratively {
name("lambda\$updateUserBtn\$1") name("lambda\$updateUserBtn\$1")
definingClass { endsWith("ThemePreviewActivity;") } definingClass("ThemePreviewActivity;")
} }

View file

@ -8,5 +8,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.onClearDisplayEventMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.onClearDisplayEventMethod by gettingFirstMethodDeclaratively {
// Internally the feature is called "Clear mode". // Internally the feature is called "Clear mode".
name("onClearModeEvent") name("onClearModeEvent")
definingClass { endsWith("/ClearModePanelComponent;") } definingClass("/ClearModePanelComponent;")
} }

View file

@ -11,19 +11,19 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.aclCommonShareMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.aclCommonShareMethod by gettingFirstMethodDeclaratively {
name("getCode") name("getCode")
definingClass { endsWith("/ACLCommonShare;") } definingClass("/ACLCommonShare;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("I") returnType("I")
} }
internal val BytecodePatchContext.aclCommonShare2Method by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.aclCommonShare2Method by gettingFirstMethodDeclaratively {
name("getShowType") name("getShowType")
definingClass { endsWith("/ACLCommonShare;") } definingClass("/ACLCommonShare;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("I") returnType("I")
} }
internal val BytecodePatchContext.aclCommonShare3Method by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.aclCommonShare3Method by gettingFirstMethodDeclaratively {
name("getTranscode") name("getTranscode")
definingClass { endsWith("/ACLCommonShare;") } definingClass("/ACLCommonShare;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("I") returnType("I")
} }

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.getSpeedMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getSpeedMethod by gettingFirstMethodDeclaratively {
name("onFeedSpeedSelectedEvent") name("onFeedSpeedSelectedEvent")
definingClass { endsWith("/BaseListFragmentPanel;") } definingClass("/BaseListFragmentPanel;")
} }
internal val BytecodePatchContext.setSpeedMethod by gettingFirstMethodDeclaratively("enterFrom") { internal val BytecodePatchContext.setSpeedMethod by gettingFirstMethodDeclaratively("enterFrom") {

View file

@ -5,10 +5,10 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.mandatoryLoginServiceMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.mandatoryLoginServiceMethod by gettingFirstMethodDeclaratively {
name("enableForcedLogin") name("enableForcedLogin")
definingClass { endsWith("/MandatoryLoginService;") } definingClass("/MandatoryLoginService;")
} }
internal val BytecodePatchContext.mandatoryLoginService2Method by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.mandatoryLoginService2Method by gettingFirstMethodDeclaratively {
name("shouldShowForcedLogin") name("shouldShowForcedLogin")
definingClass { endsWith("/MandatoryLoginService;") } definingClass("/MandatoryLoginService;")
} }

View file

@ -5,12 +5,12 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.addSettingsEntryMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.addSettingsEntryMethod by gettingFirstMethodDeclaratively {
name("initUnitManger") name("initUnitManger")
definingClass { endsWith("/SettingNewVersionFragment;") } definingClass("/SettingNewVersionFragment;")
} }
internal val BytecodePatchContext.adPersonalizationActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.adPersonalizationActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("/AdPersonalizationActivity;") } definingClass("/AdPersonalizationActivity;")
} }
internal val BytecodePatchContext.settingsEntryMethod by gettingFirstImmutableMethodDeclaratively( internal val BytecodePatchContext.settingsEntryMethod by gettingFirstImmutableMethodDeclaratively(

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.getEnterFromMethod by gettingFirstImmutableMethodDeclaratively { internal val BytecodePatchContext.getEnterFromMethod by gettingFirstImmutableMethodDeclaratively {
definingClass { endsWith("/BaseListFragmentPanel;") } definingClass("/BaseListFragmentPanel;")
returnType("Ljava/lang/String;") returnType("Ljava/lang/String;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
parameterTypes("Z") parameterTypes("Z")
@ -22,5 +22,5 @@ internal val BytecodePatchContext.getEnterFromMethod by gettingFirstImmutableMet
} }
internal val BytecodePatchContext.onRenderFirstFrameMethod by gettingFirstMethodDeclaratively("method_enable_viewpager_preload_duration") { internal val BytecodePatchContext.onRenderFirstFrameMethod by gettingFirstMethodDeclaratively("method_enable_viewpager_preload_duration") {
definingClass { endsWith("/BaseListFragmentPanel;") } definingClass("/BaseListFragmentPanel;")
} }

View file

@ -7,10 +7,10 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.isVIPEPMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isVIPEPMethod by gettingFirstMethodDeclaratively {
name("isVIPEP") name("isVIPEP")
definingClass { endsWith("RemoteUser;") } definingClass("RemoteUser;")
} }
internal val BytecodePatchContext.isVIPMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isVIPMethod by gettingFirstMethodDeclaratively {
name("isVIP") name("isVIP")
definingClass { endsWith("RemoteUser;") } definingClass("RemoteUser;")
} }

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.brightnessMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.brightnessMethod by gettingFirstMethodDeclaratively {
name("run") name("run")
definingClass { contains("/ScreenPlugin$") } definingClass("/ScreenPlugin$")
accessFlags(AccessFlags.PUBLIC) accessFlags(AccessFlags.PUBLIC)
returnType("V") returnType("V")
parameterTypes() parameterTypes()

View file

@ -8,7 +8,7 @@ import com.android.tools.smali.dexlib2.Opcode
// This is the constructor of the PostsResponse class. // This is the constructor of the PostsResponse class.
// The same applies here as with the TimelineConstructorMethod. // The same applies here as with the TimelineConstructorMethod.
internal val BytecodePatchContext.postsResponseConstructorMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.postsResponseConstructorMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("/PostsResponse;") } definingClass("/PostsResponse;")
accessFlags(AccessFlags.CONSTRUCTOR, AccessFlags.PUBLIC) accessFlags(AccessFlags.CONSTRUCTOR, AccessFlags.PUBLIC)
custom { parameters.size == 4 } custom { parameters.size == 4 }
} }
@ -17,7 +17,7 @@ internal val BytecodePatchContext.postsResponseConstructorMethod by gettingFirst
// It receives the List<TimelineObject> as an argument with a @Json annotation, so this should be the first time // It receives the List<TimelineObject> as an argument with a @Json annotation, so this should be the first time
// that the List<TimelineObject> is exposed in non-library code. // that the List<TimelineObject> is exposed in non-library code.
internal val BytecodePatchContext.timelineConstructorMethod by gettingFirstMethodDeclaratively("timelineObjectsList") { internal val BytecodePatchContext.timelineConstructorMethod by gettingFirstMethodDeclaratively("timelineObjectsList") {
definingClass { endsWith("/Timeline;") } definingClass("/Timeline;")
custom { parameters[0].type == "Ljava/util/List;" } custom { parameters[0].type == "Ljava/util/List;" }
} }
@ -25,7 +25,7 @@ internal val BytecodePatchContext.timelineConstructorMethod by gettingFirstMetho
// Looking for // Looking for
// if ("BLOCKED_OBJECT_DUMMY".equals(elementType)) iterator.remove(); // if ("BLOCKED_OBJECT_DUMMY".equals(elementType)) iterator.remove();
internal val BytecodePatchContext.timelineFilterExtensionMethodMatch by composingFirstMethod("BLOCKED_OBJECT_DUMMY") { internal val BytecodePatchContext.timelineFilterExtensionMethodMatch by composingFirstMethod("BLOCKED_OBJECT_DUMMY") {
definingClass { endsWith("/TimelineFilterPatch;") } definingClass("/TimelineFilterPatch;")
opcodes( opcodes(
Opcode.CONST_STRING, // "BLOCKED_OBJECT_DUMMY" Opcode.CONST_STRING, // "BLOCKED_OBJECT_DUMMY"
Opcode.INVOKE_VIRTUAL, // HashSet.add(^) Opcode.INVOKE_VIRTUAL, // HashSet.add(^)

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.audioAdsPresenterPlayMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.audioAdsPresenterPlayMethod by gettingFirstMethodDeclaratively {
name("playAd") name("playAd")
definingClass { endsWith("AudioAdsPlayerPresenter;") } definingClass("AudioAdsPlayerPresenter;")
} }

View file

@ -5,21 +5,21 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.checkAdEligibilityLambdaMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.checkAdEligibilityLambdaMethod by gettingFirstMethodDeclaratively {
name("shouldRequestAd") name("shouldRequestAd")
definingClass { endsWith("/AdEligibilityFetcher;") } definingClass("/AdEligibilityFetcher;")
returnType("Lio/reactivex/Single;") returnType("Lio/reactivex/Single;")
parameterTypes("L") parameterTypes("L")
} }
internal val BytecodePatchContext.contentConfigShowAdsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.contentConfigShowAdsMethod by gettingFirstMethodDeclaratively {
name("getShowAds") name("getShowAds")
definingClass { endsWith("/ContentConfigData;") } definingClass("/ContentConfigData;")
returnType("Z") returnType("Z")
parameterTypes() parameterTypes()
} }
internal val BytecodePatchContext.getReadyToShowAdMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.getReadyToShowAdMethod by gettingFirstMethodDeclaratively {
name("getReadyToShowAdOrAbort") name("getReadyToShowAdOrAbort")
definingClass { endsWith("/StreamDisplayAdsPresenter;") } definingClass("/StreamDisplayAdsPresenter;")
returnType("Ltv/twitch/android/core/mvp/presenter/StateAndAction;") returnType("Ltv/twitch/android/core/mvp/presenter/StateAndAction;")
parameterTypes("L", "L") parameterTypes("L", "L")
} }

View file

@ -9,15 +9,15 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.chatUtilCreateDeletedSpanMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.chatUtilCreateDeletedSpanMethod by gettingFirstMethodDeclaratively {
name("createDeletedSpanFromChatMessageSpan") name("createDeletedSpanFromChatMessageSpan")
definingClass { endsWith("ChatUtil\$Companion;") } definingClass("ChatUtil\$Companion;")
} }
internal val BytecodePatchContext.deletedMessageClickableSpanCtorMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.deletedMessageClickableSpanCtorMethod by gettingFirstMethodDeclaratively {
definingClass { endsWith("DeletedMessageClickableSpan;") } definingClass("DeletedMessageClickableSpan;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
} }
internal val BytecodePatchContext.setHasModAccessMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.setHasModAccessMethod by gettingFirstMethodDeclaratively {
name("setHasModAccess") name("setHasModAccess")
definingClass { endsWith("DeletedMessageClickableSpan;") } definingClass("DeletedMessageClickableSpan;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.communityPointsButtonViewDelegateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.communityPointsButtonViewDelegateMethod by gettingFirstMethodDeclaratively {
name("showClaimAvailable") name("showClaimAvailable")
definingClass { endsWith("CommunityPointsButtonViewDelegate;") } definingClass("CommunityPointsButtonViewDelegate;")
} }

View file

@ -7,15 +7,15 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.isDebugConfigEnabledMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isDebugConfigEnabledMethod by gettingFirstMethodDeclaratively {
name("isDebugConfigEnabled") name("isDebugConfigEnabled")
definingClass { endsWith("/BuildConfigUtil;") } definingClass("/BuildConfigUtil;")
} }
internal val BytecodePatchContext.isOmVerificationEnabledMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.isOmVerificationEnabledMethod by gettingFirstMethodDeclaratively {
name("isOmVerificationEnabled") name("isOmVerificationEnabled")
definingClass { endsWith("/BuildConfigUtil;") } definingClass("/BuildConfigUtil;")
} }
internal val BytecodePatchContext.shouldShowDebugOptionsMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.shouldShowDebugOptionsMethod by gettingFirstMethodDeclaratively {
name("shouldShowDebugOptions") name("shouldShowDebugOptions")
definingClass { endsWith("/BuildConfigUtil;") } definingClass("/BuildConfigUtil;")
} }

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.menuGroupsOnClickMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.menuGroupsOnClickMethod by gettingFirstMethodDeclaratively {
name { contains("render") } name { contains("render") }
definingClass { endsWith("/SettingsMenuViewDelegate;") } definingClass("/SettingsMenuViewDelegate;")
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC, AccessFlags.FINAL) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC, AccessFlags.FINAL)
returnType("V") returnType("V")
parameterTypes("L", "L", "L") parameterTypes("L", "L", "L")
@ -19,10 +19,10 @@ internal val BytecodePatchContext.menuGroupsUpdatedMethod by gettingFirstMethodD
internal val BytecodePatchContext.settingsActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.settingsActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("/SettingsActivity;") } definingClass("/SettingsActivity;")
} }
internal val BytecodePatchContext.settingsMenuItemEnumMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.settingsMenuItemEnumMethod by gettingFirstMethodDeclaratively {
name("<clinit>") name("<clinit>")
definingClass { endsWith("/SettingsMenuItem;") } definingClass("/SettingsMenuItem;")
} }

View file

@ -7,5 +7,5 @@ import app.revanced.patcher.patch.BytecodePatchContext
internal val BytecodePatchContext.promoCodeUnlockMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.promoCodeUnlockMethod by gettingFirstMethodDeclaratively {
name("isValid") name("isValid")
definingClass { endsWith("PromoTokenVerification;") } definingClass("PromoTokenVerification;")
} }

View file

@ -49,7 +49,7 @@ internal val BytecodePatchContext.disableFastForwardLegacyMethodMatch by composi
} }
internal val BytecodePatchContext.disableFastForwardGestureMethodMatch by composingFirstMethod { internal val BytecodePatchContext.disableFastForwardGestureMethodMatch by composingFirstMethod {
definingClass { endsWith("/NextGenWatchLayout;") } definingClass("/NextGenWatchLayout;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("Z") returnType("Z")
parameterTypes() parameterTypes()

View file

@ -21,7 +21,7 @@ internal val BytecodePatchContext.storyboardRendererDecoderRecommendedLevelMetho
} }
internal val BytecodePatchContext.subtitleTrackMethod by gettingFirstMethodDeclaratively("DISABLE_CAPTIONS_OPTION") { internal val BytecodePatchContext.subtitleTrackMethod by gettingFirstMethodDeclaratively("DISABLE_CAPTIONS_OPTION") {
definingClass { endsWith("/SubtitleTrack;") } definingClass("/SubtitleTrack;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("Z") returnType("Z")
parameterTypes() parameterTypes()

View file

@ -7,7 +7,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.mediaRouteButtonMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.mediaRouteButtonMethod by gettingFirstMethodDeclaratively {
name("setVisibility") name("setVisibility")
definingClass { endsWith("/MediaRouteButton;") } definingClass("/MediaRouteButton;")
parameterTypes("I") parameterTypes("I")
} }

View file

@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags
internal val BytecodePatchContext.setFullScreenBackgroundColorMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.setFullScreenBackgroundColorMethod by gettingFirstMethodDeclaratively {
name("onLayout") name("onLayout")
definingClass { endsWith("/YouTubePlayerViewNotForReflection;") } definingClass("/YouTubePlayerViewNotForReflection;")
returnType("V") returnType("V")
accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL) accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL)
parameterTypes("Z", "I", "I", "I", "I") parameterTypes("Z", "I", "I", "I", "I")

View file

@ -21,7 +21,7 @@ val playerTypeHookPatch = bytecodePatch(
apply { apply {
firstMethodDeclaratively { firstMethodDeclaratively {
definingClass { endsWith("/YouTubePlayerOverlaysLayout;") } definingClass("/YouTubePlayerOverlaysLayout;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("V") returnType("V")
parameterTypes(playerTypeEnumMethod.immutableClassDef.type) parameterTypes(playerTypeEnumMethod.immutableClassDef.type)

View file

@ -8,7 +8,7 @@ import com.android.tools.smali.dexlib2.Opcode
internal val BytecodePatchContext.licenseActivityOnCreateMethod by gettingFirstMethodDeclaratively { internal val BytecodePatchContext.licenseActivityOnCreateMethod by gettingFirstMethodDeclaratively {
name("onCreate") name("onCreate")
definingClass { endsWith("/LicenseActivity;") } definingClass("/LicenseActivity;")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returnType("V") returnType("V")
parameterTypes("Landroid/os/Bundle;") parameterTypes("Landroid/os/Bundle;")