今天实践了一下android应用程序中的广告的去除及再次植入,总结一下,以备日后查阅。
其实这个并没啥技术含量,也不是什么秘密,关键在于实践。于是乎,今天我找了有米(youmi)广告sdk做实验。其实还有一堆广告商,android就是这点乱,广告商成群,应用下载平台也很多,先拿其中一家的练练手吧。
youmi sdk 3.07链接: http://wiki.youmi.net/Youmi_Android_Banner_Version_3.07
sdk用户手册说的很清楚,而且操作也很简单,两步可以搞定。接下来我会用一个hello world来做个示例。
1. 在AndroidManifest.xml中加入权限设置及activity 和receiver ;
下面需要加入的代码。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission> --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"> </uses-permission> <activity android:configChanges="keyboard|keyboardHidden|orientation" android:name="net.youmi.android.AdActivity" /> <meta-data android:name="YOUMI_CHANNEL" android:value="0" > </meta-data> <!-- 广告效果的接受器 --> <receiver android:name="net.youmi.android.YoumiReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED"/> <action android:name="android.intent.action.PACKAGE_INSTALL"/> <data android:scheme="package"/> </intent-filter> </receiver>
2. 初始化与广告相关的两个类AdManager及Adview;AdManager一般在apk的第一个activity的onCreate()中初始化,估计也就是初始化youmi AD。Adview是在需要显示广告条的activity中初始化,具体实例化一个广告条。
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); // 初始化Admanager AdManager.init(this,"537ef88653a2993c", "b9e10bcfe994a9fb", 30, false); LinearLayout layout=new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); layout.setBackgroundResource(R.drawable.bg); // 初始化AdView AdView adView = new AdView(this); LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); layout.addView(adView, params); }
知道了如何使用广告sdk,那么去除第三方app的广告条也就不是什么难事了。
接下来通过APKDB反编译已经含有广告条的helloworld,
1. 删除AndroidManifest.xml中与广告相关的activity, meta-data及receiver.
2. 删除广告包/net/youmi
3. 在源码中删除与AdManager及Adview相关的代码
这里只是一个实例,提供了去除广告的方法,你可以在android市场上下载一个带广告的apk尝试一下吧,屡试不爽。
如果广告平台提供native SDK的话,会大大增加去除广告的难度,要知道直接修改so还是要花蛮大代价的。