android签名与多渠道打包

928709420 贡献于2016-11-13

作者 pengfei du  创建于2016-01-25 12:36:00   修改者pengfei du  修改于2016-04-25 08:08:00字数4172

文档摘要:签名也叫数字证书,可以理解为一个app的一个唯一标识。与项目的包名配合使用作为一个唯一标识。
关键词:

Android 签名与多渠道打包 什么叫签名?为什么签名? 签名也叫数字证书,可以理解为一个app的一个唯一标识。与项目的包名配合使用作为一个唯一标识。 同一个应用不同版本要使用同一个签名,不然产生会冲突,造成安装不上。(包名一样,签名不一样产生冲突) 开发调试生成apk使用的是默认签名 debug.keystore 命令行模式进入 .android路径下(sdk路径下.android,或者用户.android) http://blog.csdn.net/harvic880925/article/details/17618743 输入 keytool -list -keystore debug.keystore 输入密码: android 就可以查看到sha1值 这个值是我们平常开发调试的时候生成apk所使用的key,在一些第三方sdk申请的时候会用到。 在用第三方sdk测试的时候使用默认的debug key就好,因为,平常开发调试都是用默认的debug key进行打包的。 正式上线为什么不能用默认的debug key,而用自签名(自己生成一个key) 1若使用某一个开发者的默认签名,那么每次上线都必须在这个开发者的jdk环境下进行打包 2默认debug key是跟随开发环境的,每个开发者的环境不用key也不一样,如果开发者出现工作变动或者电脑损坏就会发生key丢失的现象。 3签名都是有有效期的,默认签名的有效期是1年 使用自建签名 android studio中点击build,选择generate singed Apk 选择要打包的项目点击next 若之前已经生成过key store就直接选择在本地的生成好的keystore。填入密码alias别名等资料进行打包。 并没有已经生成好的选择create new 从上到下分别为 保存的路径 密码 别名 密码,最好与上一个密码保持一致,便于记忆 有效期 姓名 部门 组织(公司) 城市 省 国家代码,中国为86 点击ok生成keystore,我们可以只用这个jks进行签名了,把这个jks保存好,最好上传至公司svn. 进入签名文件的路径 keytool -list -v -alias aaa -keystore aaaaa.jks 
 查看签名sha1 路径为生成的apk存放路径 release是发布版本的意思(debug是调试版本) 点击finish进行打包。 友盟渠道包 1注册友盟账号 2进入应用管理 3添加应用获取appkey 2按照集成文档进行配置http://dev.umeng.com/analytics/android-doc/integration 导包(采用下载,把lib下jar包导入比较靠谱) 配置manifest文件(权限,appkey,渠道名称) 官方文档中并没有多渠道包的相关资料 友盟多渠道包: 进入module build.gradle文件(要进行打包的主应用的gradle文件中) 在android{}层级下复制以下代码 productFlavors {  wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] }    baidu { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"] }    c360 { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"] }    uc { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"] }    } 其中[UMENG_CHANNEL_VALUE: "wandoujia"]就是对应配置文件中的${UMENG_CHANNEL_VALUE}的值 [UMENG_CHANNEL_VALUE: "uc"]中的值可以自定义 在activity中添加代码 public void onResume() { super.onResume(); MobclickAgent.onResume(this); } public void onPause() { super.onPause(); MobclickAgent.onPause(this); } 接着就可以打包了android studio中点击build,选择generate singed Apk 选择要打包的module,并选择key,填写密码。 这里多了flavors,里面就是咱们在gradle中定义的渠道选择所有,选择存放路径点击finsh开始打包。 测试,启动应用进行操作,然后去后台查看是否有数据。 添加测试设备 添加设备 打印下面方法的值就是上面要填写的设备识别信息 public static String getDeviceInfo(Context context) { try{ org.json.JSONObject json = new org.json.JSONObject(); android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); String device_id = tm.getDeviceId(); android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager) context.getSystemService(Context.WIFI_SERVICE); String mac = wifi.getConnectionInfo().getMacAddress(); json.put("mac", mac); if( TextUtils.isEmpty(device_id) ){ device_id = mac; } if( TextUtils.isEmpty(device_id) ){ device_id = android.provider.Settings.Secure.getString(context.getContentResolver(),android.provider.Settings.Secure.ANDROID_ID); } json.put("device_id", device_id); return json.toString(); }catch(Exception e){ e.printStackTrace(); } return null; } 1平常开发就用debug签名就可以,编译速度快 2正式上线版本必须使用正式签名,自建的签名 1若使用某一个开发者的默认签名,那么每次上线都必须在这个开发者的jdk环境下进行打包 2默认debug key是跟随开发环境的,每个开发者的环境不用key也不一样,如果开发者出现工作变动或者电脑损坏就会发生key丢失的现象。 3签名都是有有效期的,默认签名的有效期是1年 两个包名一样但签名不同的apk,安装会把原来的数据都清空,并且可能出现根本无法安装,平常就用debug签名就行(其实就是什么都不用管,系统会用debug.keystore为你的应用签名) 第三方的平台需要sha1,平常开发的时候使用debug,上线也要更换 所以上线前和签名有关的需要做两个事情 1使用自己的签名 2第三方平台上的sha1新生成的appkey 用自建的签名生成的release包就已经可以用作正式包进行各大平台进行发布了 (渠道可以简单的理解为指定的应用市场) 打渠道包都通过友盟的平台 打友盟渠道包 1在友盟平台上创建一个应用,生成了一个appkey 2下载友盟sdk(解压,libs里的jar导入自己应用中) 3填写appkey 6 baseactivity中添加方法 public void onResume() { super.onResume(); // 友盟 MobclickAgent.onResume(this); } public void onPause() { super.onPause(); // 友盟 MobclickAgent.onPause(this); } 7打包 多渠道包,多渠道包基本流程和单个渠道包基本一样, 不一样的地方有: 1UMENG_CHANNEL不能写死
下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创文档 来获得金币奖励!

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档