-
-
[转帖]反编译实现 百度地图 Android版 隐藏logo
-
发表于: 2013-4-22 16:14 5972
-
转自CSDN:http://blog.csdn.net/zhouyuanjing/article/details/8685983
看到论坛有人基于某种目的想隐藏百度地图的logo,百度肯定不想看到的,版权问题!!!
由于兴趣就想试试,结果是可以隐藏logo的,下面把它分享给大家。
百度地图Android SDK 2.0.0版本之前
MapView有个子View(IamgeView)用于显示logo,用 Hierarchy Viewer 查看如下:
这样很容易去掉logo,代码如下:
mMapView.removeViewAt(1);
对比效果图如下:
百度地图Android SDK 2.0.0版本之后
MapView的地图显示及logo的显示都是 继承GLSurfaceView画上去的,用上述那样的方法肯定办不到。这里是通过反编译修改jar实现的,主要难度是找到logo画上去的关键代码。先反编译,找到关键代码并删除,打包回编签名即可。
通过Java-Decompiler 看 baidumapapi_v2_0_0.jar 关键代码如下左图红框框起来的,修改后的jar包如下右图:
关键代码在 ./smali/com/baidu/platform/comapi/map/u.smali,混淆后的代码 是m()函数:
:cond_d
const-string v1, "logo"
invoke-virtual {v0, v5, v5, v1}, Lcom/baidu/platform/comjni/map/basemap/a;->a(IILjava/lang/String;)I
move-result v1
if-lez v1, :cond_e
invoke-virtual {v0, v1, v6}, Lcom/baidu/platform/comjni/map/basemap/a;->b(IZ)V
invoke-virtual {v0, v1, v5}, Lcom/baidu/platform/comjni/map/basemap/a;->a(IZ)V
sget-object v2, Lcom/baidu/platform/comapi/map/u;->n:Lcom/baidu/platform/comapi/map/MapController;
iput v1, v2, Lcom/baidu/platform/comapi/map/MapController;->c:I
sget-object v2, Lcom/baidu/platform/comapi/map/u;->n:Lcom/baidu/platform/comapi/map/MapController;
iget-object v2, v2, Lcom/baidu/platform/comapi/map/MapController;->f:Ljava/util/Map;
const-string v3, "logo"
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
红色部分就是画logo的关键代码,删除或注释即可。
对比效果图如下:
修改后baidumapapi_v2_0_0.jar 下载:http://download.csdn.net/detail/zhouyuanjing/5171233
修改后baidumapapi_v2_1_0.jar 下载:http://download.csdn.net/detail/zhouyuanjing/5237121
看到论坛有人基于某种目的想隐藏百度地图的logo,百度肯定不想看到的,版权问题!!!
由于兴趣就想试试,结果是可以隐藏logo的,下面把它分享给大家。
百度地图Android SDK 2.0.0版本之前
MapView有个子View(IamgeView)用于显示logo,用 Hierarchy Viewer 查看如下:
这样很容易去掉logo,代码如下:
mMapView.removeViewAt(1);
对比效果图如下:
百度地图Android SDK 2.0.0版本之后
MapView的地图显示及logo的显示都是 继承GLSurfaceView画上去的,用上述那样的方法肯定办不到。这里是通过反编译修改jar实现的,主要难度是找到logo画上去的关键代码。先反编译,找到关键代码并删除,打包回编签名即可。
通过Java-Decompiler 看 baidumapapi_v2_0_0.jar 关键代码如下左图红框框起来的,修改后的jar包如下右图:
关键代码在 ./smali/com/baidu/platform/comapi/map/u.smali,混淆后的代码 是m()函数:
:cond_d
const-string v1, "logo"
invoke-virtual {v0, v5, v5, v1}, Lcom/baidu/platform/comjni/map/basemap/a;->a(IILjava/lang/String;)I
move-result v1
if-lez v1, :cond_e
invoke-virtual {v0, v1, v6}, Lcom/baidu/platform/comjni/map/basemap/a;->b(IZ)V
invoke-virtual {v0, v1, v5}, Lcom/baidu/platform/comjni/map/basemap/a;->a(IZ)V
sget-object v2, Lcom/baidu/platform/comapi/map/u;->n:Lcom/baidu/platform/comapi/map/MapController;
iput v1, v2, Lcom/baidu/platform/comapi/map/MapController;->c:I
sget-object v2, Lcom/baidu/platform/comapi/map/u;->n:Lcom/baidu/platform/comapi/map/MapController;
iget-object v2, v2, Lcom/baidu/platform/comapi/map/MapController;->f:Ljava/util/Map;
const-string v3, "logo"
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
红色部分就是画logo的关键代码,删除或注释即可。
对比效果图如下:
修改后baidumapapi_v2_0_0.jar 下载:http://download.csdn.net/detail/zhouyuanjing/5171233
修改后baidumapapi_v2_1_0.jar 下载:http://download.csdn.net/detail/zhouyuanjing/5237121
赞赏
看原图
赞赏
雪币:
留言: