android应用上线前应该做的一些事一

一、apk签名(必须)
1.apk签名(数字签名)
apk签名:开发者(开发商)通过数字证书(也可以叫签名文件),给apk应用打上带有个人(公司)信息的标记,以表示自己是该应用的开发者或拥有者。签名后的apk解压后能看到META-INF文件夹,并且里面会有3个签名相关的文件(MANIFEST.MF,CERT.SF,CERT.RSA)

数字签名: 哈希算法(sha1, md5) + 私钥加密

查看apk的拥有者


keytool -printcert -file CERT.RSA
关于Android数字签名相关事项:

所有的应用都必须进行签名,android系统不会安装没有签名的应用;

使用不同数字证书签名的两个apk,无法实现覆盖安装。所以,应用在版本升级打包时必须使用同一个数字证书(keystore文件)进行签名; 这一点,也保证了用户手机上已安装的应用,不会被原作者外的第三者开发的假冒应用安装替换,因为第三者不可能持有原作者的数字证书(签名文件)

应用上线需要release签名(或者叫正式签名:指使用个人或公司的签名文件签名),不能用debug签名(开发调试签名:指使用sdk自带的签名文件签名)

数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常使用,一般开启99年就好了

apk签名可以使用自签名的数字证书(自己创建的keystore签名文件),不需要使用CA机构认证的数字证书(需要给CA机构付费);


2.生成签名文件的两种方式
通过IDE(AndroidStudio, Eclipse)生成


通过命令行keytool命令生成

keytool -genkeypair -validity [签名文件的有效期,单位为天] -keystore [keystore签名文件(数字证书)] -storepass [store密码] -alias [密钥对的别名] -keypass [密钥密码]

列表出所有的密钥对:
keytool -list -v -keystore itheima.keystore
 
参考: https://www.chinassl.net/?f=faq&a=view&r=457
3.AndroidStudio中导出正式签名包

android {
 
    // 定义签名用到的数字证书
    signingConfigs {
        config {
            keyAlias 'itheima'
            keyPassword '123456'
            storeFile file('E:/_GZ05/_code/01.ProGuardDemo_AS/itheima.jks')
            storePassword '123456'
        }
    }
    ...
 
    buildTypes {
        // debug签名, 直接运行使用
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
 
        // 打正式包
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config  // 使用上面配置的签名文件进行签名
        }
    }
}
二、Android代码混淆(非必须)

1. 混淆简介
Android代码混淆是一种应用源代码保护技术,用来防止别人对apk进行逆向分析;
从Android2.3开始,Google在SDK中加入了一个叫ProGuard的工具,使用它来进行代码混淆。
proguard是一个压缩、优化和混淆java字节码文件的免费工具,其作用:
                删除代码中的注释;

                    删除代码中没有用到的类、字段、方法和属性;

                    会把代码中的包名、类名、方法名变量名等修改为abcd...这种没有意义的名字,使得反编译出来的代码难以阅读,从而达到防止apk被破解和逆向分析的目的;

                    经过ProGuard混淆后apk安装包会变小

2. 如何使用Proguard进行代码混淆?
buildTypes {
    release {
        // 修改此参数为true,表示要进行混淆
        minifyEnabled true
        // 表示要使用sdk中的proguard-android.txt和当前项目中的proguard-rules.pro指定混淆规则
        // 通常只需修改后者就可以了
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    // 指定jdk为1.7
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
}
在app下的proguard-rules.pro文件中配置混淆规则
打开gradle窗口,双击如下操作菜单项(assembleRelease: 打正式的发布包,installRelease: 安装正式的发布包), 生成出来的apk就是经过混淆的


3. 混淆规则配置[重点]
【注意】:有些java类是不能进行混淆,需要配置混淆规则。

1.所有的第三方包jar/库, 都不进行混淆。 对于每一个第三方的jar或库都需要配置如下两行,其中#号为注释,


#com.umeng.analytics:是要配置的第三方库的包名,配置成包名前缀com.umeng也可以
-dontwarn com.umeng.analytics.**               # 不要提示警告
-keep class com.umeng.analytics.** { *; }      # 对指定的类不进行混淆
2.注意:如果你使用的proguard的版本比较低, 对于每一个jar或第三方依赖, 还需要配置如下一行,不加可能会出现“类1 can't find referenced class 类2”这样的错。


-libraryjars libs/umeng-analytics-v5.6.1.jar   
只要用到反射的类都不能进行混淆

3.如果使用了Gson解析json字符串,如果需要

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值