怎么改手机app的app签名的软件哪个好 app老是被某软件检测到 如何修改过检 但是功能不变

安卓APP在应用市场加固之后怎么重新签名?_百度知道
安卓APP在应用市场加固之后怎么重新签名?
我有更好的答案
可以使用jarsigner对未签名的加固包进行签名。建议使用之前对APP签名时使用的keystore对加固包进行签名jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore [your_key_store_path] -signedjar[signed_apk_name] [usigned_apk_name] [your_key_store_alias]your_key_store_path:密钥所在位置的绝对路径signed_apk_name:签名后安装包名称usigned_apk_name:未签名的安装包名称your_key_store_alias:密钥的别名 就是你自己创建的 .keystore文件平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以Debug面试进行编译的,因此ADT根据会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签名。给apk签名可以带来以下好处:应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同。应用程序模块化:Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。代码或者数据共享:Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。
采纳率:100%
  Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系。证书不是用于用户控制哪些程序可以安装。证书不需要授权中心来签名:Android应用程序上使用自己签名的证书是完全允许且普遍的。
  理解Android应用程序签名有以下几个重要点:
  ·所有的应用程序都必须签名。系统不会安装任何一个不签名的程序。
  ·你可以使用自己的证书来签名。不需要任何授权中心。
  ·当你要为最终用户发布你的应用程序的时候,你必须签入一个合适的密钥。你不可以发布程序的时候还使用SDK工具签入的DebugKey。
  ·系统只在安装应用程序的时候检测证书的有效期。如果应用程序在安装之后证书失效了,那么,应用程序还是可以正常工作。
  ·你可以使用标准工具——Keytool和Jarsigner——生成Key并签名apk文件。
  ·一旦你为应用程序签名了,一定要使用zipalign工具来优化最终的APK包。
  Android系统不会安装和运行没有正确签名的应用程序。这条规则适用于任何运行Android系统的地方,不管是真机还是模拟器。正是由于这个原因,你必须在模拟器或真机上运行/调试程序之前对程序进行签名。
  当你调试应用程序时,AndroidSDK工具替你对应用程序进行了签名。Eclipse的ADT插件和Ant编译工具都提供了两种签名模式——Debug模式和Release模式。
  ·当开发和测试时,你可以使用Debug模式。在Debug模式下,编译工具使用内嵌在JDK中的Keytool工具来创建一个keystore和一个key(包含公认的名字和密码)。在每次编译的时候,使用这个DebugKey来为apk文件签名。由于密码是公认的,在每次编译的时候,也不需要提示你输入keystore和key密码。
  ·当你的程序准备发布时,你必须在Release模式下,使用密钥来为apk文件签名。有以下两种方式可以做到:
  1.命令行中使用Keytool和Jarsigner。在这个方法中,首先需要编译出一个未签名的apk。然后使用Jarsigner(或相似的工具),用你的密钥为apk手动签名。如果你没有合适的密钥,你可以运行Keytool来手动生成自己的keystore/key。
  2.使用ADT导出向导。如果你使用Eclipse/ADT插件进行开发,你可以使用导出向导来编译程序,生成密钥(如果需要),并为apk签名,所有这些操作都在导出向导中。一旦你的程序签名了,别忘了运行zipalign来为apk进行额外的优化。
  签名策略
  应用程序签名的某些方面可能会影响应用程序的开发,特别是你打算一起发布多个应用程序的时候。一般来说,推荐的策略是在整个应用程序寿命内,所有的程序签上相同的证书。
  以下有几个应该这么做的原因:
  ·应用程序升级——当你对应用程序进行升级时,如果你想用户平稳的升级,那么,你就需要签上相同的证书。当系统安装一个升级应用程序时,如果新版本的证书与老版本的证书有匹配的话,那么,系统才会允许进行升级。如果你没有为版本签上合适的证书,当你安装时,你需要给应用程序指定一个新的包名——在这种情况下,用户安装的新版本,被当作是一个全新的应用程序。
  ·应用程序模块化——如果应用程序请求的话,Android系统允许签有相同证书的应用程序运行在相同的进程里,这样,系统就会把它们看作是一个单一的应用程序。用这种方法配置应用程序,用户可以选择更新每个独立的模块。
  ·代码/数据权限共享——Android系统提供了基于签名的权限检查,因此,如果应用程序间签有特定的证书,那么,它们之间可以共享功能。通过多个程序签有相同的证书并且使用基于签名的权限检查,你的程序可以以一种安全的方式共享代码和数据。还有一个决定签名策略的重要因素是:如何设定key的有效期。
  ·如果你计划支持单个应用程序的升级,你需要确保你的key拥有一个超过期望的应用程序生命周期的有效期。推荐使用25年或更多的有效期。当你的key过期了,用户也就不能平稳的更新到新版本了。
  ·如果你想给多个无关的应用程序签上相同的key,那么,你必须确保key的有效期超过所有应用程序所有版本的生命周期,包括将来有可能添加到这一阵营的程序。
  ·如果你想在AndroidMarket上发布你的程序,key的有效期必须在以后。Market服务器强制这一要求,目前是保证用户可以平稳的更新他们的程序。
  当你设计应用程序时,一定要把这些点记在脑子里,并且使用一个合适的证书来为应用程序签名。
  签名的基本设定
  在你开始之前,你必须保证Keytool对SDK编译工具来说是可利用的。多数情况下,你可以通过设置JAVA_HOME环境变量来告诉SDK编译工具如何找到Keytool。另外,你还可以添加JDK中Keytool的路径到PATH的变量里。
  如果你在Linux上开发,并且使用GNU编译器来编译Java,那么,请确保系统是使用JDK中的Keytool,而不是gcj。如果Keytool已经在你的PATH中,它有可能是对/usr/bin/keytool的符号链接。在这种情况下,检查符号链接的目标,确保它是指向JDK中的Keytool。如果你打算对公众释放你的应用程序,你还需要Jarsigner工具。Jarsigner和Keytool都包含在JDK中。
  Debug模式下签名
  Android编译工具提供了Debug签名模式,使得开发和调试应用程序更加容易,而且还满足Android系统的签名要求。当使用Debug模式编译你的app时,SDK工具会调用Keytool工具自动创建一个Debug的keystore和key。然后,这个Debugkey会自动用于apk的签名,这样,你不需要使用你自己的key来为应用程序包签名。
  SDK工具使用预先定义好的名字/密码来创建Debugkeystore/key:
  ·Keystore名字:“debug.keysotre”
  ·Keystore密码:“android”
  ·Key别名:“androiddebugkey”
  ·Key密码:“android”
  ·CN:“CN=AndroidDebug,O=Android,C=US”
  如果需要的话,你可以改变Debugkeystore/key的位置和名字,或者提供一个自定义的Debugkeysotre/key。然而,任何自定义的Debugkeystore/key必须使用和默认Debugkey(上面描述的)相同的名字和密码。(在Eclipse/ADT中,操作Windows&Preferences&Android&Build实现。)
  注意:你不能将签有Debug证书的应用程序发布给公众。
  Eclipse用户
  如果你在Eclipse/ADT下开发(并且已经按照上面描述的“签名的基本设定”配置了Keytool),Debug模式下签名默认是开启的。当你运行或是调试应用程序时,ADT会使用Debug证书进行签名,并运行zipalign,然后安装到选择的模拟器或是连接上的设备。整个过程不需要你参与,前提是ADT能访问Keytool。
  Ant用户
  如果你使用Ant来编译你的apk文件,需要在ant命令中添加debug选项来开启Debug签名模式(假设你正在使用由android工具生成build.xml文件)。当你运行antdebug来编译你的程序时,编译脚本会生成一个keystore/key,并为apk进行签名。然后脚本会使用zipalign工具对apk进行对齐处理。整个过程不需要你参与。阅读“其它IDE下开发:Debug模式编译”来了解更多的信息。
  Debug证书过期
  Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。
  当证书失效时,你会得到一个编译错误,在Ant编译上,
  错误如下:
  debug:
  [echo]Packagingbin/samples-debug.apk,andsigningitwithadebugkey...
  [exec]DebugCertificateexpiredon8/4/083:43PM
  在Eclipse/ADT中,Android控制台上你将会看到一个相似的错误。
  为了解决这个问题,只需要删掉debug.keystore文件即可。AVD默认存储的位置在:~/.android/avd(OSX和Linux),C:DocumentsandSettings\.android(WindowsXP),C:Users\.android(WindowsVista)。
  当下一次编译的时候,编译工具会重新生成一个新的keystore和Debugkey。
  Release模式下签名
  当你的程序准备好释放给其它用户时,你必须:
  1.获取一个合适的密钥
  2.在Release模式下编译程序
  3.使用密钥签名程序
  4.对齐APK包
  如果你是使用Eclipse/ADT插件开发,你可以使用导出向导来完成编译、签名和对齐等操作。在整个过程中,导出向导甚至还可以生成一个新的keystore和密钥。因此,如果你使用Eclipse,你可以直接跳到“使用EclipseADT编译和签名”。
  获取一个合适的密钥为了进行程序的签名,首先,你必须有一个合适的密钥。密钥指:
  ·个人持有。
  ·代表个人、公司或组织实体的身份。
  ·拥有一个有效期。有效期推荐超过25年。
  如果你在AndroidMarket上发布你的程序,需要注意一点的是:程序的有效期需要在之后。你不能上传一个应用程序,而它的key的有效期是在这个日期之前。
  ·不是由AndroidSDK工具生成的Debugkey。
  如果你没有一个合适的key,你一定要使用Keytool来生成一个。如“基本设定”中描述的,确保Keytool可用。
  为了用Keytool生成一个key,使用keytool命令并传入一些可选参数,如下表所示。
  警告:确保密钥的安全。一定要阅读“安全储存你的密钥”中讨论如何确保你的密钥的安全以及这对你和用户为何如此重要。尤其是,当你生成你的密钥时,一定要为keystore和key使用强密码。
