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 {
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void show(View view)
    {
        Gson gson=new Gson();
        Person p=new Person("91",22);
        String json=gson.toJson(p);
        Toast.makeText(MainActivity.this, json, Toast.LENGTH_SHORT).show();
    }
}

com.itheima.project91.Person

public class Person {
    public String name;
    public  int age;

public Person(String name, int age) {
        this.name = name;
        this.age = 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 {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    
compile 'com.android.support:appcompat-v7:23.3.0'
    
compile 'com.umeng.analytics:analytics:latest.integration'
}

》》5.设置权限与app_key

app/src/main/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="demo.itheima.com.demounmeng"
>

<!--umeng默认的权限 -->
    
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
>
//....

<!--配置提交给服务端的渠道变量-->
 
<meta-data android:value="574a8b5de0f55af5e2001203" android:name="UMENG_APPKEY"/>
  <meta-data android:value="googleplay" android:name="UMENG_CHANNEL"/>
</application>
</manifest>

3.2. 友盟-基本统计

在每个Activity的onResume方法中调用

MobclickAgent.onResume(Context) ,

onPause方法中调用 MobclickAgent.onPause(Context)

》》1.添加代码

demo.itheima.com.demounmeng.MainActivity

//Session代表一次启动过程  在这次启动里面可以打开多个页面
public void onResume() {
    super.onResume();
    //开始统计
    
MobclickAgent.onResume(this);

}
public void onPause() {
    super.onPause();
    //关闭统计
    
MobclickAgent.onPause(this);

}

【注意】 子类与父类不需要同时添加以上代码防止重复统计。(eg.使用TabHost、TabActivity、ActivityGroup时)。

》》2.进入后台看启动数据

3.3. 友盟-页面统计

1. MobclickAgent.onResume()  和MobclickAgent.onPause()  方法是用来统计应用时长的(也就是Session时长,当然还包括一些其他功能)

2.MobclickAgent.onPageStart() 和MobclickAgent.onPageEnd() 方法是用来统计页面跳转的

》》1.针对Activity

//Session代表一次启动过程  在这次启动里面可以打开多个页面
public void onResume() {
    super.onResume();
    //统计页面使用时间
    
MobclickAgent.onPageStart(getClass().getSimpleName());
    //开始统计
    
MobclickAgent.onResume(this);

}
public void onPause() {
    super.onPause();
    //统计页面使用时间
    
MobclickAgent.onPageEnd(getClass().getSimpleName());
    //关闭统计
    
MobclickAgent.onPause(this);
}

》》2.针对Fragment

demo.itheima.com.demounmeng.MainFragment

public void onResume() {
    super.onResume();
    //统计页面使用时间
    
MobclickAgent.onPageStart(getClass().getSimpleName());
}
public void onPause() {
    super.onPause();
    //统计页面使用时间
    
MobclickAgent.onPageEnd(getClass().getSimpleName());
}

》》3.在后台看【功能使用】

一般正常的数据类似

【注意只能看昨日的数据 如果第一天使用不能看到当天的数据】

3.4. 友盟-自定义事件

//使用友盟发送一个表示事件的字符 串.
String tag = "sendRedBag";
//1.上下文   Ctrl+P查看参数 Ctrl+Q 查看文档
//2.代表事件的字符串:服务器接收多少个字符串就算作事件总数
// MobclickAgent.onEvent(this,"sendRedBag");

//计算事件  累计值

int duration = new Random().nextInt(1000) + 10000;
//        long enterTime=System.currentTimeMillis();
//        long exitTime=System.currentTimeMillis()+duration;
        
Map<String, String> map_value = new HashMap<String, String>();
        map_value.put("lang", "chinese");
        map_value.put("name", "0001僵尸");
        MobclickAgent.onEventValue(this, "movie", map_value, duration);

应用瘦身,加固,友盟数据统计相关推荐

  1. unity 接入友盟数据统计SDK

    1.下载UnitySDK 友盟SDK官网链接:SDK_开发者中心 - 友盟+ (umeng.com) 如下图. 解压后长这样 然后进入Unity3D文件夹,分别导入两个unitypackge包 ①.导 ...

  2. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期

    Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...

  3. android友盟埋点,友盟数据埋点前,你要知道这些

    一.数据埋点具体应用 1.统计路径 一般APP所有页面都会进行埋点,埋点后友盟会统计用户在页面上的访问路径,通过访问路径可以得到整体用户的行为数据. 2.自定义事件 自定义事件就是具体的埋点,在APP ...

  4. 友盟数据—值得手游创业者关注的玩家数据

    友盟数据-值得手游创业者关注的玩家数据 你知道"辣妈"是什么游戏的忠诚玩家吗?你知道"大龄玩家"都喜好怎样的游戏?你知道哪类玩家最"多金"? ...

  5. iOS 友盟App统计

    创建账号-->阅读开发文档-->创建应用获取key 在官网上开发文档很简单直接照做就可以进行基础的统计, 比如想统计某一个按钮被点击次数应该怎么办呢?这里就用到了自定义统计事件 首先要注册 ...

  6. 友盟iOS统计中破解和越狱是什么?

    友盟iOS统计中破解和越狱是什么? 1.什么是越狱及破解呢? 所谓越狱,是用于获取苹果公司移动设备操作系统iOS最高权限(ROOT)的一种技术手段.越狱完成后设备依然运行iOS操作系统,一款名为Cyd ...

  7. 友盟cnzz统计数据为什么统计不到百度360搜狗搜索过来的关键词?

    网站上同时安装了百度统计和友盟的cnzz统计,通过数据分析发现,两者有很大区别,而且在cnzz搜索词那一项,和百度统计的出入很大. 记得几年前,cnzz是可以详细统计到各大搜索引擎的数据的,那么现在c ...

  8. python3爬虫,通过cookies来跳过验证码直接爬取友盟数据

    最近在做游戏的运营,每天都要上友盟的数据统计平台拉每天的活跃和新增,正好自己会python,就做了一个自动化的爬虫. 目前是单一的json处理,后续直接加一个循环的链接嵌套就行了. import re ...

  9. ios友盟错误_iOS 2017友盟错误统计及分析

    我还以为你不会搜我呢~ 看完这文章后的你 前言 在app开发中,我坚信,总会有小伙伴会用到友盟统计的,我也是(废话).但是在友盟的错误日志分析这块,小白用的话可能会有点小麻烦.最近有个小伙伴问我这点, ...

最新文章

  1. 数据蒋堂 | “后半”有序的分组
  2. 常见的Java WEB服务器
  3. python中argparse模块
  4. homepod怎么设置为中文_设置 HomePod
  5. Java黑皮书课后题第10章:**10.28(实现StringBuilder类)在Java库中提供了StringBuilder类。给出你对下面方法的实现(将新类命名为MyStringBuilder2)
  6. html2canvas改成同步,html2canvas转为图片异步转同步问题(记录)
  7. java中static、final 和 static final之间的区别
  8. qlabel 显示图片后大小不变_图形编程:QT使用scrollarea显示图片的解决方案
  9. mysql中查询编辑器_数据库中查询编辑器的使用方法
  10. UVA11019 Matrix Matcher【hash傻逼题】【AC自动机好题】
  11. ios7学习之路七(隐藏虚拟键盘,解决键盘挡住UITextField问题)
  12. Java IO学习7:打印流
  13. 【Win10安装字体+免费字体库】Windows10安装新字体教程,免费在线字体库推荐
  14. rufus安装linux到硬盘,怎么用rufus安装 kail linux 安装到u盘
  15. python设置excel单元格数据类型为文本_Python xlwt设置excel单元格字体及格式
  16. 内网穿透远程访问家里的群晖NAS 1-2
  17. oracle一些基本函数
  18. CC00055.hadoop——|HadoopMapReduce.V27|——|Hadoop.v27|源码剖析|DataNode启动流程|
  19. python迭代廖雪峰_廖雪峰python教程:迭代
  20. python 从源码讲解random模块

热门文章

  1. VCSA证书过期处理
  2. Centos 7 编译安装最新版node淘宝cnpm源
  3. E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
  4. 域名购买 估价与域名的备案
  5. 互联网检测服务 ------Windows Server
  6. 混乱的江湖,LED显示屏谁能决胜渠道?
  7. java 以时间戳生成编号_Java生成时间戳
  8. Grafana表格配置以及Panel/Dashboard复制粘贴
  9. tp3.2中jquery查询订单信息
  10. Android Preference详解之初识Preference及Preference系(一)