用到工具:
apktool
APKSign
find -name "*.*" | xargs -n50 grep AdView
找到一堆,我们通过我们的activity可以锁定下是在哪个界面,这里我们只修改第一个界面RootExplorer.smali 这个
我们看到一句
invoke-virtual {v0, v1}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;)V
这个就是加入的地方,我们不去改这个,这个怕代码会出现空指针问题,因此我的修改方案是将这个隐藏掉。
这里我们看到一句:
invoke-virtual {v0, v1}, Lcom/google/android/gms/ads/AdView;->setAdListener(Lcom/google/android/gms/ads/AdListener;)V
发现上面语句为
iget-object v0, p0, Lcom/speedsoftware/rootexplorer/RootExplorer;->F:Lcom/google/android/gms/ads/AdView;
new-instance v1, Lcom/speedsoftware/rootexplorer/fn;
invoke-direct {v1, p0}, Lcom/speedsoftware/rootexplorer/fn;-><init>(Lcom/speedsoftware/rootexplorer/RootExplorer;)V
我们发现参数v1是fn类,因此我们找下这个类
fn.smail文件,搜索setVisibility
发现代码:
.method public final onAdLoaded()V
const/4 v1, 0 //修改为 const/16 v1, 0x8 即可 这里0为隐藏,8为显示,这个是在源码的view.java里面找到。
invoke-virtual {v0, v1}, Lcom/google/android/gms/ads/AdView;->setVisibility(I)V
.end method
到此我们简单的一个ad修改即可完成。