Android中的应用认领总结

最近公司的一款产品提交国内市场,发现有些国内市场提示需要进行应用认领。原因就是别人(或者市场抓取)已经在我们之前将这个应用提交到了该市场。认领成功后,这个应用就重回你的怀抱了,其实认领很简单,这里讲到的自然是对未签名的包进行签名。由于这样的操作细小琐屑,这样更需要记录一下,免得以后麻烦。

如何认领

1.一般的就是市场提供一个未签名的apk包,认领方进行签名后,上传即可认领成功。
2.另一种就是提供公司证明,这个我们不讲,也没什么可以讲。

通常情况下认领都会有对一个未签名的apk包签名认证这种方式,因为签名是软件发布商所独有的,通过对比测试需认领的包的签名和刚签过名的apk包是否一致,如果一致就认领成功,否则失败。

对未签名包签名

代码如下:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your_keystore  -storepass your_storepass -keypass your_keypass -signedjar path_of_signed_apk  path_of_unsigned_apk your_alias

需要替换的值

1.your_key_store keystore文件路径
2.your_storepass store密码
3.your_keypass key密码
4.path_of_signed_apk 签名后apk保存的目录
5.path_of_unsigned_apk 待签名的apk包
6.your_alias keystore中的别名

注意上面的签名算法sigalg 使用SHA1withRSA或者MD5withRSA都可以。

验证签名

代码如下:

jarsigner -verify -certs -verbose your_app.apk

比如我们验证百度金融的apk,会得到类似这样的结果

代码如下:

19:23 $ jarsigner -verify -certs -verbose BaiduFinance.apk | more

s      61679 Fri Nov 14 19:50:16 CST 2014 META-INF/MANIFEST.MF

X.509, CN=Baidu, OU=Baidu Inc., O=Baidu Inc., L=Beijing, ST=Beijing, C=CN
      [certificate is valid from 12/6/13 10:19 AM to 11/24/63 10:19 AM]
      [CertPath not validated: Path does not chain with any of the trust anchors]

61800 Fri Nov 14 19:50:16 CST 2014 META-INF/MCO_BAID.SF
         936 Fri Nov 14 19:50:16 CST 2014 META-INF/MCO_BAID.RSA
sm      2304 Fri Nov 14 19:49:32 CST 2014 assets/mean/data_mean_24_bank_card

疑难问题

代码如下:

No -tsa or -tsacert is provided and this jar is not timestamped

在签名时加入下面的选项

代码如下:

jarsigner -tsa http://timestamp.digicert.com

Windows无法打开文件

有些Windows工具无法打开签名后的apk,如果你的签名没有错误,并且验证过,这种情况请忽略。

签名认领失败

如果签名认领失败的话,请检查目前线上的包是否进行了二次打包被别人篡改了签名,如果是的话,需要进行商务上的沟通来解决了。

(0)

相关推荐

  • android应用实现开机自动启动方法

    原理:Android系统在开机的时候会发出一个广播.这样我们就可以接收这个广播,然后启动我们的应用.广播接收器必须在xml里面配置,因为xml里面配置的广播接收器  是不随着应用的退出而退出的. 广播接收器: package com.yangshidesign.boot; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public c

  • 强制Android应用使用某个Locale的方法

    本文实例讲述了强制Android应用使用某个Locale的方法.分享给大家供大家参考.具体如下: 在开发国际化的 Android 应用时候,有时需要指定某个 Locale 1. java代码: String languageToLoad = "de"; Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = new Configuration(); con

  • Android通过应用程序创建快捷方式的方法

    本文实例讲述了Android通过应用程序创建快捷方式的方法.分享给大家供大家参考.具体如下: Android 快捷方式是桌面最基本的组件.它用于直接启动某一应用程序的某个组件. 一般情况下,可以在Launcher的应用程序列表上,通过长按某一个应用程序的图标在左面上创建改该应用程序的快捷方式.另外,还可以通过两种方式在桌面上添加快捷方式: 一:在应用程序中创建一个Intent,然后以Broadcast的形式通知Launcher创建一个快捷方式. 二:为应用程序的组件注册某一个符合特定条件的Int

  • 在Android的应用中实现网络图片异步加载的方法

    前言 其实很幸运,入职一周之后就能跟着两个师兄做android开发,师兄都是大神,身为小白的我只能多多学习,多多努力.最近一段时间都忙的没机会总结,今天刚完成了android客户端图片异步加载的类,这里记录一下(ps:其实我这里都是参考网上开源实现) 原理 在ListView或者GridView中加载图片的原理基本都是一样的: 先从内存缓存中获取,取到则返回,取不到进行下一步     从文件缓存中获取,取到则返回并更新到内存缓存,取不到则进行进行下一步     从网络上下载图片,并更新内存缓存和

  • Android实现长按back键退出应用程序的方法

    本文实例讲述了Android实现长按back键退出应用程序的方法.分享给大家供大家参考.具体分析如下: 最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序.在网上查找了很多资料,发现几乎没有这样的实现,大部分在处理时是双击back键来退出应用程序.参考了一下双击back键退出应用程序的代码,网上主流的一种方法是下面这种方法,实现起来比较简单: @Override public boolean onKeyDown(int keyCode, KeyEvent ev

  • Android应用中加入微信分享简单方法

    一.申请你的AppID http://open.weixin.qq.com/ 友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID 二.官网下载libammsdk.jar包 http://open.weixin.qq.com/download/?lang=zh_CN 三.将libammsdk.jar复制到工程的libs目录 四.在需要分享的Activity编写代码 复制代码 代码如下: private IWXAPI wxApi;  //实例化  wxApi = WXAPIF

  • android打开应用所在的市场页面进行评分操作的方法

    本文实例讲述了android打开应用所在的市场页面进行评分操作的方法.分享给大家供大家参考.具体实现方法如下: String mAddress = "market://details?id=" + getPackageName(); Intent marketIntent = new Intent("android.intent.action.VIEW"); marketIntent .setData(Uri.parse(mAddress )); startActi

  • Android应用开发工程目录作用介绍

    1.src:java源码文件,自己写的. 2.gen:自动生成的java文件,包名与主包名一致,ADT里自动生成的. (1)BuildConfig:配置文件,不能更改 (2)R:资源文件,索引管理资源文件,索引值都是int类型 3.Android:jar包 4.Android Private Libraries:第三方支持文件,4以后版本的类库 5.assets:原生的资源,此处的资源不会在gen中生成资源索引 6.bin:编译后的二进制文件: (1)dexedLibs支持库 (2)res:没有

  • Android完全退出应用程序的方法

    本文实例讲述了Android完全退出应用程序的方法.分享给大家供大家参考.具体如下: 在Android中,如果想退出Android程序,一般都是调用finish().System.exit(0).android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish().System.exit(0).android.os.Process.killPr

  • 让Android应用不被杀死(killer)的方法

    方法: 对于一个service,可以首先把它设为在前台运行: 复制代码 代码如下: public void MyService.onCreate() {         super.onCreate();         Notification notification = new Notification(android.R.drawable.my_service_icon,                "my_service_name",                 Sys

随机推荐