51Testing软件测试论坛

标题: 如何通过Android CTS测试—testPackageSignatures [打印本页]

作者: frances720    时间: 2016-5-12 10:55
标题: 如何通过Android CTS测试—testPackageSignatures

原文:http://blog.csdn.net/wys7250578/article/details/8959480

解决此问题时在网上搜了很多资料,但都很零碎,没有找到非常完整的解决方案,在此把解决方法和大家分享一下:

CTS测试的错误如下:

junit.framework.AssertionFailedError: These packages should not be signed with a well known key: [com.Android.pts.browser] at android.security.cts.PackageSignatureTest.testPackageSignatures  ........      (PackageSignatureTest.Java:62)

错误原因是APK使用了默认签名,需要使用自定义的签名。


android源码编译使用的默认key:

android\build\target\product\security\    .pk8   .pem 文件


解决方法:

1. 生成加密key文件:

参考: http://blog.csdn.net/chen_chun_guang/article/details/6325833

将/android_src/development/tools/生成的key   COPY到android\build\target\product\security\


2. 编译android源码

重新编译android源码,此时out/.../system/app下就是重新编译的APK

重新构建NFS挂载使用的根文件系统再次测试


3. 单个APK的签名

重新测试时发现com.android.pts.browser包还是PASS不了,查看out/.../system/app/下的APK文件,发现在步骤2中,

out/.../system/app/PtsDeviceBrowserLauncher.apk没有重新生成,还是原来的。

不知道为啥没有重新生成? 我的解决方法是对此APK单独签名,将signapk.jar   及自签名密匙,platform.pk8  platform.x509.pem COPY到下面路径并

cd  /out/target/product/xxxx/obj/APPS/PtsDeviceBrowserLauncher_intermediates

文件位置:可以在platform/build/target/product/security/中找到platform.pk8 platform.x509.pem等签名文件,对应不同的权限。
signapk.jar:由/platform/build/tools/signapk/编译产出,可以在/out/host/linux-x86/framework/中找到。

然后运行下面命令 :
#   java -jar signapk.jar  platform.x509.pem  platform.pk8  package.apk.unsigned  PtsDeviceBrowserLauncher.apk

package.apk.unsigned  表示未签名的该APK文件, 重新签名后为PtsDeviceBrowserLauncher.apk  //签过名的APK重新签名可能会出错,最好找到未签名的APK


其他参考:
签名:
java -jar signapk.jar platform.x509.pem platform.pk8 MyDemo.apk MyDemo_signed.apk 得到具有对应权限的APK

优化APK:
zipalign -v 4 MyDemo_signed.apk MyDemo_new.apk

查循APK是否优化过:
zipalign -c -v 4 MyDemo.apk







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2