文章目录
  1. 1. Android打包上线自检流程
    1. 1.1. 1.混淆检查
      1. 1.1.1. 1.1 项目混淆配置是否开启
      2. 1.1.2. 1.2 ProGuard.cfg文件检查
        1. 1.1.2.1. 1.2.1 实体类及其成员
        2. 1.1.2.2. 1.2.2 内部类
        3. 1.1.2.3. 1.2.3 三方包
        4. 1.1.2.4. 1.2.4 WebView
        5. 1.1.2.5. 1.2.5 JavaScript
        6. 1.1.2.6. 1.2.6 反射相关
    2. 1.2. 3.检查项目是否可以上线
      1. 1.2.1. 3.1 检查项目的项目环境
        1. 1.2.1.1. 3.1.1 将URL切至线上环境
        2. 1.2.1.2. 3.1.2 将项目类部分接口配置切至线上环境
      2. 1.2.2. 3.2 清除开发测试代码
      3. 1.2.3. 3.3 检查是否友盟埋点
    3. 1.3. 4.版本号更改
    4. 1.4. 5.Git新建改版本分支
    5. 1.5. 6.打包

Android打包上线自检流程

1.混淆检查

1.1 项目混淆配置是否开启

在App所在Module的build.gradle文件中,如下图所示的minifyEnabled 开关,因此如果需要混淆代码,需将false改为true,然后在文件proguard-rules.pro添加具体混淆规则。
混淆配置

由于如果不开启混淆的话,APP很容易被反编译,影响安全

1.2 ProGuard.cfg文件检查

主要重点检查以下几个点是否被保留(-keep),不然release包会因为找不到具体的类或方法各种报错

1.2.1 实体类及其成员

实体类由于涉及到与服务端的交互,各种gson的交互如此等等,是要保留的.为了方便,我们只需要-keep 所有实体类所在的package就可以(这需要我们平时写代码时候需要将实体类都放在统一的包下面),如:

1
-keep class me.game.mvparms.m5173.mvp.model.entity** {*;}

1.2.2 内部类

内部类如果不注意很容易被混淆,这会导致调用的时候会找不到该类引起空指针异常.还可以直接在使用过的类中全部保留,比如说MainActivity使用了,那么:

1
2
3
-keepclasseswithmembers class me.game.mvparms.m5173.mvp.ui.activity.MainActivity$* {
*;
}

1.2.3 三方包

一般的三方框架或者模组都会在其官方的接入文档当中告知如何加入混淆,只需复制粘贴就好了,注意下是否存在重复.如接入的汇付支付:

1
2
3
4
5
#---- 汇付支付 start----#
-libraryjars libs/HeepayPlugin_v3.0.jar
-dontwarn com.heepay.plugin.**
-keep class com.heepay.plugin.** { *; }
#---- 汇付支付 end----#

1.2.4 WebView

如果项目中用到了WebView的复杂操作,需要加入以下代码

1
2
3
4
5
6
7
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, java.lang.String);
}

1.2.5 JavaScript

与js互调的类,一般做如下的处理

1
-keep class 你的类所在的包.** { *; }

如果是内部类的话

1
-keepclasseswithmembers class 你的类所在的包.父类$子类 { <methods>; }

1.2.6 反射相关

与反射相关的类,一般做如下处理

1
-keep class 你的类所在的包.** { *; }

3.检查项目是否可以上线

3.1 检查项目的项目环境

3.1.1 将URL切至线上环境

对于主站App,配置在DefaultConstant类中,将URL切至线上环境"http://routeapi.5173.com"

3.1.2 将项目类部分接口配置切至线上环境

上线前请确认本次更新中的各个模块的项目开发人员,是否存在线下配置和线上配置,需要在上线前进行切换

例如在主站App的手游项目,手游商品列表页GoodsListOfMobileGameActivity类中的mBizOfferTypeId字段,需切换至DefaultConstant.CATE_ID_MOBILE_ONLINE_GAME线上版本

3.2 清除开发测试代码

检查并且清除或注释掉新版本的各个模块当中是否存在测试代码,例如System.out.print()或者Log.i()等日志记录代码,以防上线版本的App将内部的日志暴露出去

3.3 检查是否友盟埋点

各个新模块开发人员或者负责友盟埋点的人员注意一下是否已经加入友盟埋点,并且检查一下友盟统计后台对于新增埋点是否做了配置
友盟埋点后台配置

4.版本号更改

AndroidManifest中的android:versionCode改为当前日期加00的形式2017090700
AndroidManifest中的android:versionName改为上线的版本号,如2.6.1

由于5173主站版本的手游端游的列表配置是根据versionCode的大小来动态更新的,所以新版本上线务必更新versionCode为上线当天日期+00的格式

5.Git新建改版本分支

上述检查确认无误之后并且确认无问题无新需求之后,在git上面新建一个当前版本号的分支,使用release/前缀,并将最新代码提交上去,此次更新的日志描述写在提交分支的消息上,以便以后检查维护
release/2.6.0.

6.打包

上述流程确认无误后可以进行打包分发工作了

文章目录
  1. 1. Android打包上线自检流程
    1. 1.1. 1.混淆检查
      1. 1.1.1. 1.1 项目混淆配置是否开启
      2. 1.1.2. 1.2 ProGuard.cfg文件检查
        1. 1.1.2.1. 1.2.1 实体类及其成员
        2. 1.1.2.2. 1.2.2 内部类
        3. 1.1.2.3. 1.2.3 三方包
        4. 1.1.2.4. 1.2.4 WebView
        5. 1.1.2.5. 1.2.5 JavaScript
        6. 1.1.2.6. 1.2.6 反射相关
    2. 1.2. 3.检查项目是否可以上线
      1. 1.2.1. 3.1 检查项目的项目环境
        1. 1.2.1.1. 3.1.1 将URL切至线上环境
        2. 1.2.1.2. 3.1.2 将项目类部分接口配置切至线上环境
      2. 1.2.2. 3.2 清除开发测试代码
      3. 1.2.3. 3.3 检查是否友盟埋点
    3. 1.3. 4.版本号更改
    4. 1.4. 5.Git新建改版本分支
    5. 1.5. 6.打包