应用瘦身,加固,友盟数据统计
1. apk瘦身
假设模块为app
减肥
apk瘦身:apk减小. 在功能不变。
作用:节省用户下载消耗流量,下载apk可能性。
投资价值: 用户安装 用户活跃
实现步骤:
一.正常开发项目。
二.Gradle变量 3个变量
三.图片格式 3种处理方式
Module模块
Eclipse
打包:编译一个已签名的apk
Keystore&jks 可以通用。
使用as的build/generate signed apk
如果没有证书要创建证书
有的话要选择。
1.1. 对项目进行签名
1.添加jar到libs目录并且使用右键的Add As Lib绑定
2.编写代码
app/build.gradle
com.itheima.project91.MainActivity
public class MainActivity extends AppCompatActivity { |
com.itheima.project91.Person
public class Person { public Person(String name, int age) { |
3.导出apk包
没有证书的话选择创建
有证书的话选择已经存在的
签名完成后可以使用逆向助手 反编译
1.2. Gradle变量配置
1.2.1. MinifyEnabled
【文件】app/build.gradle
Java编译获取class 经过优化压缩进dex
//瘦身一。minifyEnabled对classes.dex 瘦身
// 1.整个项目都没有引用到jar 不编译到apk
//2.将代码进行混淆 Gson.toJson(Object ) a.b.(c)
releaseMinifyEnabled {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
1.2.2. shrinkResources
手工查找未引用资源:Lint: 代码审查.使用as进行对未引用的资源进行搜索。
使用gradle配置处理
//瘦身二。shrinkResources主要对res目录下面的未引用的资源进行特殊处理。(替换图片 1像素)
//注意事项:必须在 minifyEnabled true
releaseShrinkResources {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
1.2.3. resConfigs
//默认配置 :跟编译有关系
defaultConfig {
applicationId "com.itheima.project91"
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
//跟values有关系。国际 values-xx
// 了解 瘦身三。把需要打包到apk中的values文件夹设置成参数
resConfigs("zh")
}
反编译查看
1.2.4. 重新签名打包
把已经生成的apk中没有使用到v4 v7资源 删除
因为修改了apk内容,再进行安装会失败。安全性方面的原因。
但是可以重新签名 1.删除META-INFO 2使用签名工具重新签名
1.3. 图片处理减小apk
1.3.1. 格式转换 png-Jpg
1.3.2. Tynypng是一图片压缩网站
https://tinypng.com/
1.3.3. Webp格式
cwebp -q 75 test.png -o test.png.webp
注意事项:只能在4.0以上的设备正常运行。 但是目前4.0以上的设备占用率比较高.
2. Apk加固
加固:实际上是一种防止反编译技术。加一层shell.
.so不容易被反编译。
支付 基金 钱包 政府oa
梆梆 360加固保 爱加密
竞品
l 注册一个平台账号
l 使用账号密码去登录
l 将 一个签名的apk上传到平台。
l 等待平台加固后将它下载来。
l 只有通过重新签名才能进行安装
2.1. 梆梆加固
》》 1.注册开发者账号
http://passport.bangcle.com/users/regist
账号 289393698@qq.com 密码 testtest
》》2.使用开发者账号进行登录
http://passport.bangcle.com/authcenter/Users/userlogin
》》3.登录成功后进入后台管理中心
http://dev.bangcle.com/apps/index
》》4.提交 app 到服务端(跟爱加密不同, 梆梆只是进行代码的安全性检测)
》》5.下载
》》6.使用反编译查看
》》7.重新签名 apk
》》8.查看源代码
将签名成功的文件安装使用查看是否正常运行。
再使用常用的逆向助手进行代码分析, 查看变化
看不到 app 的源代码。 所以有效防止他人进行反编译
2.2. 360加固保
》》1.注册开发者账号
http://jiagu.360.cn/
账号 289393698@qq.com 密码 testtest
》》2.使用账号进行登录
》》3.可以选择两种方式进行加固
》》4.进入管理中心使用
http://jiagu.360.cn/qcmshtml/manager.html#record
选中应用上传可以看到上传记录
》》5.下载使用 因为这个 apk 没有进行签名 所以安装出现异常
所以得通过签名工具再次签名
点击进去看到
下载进行签名
》》6.安装使用
2.3. 爱加密
》》1.注册开发者账号
http://www.ijiami.cn/treg
账号密码 289393698@qq.com 密码 test test
》》2 使用开发者账号登录 登录成功的话 可以进入用户个人中心
》》3 提交 apk 进行加密体验
http://www.ijiami.cn/apply/encryptLogs
》》4 进入提交界面
》》5 提交并且等待加密后就可以下载
【 但是需要签名后才可以使用】
》》6 下载 爱加密的签名工具
》》7 运行签名
比较加固后代码
2.4. 加固后找资料
DDMS:
Windows: 查看屏幕显示哪个Activity
Tree View:查看 布局 自定义控件。
https://github.com/bingoogolapple/BGARefreshLayout-Android
http://blog.csdn.net/jan_s/article/details/43772697
https://github.com/ksoichiro/Android-ObservableScrollView
3. 应用统计
3.1. 应用统计
在不涉及用户隐私将用户使用行为搜集(打开页面时间,安装数量,启动应用次数).
原理:
1.搜集信息代码编译到apk。
2.获取参数通过网络发给服务器 服务端使用数据库保存。
3.后台使用图片展示给用户。
百度 友盟 谷歌
友盟:把这个搜集用户数据的代码都写好。(SDK)
连代码的使用笔记(文档)
一.注册开发者账号登录
二.Sdk集成
MobclickAgent:搜集与发送用户数据
AppKey:其实就是app统计数据的id
57eb7a0fe0f55a978f002fbe
可以根据key提出后台数据.
App应用的用户使用数据收集技术。
l 应用概况
l 基本指标
l 用户分析
l 渠道和版本
l 错误分析
例:http://mobile.umeng.com/apps/4100008dd65107258db11ef4/reports/realtime_summary
当公司上线一款app应用到应用商店前,在app里面添加收集用户数据的代码。在用户使用app时,app内的代码就会把用户的使用数据收集并发送给服务器。公司就可以知道以下数据,并且根据用户具体情况改进然后升级app
三. 下载友盟统计官方SDK
》》1.注册友盟统计用户: 账号 289393698@qq.com密码 testtest1
登录后选择自己需要的产品
》》2.获取AppKey
http://dev.umeng.com/analytics/android-doc/integration?spm=0.0.0.0.UHo4wP
提交后获得
保存
574a8b5de0f55af5e2001203
》》3.下载sdk
到以下路径下载:
http://dev.umeng.com/analytics/android-doc/sdk-download |
下载完成后解压
》》4.创建Demo程序
app/build.gradle
dependencies { |
》》5.设置权限与app_key
app/src/main/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <!--umeng默认的权限 --> <!--配置提交给服务端的渠道变量--> |
3.2. 友盟-基本统计
在每个Activity的onResume方法中调用
MobclickAgent.onResume(Context) ,
onPause方法中调用 MobclickAgent.onPause(Context)
》》1.添加代码
demo.itheima.com.demounmeng.MainActivity
//Session代表一次启动过程 在这次启动里面可以打开多个页面 } } |
【注意】 子类与父类不需要同时添加以上代码防止重复统计。(eg.使用TabHost、TabActivity、ActivityGroup时)。
》》2.进入后台看启动数据
3.3. 友盟-页面统计
1. MobclickAgent.onResume() 和MobclickAgent.onPause() 方法是用来统计应用时长的(也就是Session时长,当然还包括一些其他功能)
2.MobclickAgent.onPageStart() 和MobclickAgent.onPageEnd() 方法是用来统计页面跳转的
》》1.针对Activity
//Session代表一次启动过程 在这次启动里面可以打开多个页面 } |
》》2.针对Fragment
demo.itheima.com.demounmeng.MainFragment
public void onResume() { |
》》3.在后台看【功能使用】
一般正常的数据类似
【注意只能看昨日的数据 如果第一天使用不能看到当天的数据】
3.4. 友盟-自定义事件
//使用友盟发送一个表示事件的字符 串. //计算事件 累计值 int duration = new Random().nextInt(1000) + 10000; |
应用瘦身,加固,友盟数据统计相关推荐
- unity 接入友盟数据统计SDK
1.下载UnitySDK 友盟SDK官网链接:SDK_开发者中心 - 友盟+ (umeng.com) 如下图. 解压后长这样 然后进入Unity3D文件夹,分别导入两个unitypackge包 ①.导 ...
- 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...
- android友盟埋点,友盟数据埋点前,你要知道这些
一.数据埋点具体应用 1.统计路径 一般APP所有页面都会进行埋点,埋点后友盟会统计用户在页面上的访问路径,通过访问路径可以得到整体用户的行为数据. 2.自定义事件 自定义事件就是具体的埋点,在APP ...
- 友盟数据—值得手游创业者关注的玩家数据
友盟数据-值得手游创业者关注的玩家数据 你知道"辣妈"是什么游戏的忠诚玩家吗?你知道"大龄玩家"都喜好怎样的游戏?你知道哪类玩家最"多金"? ...
- iOS 友盟App统计
创建账号-->阅读开发文档-->创建应用获取key 在官网上开发文档很简单直接照做就可以进行基础的统计, 比如想统计某一个按钮被点击次数应该怎么办呢?这里就用到了自定义统计事件 首先要注册 ...
- 友盟iOS统计中破解和越狱是什么?
友盟iOS统计中破解和越狱是什么? 1.什么是越狱及破解呢? 所谓越狱,是用于获取苹果公司移动设备操作系统iOS最高权限(ROOT)的一种技术手段.越狱完成后设备依然运行iOS操作系统,一款名为Cyd ...
- 友盟cnzz统计数据为什么统计不到百度360搜狗搜索过来的关键词?
网站上同时安装了百度统计和友盟的cnzz统计,通过数据分析发现,两者有很大区别,而且在cnzz搜索词那一项,和百度统计的出入很大. 记得几年前,cnzz是可以详细统计到各大搜索引擎的数据的,那么现在c ...
- python3爬虫,通过cookies来跳过验证码直接爬取友盟数据
最近在做游戏的运营,每天都要上友盟的数据统计平台拉每天的活跃和新增,正好自己会python,就做了一个自动化的爬虫. 目前是单一的json处理,后续直接加一个循环的链接嵌套就行了. import re ...
- ios友盟错误_iOS 2017友盟错误统计及分析
我还以为你不会搜我呢~ 看完这文章后的你 前言 在app开发中,我坚信,总会有小伙伴会用到友盟统计的,我也是(废话).但是在友盟的错误日志分析这块,小白用的话可能会有点小麻烦.最近有个小伙伴问我这点, ...
最新文章
- 数据蒋堂 | “后半”有序的分组
- 常见的Java WEB服务器
- python中argparse模块
- homepod怎么设置为中文_设置 HomePod
- Java黑皮书课后题第10章:**10.28(实现StringBuilder类)在Java库中提供了StringBuilder类。给出你对下面方法的实现(将新类命名为MyStringBuilder2)
- html2canvas改成同步,html2canvas转为图片异步转同步问题(记录)
- java中static、final 和 static final之间的区别
- qlabel 显示图片后大小不变_图形编程:QT使用scrollarea显示图片的解决方案
- mysql中查询编辑器_数据库中查询编辑器的使用方法
- UVA11019 Matrix Matcher【hash傻逼题】【AC自动机好题】
- ios7学习之路七(隐藏虚拟键盘,解决键盘挡住UITextField问题)
- Java IO学习7:打印流
- 【Win10安装字体+免费字体库】Windows10安装新字体教程,免费在线字体库推荐
- rufus安装linux到硬盘,怎么用rufus安装 kail linux 安装到u盘
- python设置excel单元格数据类型为文本_Python xlwt设置excel单元格字体及格式
- 内网穿透远程访问家里的群晖NAS 1-2
- oracle一些基本函数
- CC00055.hadoop——|HadoopMapReduce.V27|——|Hadoop.v27|源码剖析|DataNode启动流程|
- python迭代廖雪峰_廖雪峰python教程:迭代
- python 从源码讲解random模块