应用瘦身,加固,友盟数据统计

1. apk瘦身

假设模块为app

减肥

apk瘦身:apk减小.  在功能不变。

作用:节省用户下载消耗流量,下载apk可能性。

投资价值: 用户安装  用户活跃

 

实现步骤:

一.正常开发项目。

二.Gradle变量 3个变量

三.图片格式  3种处理方式

Module模块

Eclipse

打包:编译一个已签名的apk

Keystore&jks  可以通用。

使用asbuild/generate signed apk  

如果没有证书要创建证书

有的话要选择。

 

1.1. 对项目进行签名

 

1.添加jarlibs目录并且使用右键的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 使用账号密码去登录

一个签名的apk上传到平台。

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. 友盟-基本统计

在每个ActivityonResume方法中调用

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.使用TabHostTabActivityActivityGroup)

》》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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值