Android 去除广告

目录

关闭Google全屏广告

隐藏Google横幅广告

去除Google广告

去除Facebook广告

去除UnityAds广告

去除MoPub广告

去除穿山甲平台广告

去除Start.io广告

去除Stack Appodeal广告

去除Chartboost广告

去除Applovin广告

去除Ogury广告

去除iron广告

 去除Amazon广告

 去除inmobi广告

去除Smaato广告

去除Tapjoy广告

去除AdColony广告

去除HyprMX广告

去除OneSignal广告

去除appnext广告 

去除TradPlus广告

去除yandex广告 

去除Vungle广告

去除Yodo1Mas广告

去除solodroid广告


关闭Google全屏广告

com.google.android.gms.ads.AdActivity

.method protected onCreate(Landroid/os/Bundle;)V
    .locals 1

    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

    invoke-virtual {p0}, Landroid/app/Activity;->finish()V
 
    return-void

.end method

隐藏Google横幅广告

com.google.android.gms.ads.BaseAdView

The ad size can only be set once on AdView

The ad unit ID can only be set once on AdView.

.method public onLayout(ZIIII)V
    .locals 2

    const/4 p1, 0x0

    invoke-virtual {p0, p1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;

    move-result-object p1
    
    if-eqz p1, :cond_0

    invoke-virtual {p1}, Landroid/view/View;->getVisibility()I

    move-result v0

    const/16 v1, 0x8

    if-eq v0, v1, :cond_0

    const/16 v1, 0x8
    
    invoke-virtual {p1, v1}, Landroid/view/View;->setVisibility(I)V

    invoke-virtual {p1}, Landroid/view/View;->getMeasuredWidth()I

    move-result v0

    invoke-virtual {p1}, Landroid/view/View;->getMeasuredHeight()I

    move-result v1

    sub-int/2addr p4, p2

    sub-int/2addr p4, v0

    div-int/lit8 p4, p4, 0x2

    sub-int/2addr p5, p3

    sub-int/2addr p5, v1

    div-int/lit8 p5, p5, 0x2

    add-int/2addr v0, p4

    add-int/2addr v1, p5

    invoke-virtual {p1, p4, p5, v0, v1}, Landroid/view/View;->layout(IIII)V

    :cond_0
    return-void
.end method

Google广告

googleAdViewId为ad_container

首先在AndroidManifest.xml文件内搜索ads关键字,将关于com.google.android.gms.ads的标签全部删除

去除后直接打包运行会崩溃

全局搜索

You must have the following declaration within the <application> element:     <meta-data android:name=\"com.google.android.gms.version\" android:value=\"@integer/google_play_services_version\" />

You must have the following declaration with

搜索结果可能会出现多个

找到方法结尾为 (Landroid/content/Context;I)I 的方法

或IllegalStateException异常

定位该方法

使其返回0

 示例

com.google.android.gms.common.GooglePlayServicesUtilLight

.method public static isGooglePlayServicesAvailable(Landroid/content/Context;I)I
    .locals 3
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation
   
    const/4 v0, 0x0
    
    return v0
.end method

 或定位

com.google.android.gms.ads.MobileAds

 清除其中

initialize 

 googleNativeAD占位移除

admob_appopen
com.google.android.gms.ads.appopen.AppOpenAd 
public static void load(final Context context, final String str, final AdRequest adRequest, final int i, final AppOpenAdLoadCallback appOpenAdLoadCallback) {
        Preconditions.checkNotNull(context, "Context cannot be null.");
        Preconditions.checkNotNull(str, "adUnitId cannot be null.");
        Preconditions.checkNotNull(adRequest, "AdRequest cannot be null.");
        Preconditions.checkMainThread("#008 Must be called on the main UI thread.");
        zzbhz.zzc(context);
        if (((Boolean) zzbjn.zzd.zze()).booleanValue()) {
            if (((Boolean) zzay.zzc().zzb(zzbhz.zziv)).booleanValue()) {
                zzcex.zzb.execute(new Runnable() { // from class: com.google.android.gms.ads.appopen.zzb
                    @Override // java.lang.Runnable
                    public final void run() {
                        Context context2 = context;
                        String str2 = str;
                        AdRequest adRequest2 = adRequest;
                        try {
                            new zzbco(context2, str2, adRequest2.zza(), i, appOpenAdLoadCallback).zza();
                        } catch (IllegalStateException e) {
                            zzbyy.zza(context2).zzd(e, "AppOpenAd.load");
                        }
                    }
                });
                return;
            }
        }
        new zzbco(context, str, adRequest.zza(), i, appOpenAdLoadCallback).zza();
    }

admob_banner 

com.google.android.gms.ads.BaseAdView
public void setAdUnitId(String str) {
        this.zza.zzu(str);
    }

public final void zzu(String str) {
        if (this.zzl == null) {
            this.zzl = str;
            return;
        }
        throw new IllegalStateException("The ad unit ID can only be set once on AdView.");
    }
public void loadAd(final AdRequest adRequest) {
        Preconditions.checkMainThread("#008 Must be called on the main UI thread.");
        zzbhz.zzc(getContext());
        if (((Boolean) zzbjn.zze.zze()).booleanValue()) {
            if (((Boolean) zzay.zzc().zzb(zzbhz.zziv)).booleanValue()) {
                zzcex.zzb.execute(new Runnable() { // from class: com.google.android.gms.ads.zzc
                    @Override // java.lang.Runnable
                    public final void run() {
                        BaseAdView baseAdView = BaseAdView.this;
                        try {
                            baseAdView.zza.zzm(adRequest.zza());
                        } catch (IllegalStateException e) {
                            zzbyy.zza(baseAdView.getContext()).zzd(e, "BaseAdView.loadAd");
                        }
                    }
                });
                return;
            }
        }
        this.zza.zzm(adRequest.zza());
    }

admob_inter

com.google.android.gms.ads.interstitial.InterstitialAd
public static void load(final Context context, final String str, final AdRequest adRequest, final InterstitialAdLoadCallback interstitialAdLoadCallback) {
        Preconditions.checkNotNull(context, "Context cannot be null.");
        Preconditions.checkNotNull(str, "AdUnitId cannot be null.");
        Preconditions.checkNotNull(adRequest, "AdRequest cannot be null.");
        Preconditions.checkNotNull(interstitialAdLoadCallback, "LoadCallback cannot be null.");
        Preconditions.checkMainThread("#008 Must be called on the main UI thread.");
        zzbhz.zzc(context);
        if (((Boolean) zzbjn.zzf.zze()).booleanValue()) {
            if (((Boolean) zzay.zzc().zzb(zzbhz.zziv)).booleanValue()) {
                zzcex.zzb.execute(new Runnable() { // from class: com.google.android.gms.ads.interstitial.zza
                    @Override // java.lang.Runnable
                    public final void run() {
                        Context context2 = context;
                        String str2 = str;
                        AdRequest adRequest2 = adRequest;
                        try {
                            new zzbrc(context2, str2).zza(adRequest2.zza(), interstitialAdLoadCallback);
                        } catch (IllegalStateException e) {
                            zzbyy.zza(context2).zzd(e, "InterstitialAd.load");
                        }
                    }
                });
                return;
            }
        }
        new zzbrc(context, str).zza(adRequest.zza(), interstitialAdLoadCallback);
    }

admob_native

com.google.android.gms.ads.AdLoader.Builder
public Builder(Context context, String str) {
            zzbo zzc = zzaw.zza().zzc(context, str, new zzbtx());
            this.zza = (Context) Preconditions.checkNotNull(context, "context cannot be null");
            this.zzb = zzc;
        }

com.google.android.gms.ads.AdLoader
private final void zzb(final zzdr zzdrVar) {
        zzbhz.zzc(this.zzb);
        if (((Boolean) zzbjn.zzc.zze()).booleanValue()) {
            if (((Boolean) zzay.zzc().zzb(zzbhz.zziv)).booleanValue()) {
                zzcex.zzb.execute(new Runnable() { // from class: com.google.android.gms.ads.zza
                    @Override // java.lang.Runnable
                    public final void run() {
                        AdLoader.this.zza(zzdrVar);
                    }
                });
                return;
            }
        }
        try {
            this.zzc.zzg(this.zza.zza(this.zzb, zzdrVar));
        } catch (RemoteException e) {
            zzcfi.zzh("Failed to load ad.", e);
        }
    }

去除Facebook广告

搜索

You must call AudienceNetworkAds.buildInitSettings(Context).initialize() before you can use Audience Network SDK.

 定位其中

initialize  

去除UnityAds广告

定位

com.unity3d.ads.UnityAds

文件

清空其中的

initialize;load;show

方法使其无效即可

或定位

com.unity3d.services.UnityServices 

文件

清空其中

initialize 

方法使其无效即可 

去除MoPub广告

定位

com.mopub.common.MoPub

文件

清空其中

initializeSdk

方法

去除穿山甲平台广告

定位

com.bytedance.sdk.openadsdk.TTAdSdk

文件

清空其中

init

方法

去除Start.io广告

全局搜索

inAppPurchaseAmount

或定位

com.startapp.sdk.adsbase.StartAppSDK

com.startapp.android.publish.adsCommon.StartAppSDK

文件

清空其中的

init

方法

去除Stack Appodeal广告

定位

com.appodeal.ads.Appodeal

 文件

清空其中的

initialize

 方法

去除Chartboost广告

定位

com.chartboost.sdk.Chartboost

 文件

清空其中

startWithAppId

方法

去除Applovin广告

定位

com.applovin.sdk.AppLovinSdk

文件

清空其中

initializeSdk

方法

全局搜索

Unable to find AppLovin SDK key. Please add  meta-data android:name=\"applovin.sdk.key\" android:value=\"YOUR_SDK_KEY_HERE\" into AndroidManifest.xml.

 

清空其中方法

Manifest文件内搜索 

<meta-data android:name="applovin.sdk.key"

 将其删除

去除Ogury广告

全局搜索

Presage

或定位

io.presage.Presage.start

清空其方法

  

io.presage.common.PresageSdk.init

去除iron广告

全局搜索

Lcom/ironsource/mediationsdk/IronSource;

.field public static final DataSource_MOPUB:Ljava/lang/String; = "MoPub"

init() must be called before loadInterstitial()

定位清空方法其中

public synchronized void init(Activity 

 

public varargs declared-synchronized init(Landroid/app/Activity;

 去除Amazon广告

定位

com.amazon.device.ads

 清空其中

setAppKey

 

 去除inmobi广告

定位

com.inmobi.sdk

或搜索

com.inmobi.rendering.InMobiAdActivity

清空其中

init

去除Smaato广告

定位

com.smaato.sdk.core.SmaatoSdk

或搜索

Parameter publisherId cannot be empty for SmaatoSdk::init

清空其中

init

去除Tapjoy广告

定位

com.tapjoy.Tapjoy

修改其中

connect

去除AdColony广告

定位

Cannot configure AdColony; configuration mechanism requires 5

Ignoring call to AdColony.getZone() as AdColony has not yet been 

com.adcolony.sdk.AdColony

修改其中

configure 

 

 

去除HyprMX广告

定位

com.hyprmx.android.sdk.initialization.InitializationController

"const HYPRInitializationController = new InitializationController(\""

\"); HYPRInitializationController.initialize(\'

HYPRInitializationController.javascriptUpgradeFailed(\ 

清空其中

initialize

方法

去除OneSignal广告

定位

com.onesignal.OneSignal

 onesignal_app_id

OneSignal SDK initialization delayed, user privacy consent is set to required for this application.
Starting OneSignal initialization

清空其中

init

方法

 

去除appnext广告 

定位

com.appnext.base.Appnext

 Cannot init Appnext with null context

清空其中

init

 方法

 

去除TradPlus广告

定位

com.tradplus.ads.base.GlobalTradPlus

 GlobalTradPlus getLocalParam coppa:

清空其中

initTradPlusSdk

com.tradplus.ads.mobileads.TradPlus

 facebook,admob and china plugin can not be together

com.tradplus.china.api.TPChinaSDKHandler

GDPR level setting error!!! Level must be PERSONALIZED or NONPERSONALIZED.

setGDPRDataCollection: context should not be null

清空其中

 initSDK

 

  

去除yandex广告 

定位

com.yandex.mobile.ads.common.MobileAds

清空其中

initialize 

 

去除Vungle广告

定位

com.vungle.warren.Vungle

清空其中

 init

 

去除Yodo1Mas广告

定位

com.yodo1.mas.Yodo1Mas 

清空其中

init

 

去除solodroid广告

定位
 is selected as Primary Ads

com.solodroid.ads.sdk.format.Initialize

  清空其中

initAds

initBackupAds

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android漫画app源码指的是一个可以阅读漫画和漫画书的Android应用程序的源代码。这个应用程序可以使用户在手机和平板电脑上方便地阅读各种漫画和漫画书,可视化阅读体验更佳。使用者可以通过app进行虚拟购买、订阅、收藏,还可以对阅读过程进行个性化设置、评论和分享,提高用户的参与体验。 在开发这个应用程序时,需要依靠Android开发平台,并使用Java语言等相关技术。一般需要考虑到应用程序的用户体验、数据安全、流畅性等问题。在源码中,开发者将包含必要的组件和库来实现这些功能。如果需要进行代码的修改和扩展,开发者需要对应用程序的架构和代码的实现细节有深入了解。 总之,Android漫画app源码的开发需要有经验丰富的开发者,理解漫画市场以及用户习惯,能够优化用户体验,并且具有对漫画阅读技术的深入理解。同时,源码的开发需要对技术细节有精确掌握,能够快速定位和解决程序中的问题。这样,才能够开发出流畅、安全和易用的漫画app。 ### 回答2: Android漫画App源码是用于构建Android平台上的漫画阅读应用程序的代码。它包含了漫画App的主要功能和界面设计,可以让用户浏览、搜索、阅读和收藏各种漫画作品。 通常,漫画App源码会包括以下几个主要模块: 1. 用户界面:包括主屏幕、漫画列表、漫画详情、搜索框等常见界面元素,通过这些界面用户可以浏览、查找和打开漫画。 2. 数据管理:包括获取漫画信息、更新漫画列表、保存用户书签等功能。它会与漫画网站的API进行交互,请求数据并将其展示在用户界面上。 3. 阅读器:用于解析和展示漫画页面的工具。它会根据用户在漫画App界面上的操作,加载并显示相应的漫画画面。 4. 用户管理:包括用户注册、登录、个人资料等功能。用户可以通过注册登录来同步他们的阅读进度、收藏等数据。 5. 设置选项:让用户自定义应用程序的参数,例如屏幕亮度、字体大小、阅读模式等。 对于一个漫画App源码,开发者可以根据自己的需求进行相应的定制和修改。他们可以添加新的功能、优化性能、改进界面等。此外,他们还可以进行UI主题定制,使App具有更好的用户体验。 总的来说,Android漫画App源码提供了一套基本的功能和界面设计,省去了开发者从零开始的工作。通过修改和优化源码,开发者可以快速构建自己的漫画App,并在Android平台上为用户提供完整的漫画阅读体验。 ### 回答3: Android漫画App源码是一个用于开发漫画阅读应用的代码库,可用于创建类似于在线漫画阅读平台的应用程序。 这个源码通常包含了一些基本的功能和特性,例如漫画的分类浏览、搜索、收藏、观看历史记录和评论等功能。它还可能包含一些高级特性,如离线下载、推荐系统和用户个性化设置等。 在开发Android漫画App时,开发者可以使用这个源码作为基础框架,根据自己的需求和想法进行二次开发和定制。他们可以根据自己的喜好选择合适的设计风格和布局来创建应用程序界面,并可以使用源码中提供的API来获取漫画数据并展示给用户。 为了完善这个源码,开发者可能需要对用户界面进行优化,提高其易用性和吸引力。他们还可以添加一些额外的功能和扩展,如利用社交媒体集成实现用户之间的互动,或者使用广告集成来获得收入。 通过使用这个源码,开发者可以省去一些重复的工作,快速搭建一个功能相对完整的漫画阅读应用程序。然后,他们可以根据自己的业务需求进行进一步的开发和改进,以提供更好的用户体验和增加应用价值。 尽管源码可以给开发者提供一个好的起点,但在实际应用中,他们还需要根据自己的实际情况对代码进行适当的修改和调整。这样才能实现一个独特且符合用户需求的漫画阅读应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值