本回答被提问者和网友采纳
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。app覆盖安装的时候,会改变UID吗? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。87被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答
pkg.applicationInfo.uid = pkgSetting.appId;
2.如果系统在app覆盖安装的时候UID发生变化了,是否合理?如果不合理,那不合理的原因是什么?-----------不合理,你要知道,data下面的/data/data/com.douniwan.douniwan/这个目录的owner就是你的应用(你可以ls下看看),如果uid发生变化了,那么新安装后的应用就会对这个目录失去读写权限而导致问题(如保存的用户数据没了),因此,在Pms安装的过程中会对这一异常进行检查,如果发现UID不匹配就会报INSTALL_FAILED_UID_CHANGED异常。然后,对于特殊的app,如system的app,pms还会进行修复,也就是删除这个更新的包,重新创建data目录。3.目前对于Android系统而言,有没有一些明确的规则规定系统ROM在app覆盖安装时,UID必须固定不发生变化------如上面的回答1和2,现有的机制就是保证。sharedUid是另外一种权限控制,不要搞混淆了。126 条评论分享收藏感谢收起Installation return code: this is passed to the {@link IPackageInstallObserver} by
{@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
the new package is assigned a different UID than it previously held.
意思就是说在安装包时如果出现UID不一致,就会安装失败。实际测试使用统一包名应用进行升级、覆盖安装UID不变,卸载后重新安装UID会递增,与之前不同。2.既然前面说到了一般情形,那肯定有例外。一般任何两个应用的UID都不一样,那如果多个应用要互相访问数据(数据库,缓存,文件),而除此之外的其他应用不能访问他们的数据该怎么办?这时候android:sharedUserId(AndroidManfest.xml manifest节点属性)就发挥作用了。只要不同应用使用了相同的android:sharedUserId,而且,使用了相同的秘钥进行签名。就可以完成之前说的应用之前数据互访。上面说的有什么卵用呢?考虑这样一种情形,手机安装了A的1.0版本、B的1.0版本,都没有定义android:sharedUserId属性。安装完成后UID都不同。现在2.0版本之后都带上这个属性。根据Android官方描述,他们升级后要UID要一样,那肯定A或者B肯定有一个的UID要变化。什么?你说有可能根本不能升级,那这就是个bug了。可以报给Google了。另外一种情形,就是root后可以通过使用root权限,人为修改uid。理论上绝对可信。但是貌似没什么卵用。要拿数据的话,直接拿就行了,没必要多此一举改uid。当然,这是特殊情形。3.根据公开的文档,并没有像JVM一样有虚拟机规范类似的东西。只是代码逻辑里面是不变的。具体细节官方PackageManagerService(附录第一个链接),代码太壮观了。比如PackageManagerService的scanPackageLI方法太壮观了。。。具体是如何实现的,我觉得可研究下apk的安装过程,里面会有详细的介绍。然后也没必要纠结于UID的变化,一般是不会变化的,除了一些特殊情形。参考PackageManagerService android:sharedUserId 查看UID工具(此程序只能查看运行中应用的UID) 102 条评论分享收藏感谢收起写回答当前位置: &
功能机英文改中文
Xshell是一个功能强大的终端模拟器,支持SSH、SFTP、telnet,rlogin和串行。人们可以使用它
柠檬云是功能强大的专业财务软件,凭证账簿、报表生成、固定资产、辅助核算、打印备
柠檬云是功能强大的专业财务软件,凭证账簿、报表生成、固定资产、辅助核算、打印备
柠檬云是功能强大的专业财务软件,凭证账簿、报表生成、固定资产、辅助核算、打印备
迅捷PDF文档翻译软件是一款功能强大的PDF文件翻译工具,可将整篇PDF文档翻译成
PDF拆分软件是一款功能强大的PDF拆分工具.有了它,我们不仅可以把一个PDF文件拆
Xshell是一个功能强大的终端模拟器,支持SSH、SFTP、telnet,rlogin和串行。人们可以使用它
Xmanager是市场领先的PCX服务器,它能够带来Windows平台下强力的虚拟应用技术,能够
PDF修改器是一款可以对PDF文件进行随意修改的PDF修改软件.其中包括修改PDF文字
软件简介:迅捷PDF图片提取工具是一款专业提取PDF文件中所有图片的免费工具,支
【亿愿中外文科研资料检索下载管理】检索下载CNKI知网中文期刊数据库、中国优秀
【亿愿中文期刊论文下载管理】检索下载CNKI知网中文期刊数据库、中国优秀博硕士
“亿愿Science自然文献资料检索下载管理”方便下载sciencemag.org网站的英文资料,可以
“亿愿Nature自然文献资料检索下载管理”专业下载和管理Nature.com网站的英文资料,可
亿愿SCI文献资料检索下载管理的作用就是针对SCI网站,批量下载检索到的英文资
“亿愿Wiley文献资料检索下载管理”专业下载和管理onlinelibrary.wiley.com网站的英文资
【亿愿中英法德俄日韩语文件内容批量互相翻译】内置4种翻译引擎,自动识别文件
功能介绍:【亿愿英文文件名批量翻译修改】采用4种翻译引擎,自动识别文件名的语
迅捷CAJ转换成PDF转换器是一款专业又实用的CAJ转PDF转换工具,支持批量转换、功能
迅捷CAJ转WORD软件可一键轻松完成CAJ转换成WORD操作,且格式不变.软件功能强大、操
小编推荐-功能机英文改中文我的苹果手机在电脑上安装软件不成功,老是显示安装失败已经签名的资源被修改或删除,怎么办?_百度知道
我的苹果手机在电脑上安装软件不成功,老是显示安装失败已经签名的资源被修改或删除,怎么办?
我有更好的答案
下载ipa文件用itools安装(要先安装itunes)itunes安装不成功解决办法是: 按照如下顺序,使用“添加/删除程序”卸载 iTunes 和相关软件(一定要按顺序做):1. iTunes 2. QuickTime 3. Apple Software Update 4. Apple Mobile Device Support 5. Bonjour 6. Apple Application Support
为您推荐:
其他类似问题
苹果手机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。安卓手机怎么更改软件的名字。_百度知道
安卓手机怎么更改软件的名字。
我有更好的答案
可以使用apk修改器更改安卓软件的名称,在string字符串中找到app_name或其他,属性值就是软件名称,点击修改后保存,(这里还可以修改软件其他字符)然后进行签名后安装。也可以使用re管理器或mt管理器,纯手打哦!
建议先root
不懂继续追问哦!谢谢
采纳率:81%
来自团队:
手机上改不了的。。要用电脑上的软件改。,参考下面这个:
为您推荐:
其他类似问题
您可能关注的内容
安卓手机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 app签名的软件哪个好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信