美文网首页AppCan开发经验分享Android开发经验谈Android开发
Android开发者证书(打包证书)的制作使用等问题集锦

Android开发者证书(打包证书)的制作使用等问题集锦

作者: 望山观海 | 来源:发表于2017-09-02 13:58 被阅读2654次

    [TOC]

    写在前面

    本文针对AppCan平台开发应用时,经常遇到的Android证书问题做一个解释,但大多数概念是跟原生开发通用的~

    什么是Android打包证书?

    Android打包证书,即Android开发者证书,与iOS打包证书作用相同,其意义在于可以使用其签名后的App,可以唯一确定开发者身份;用证书签名后的app,其中包含了证书信息,而证书一般来说不可伪造。

    “无证书,不应用”

    • Android开发者证书,与iOS开发者证书一样重要,应用开发中一定要重视起来,做到“无证书,不应用”。

    • 因证书是自行生成,证书申请后要妥善保管,一旦丢失则无法找回。

    Android证书形式

    一般为扩展名为keystore的文件,新版工具(AndroidStudio)生成的证书扩展名可能为jks,但实质相同。

    生成方法

    在线工具制作

    方法1

    进入AppCan大众版官网 ,登录后进入大众版打包界面(开发界面) --- 证书管理 --- Android证书,此标签中包含了填写证书信息的页面,同时有一个创建证书的入口,可以通过这里填写相关信息,制作证书;制作完成之后,有个下载证书的链接,下载后自行保存好即可使用。

    方法2

    进入协同开发,证书管理中也有创建证书,使用方法同方法1,但是可能目前暂时没有提供下载功能(可以去提需求~)。

    方法3

    使用3.2以上版本的DSS打包服务(Mac mini,界面默认是绿色的那个版本),证书管理中也存在创建证书功能,使用方法同方法1,但同样暂时没有下载功能。

    本地制作

    (需要电脑中安装了JDK)进入JDK的bin目录:

    运行如下命令:

    keytool -genkey -keyalg RSA -validity 20000 -alias appcan -keystore appcan.keystore

    其中下面参数可以自行定义:

    -validity 20000
    

    代表有效期天数

    -alias appcan 
    

    代表证书别名为appcan

    -keystore appcan.keystore
    

    代表生成的keystore证书文件目标路径

    执行之后,命令会要求输入一系列证书相关的开发者信息,这些信息可以按照具体情况自行输入(包括公司名称、所在位置等,这些信息仅用于保存在证书内,打包时目前不会作什么校验,所以也没有什么格式,尽量英文填写即可)

    keytool执行命令keytool执行命令

    命令完成后,bin目录中会生成appcan.keystore

    查看证书详情命令

    keytool -list -keystore "appcan.keystore"
    

    然后按照提示输入你设置的keystore密码即可。

    AppCan测试证书(打包服务默认证书)相关答疑

    使用打包服务默认证书有什么隐患?

    1. 由于证书代表了一个开发者,如果大家都使用同样的证书,很容易产生安全问题,比如:你开发了一个App,使用了AppCan默认证书,另一个盗版App就有了模拟你的App的可能性,因为他同样可以使用AppCan默认证书打包,自定义包名改为跟你的应用相同(包名为Android应用唯一标识,且为公开的),这样盗版App甚至可以覆盖你的应用进行安装;如果使用自定义证书打包,则只要保证证书不被泄露,就可以防止出现这种形式的盗版(相同包名不同证书的apk无法覆盖安装);

    2. 360手机市场去年就已经禁止了使用AppCan默认证书打包的App了(具体表现就是,无法在360手机市场上架);

    3. 微信分享时,如果使用AppCan测试证书注册了微信开放平台的App,则会出现禁止分享的提示(具体表现可以参见官网文档中心的Android微信接入指南);

    为何不直接更换打包服务器的默认证书来解决360和微信问题?

    因为的确有不少的开发者仍然使用了AppCan默认证书,如果直接更改AppCan默认证书,则会导致现有应用再次打包后,出现无法覆盖安装旧版本的问题,造成现存的部分App的一些麻烦;为了防止给现有应用带来影响,默认测试证书不做更换(不过微信分享近期突然无法使用的问题,我们就无能为力了);

    应用上线了,突然意识到用了测试证书,想要更换证书怎么办?

    前面已经说过,更换证书打包会导致无法覆盖安装的问题(根据不同手机系统,会有“应用未安装”、“安装失败”、“证书冲突”等提示)。
    所以,如果必须要更换证书,这里给出两个思路(仅供参考)

    1、在应用内通过增量升级或者其他内容的方式,引导和告知用户,卸载重新安装新证书的版本。

    • 比如,您可以通过增量升级的补丁包方式,更新应用的启动时逻辑,增加一个检查当前版本功能,通过uexWidgetOne.getCurrentWidgetInfo();获取当前应用版本号,从而判断对应的逻辑,比如去请求一个mas接口,获取更新地址,然后使用uexWidget.startApp();接口使用浏览器启动一个写好的页面,页面中可以用来说明如何卸载应用,以及新版本下载链接,并告知用户为何要这样做等等。

    • 获取应用版本号:

    uexWidgetOne.getCurrentWidgetInfo();
    

    接口使用详见说明文档:
    [获取当前widget信息](http://newdocx.appcan.cn/newdocx/docx?type=1252_1249#getCurrentWidgetInfo 获取当前widget信息 "获取当前widget信息")

    • 启动浏览器:
    var main = "android.intent.action.VIEW";
    var add = '{"data":{"scheme":"http://www.appcan.cn/"}}';
    uexWidget.startApp(1, main, add);
    

    接口使用详见说明文档:
    [启动第三方应用(Android)](http://newdocx.appcan.cn/newdocx/docx?type=1251_1249#startApp 启动第三方应用(Android) "启动第三方应用(Android)")

    2、打包时直接更换应用包名,变身成为了另一个应用,两个应用互相不影响,不覆盖,在新应用中提示用户卸载旧应用。

    相关文章

      网友评论

      本文标题:Android开发者证书(打包证书)的制作使用等问题集锦

      本文链接:https://www.haomeiwen.com/subject/myfrjxtx.html