Как программно узнать, подписано ли приложение с помощью отладочного или экспортного сертификата? - PullRequest
3 голосов
/ 02 марта 2012

Как следует из названия, я хотел бы знать, есть ли способ (код) узнать, что созданное приложение (.apk) подписано сертификатом Debug или Export сертификат?Я хотел бы проверить это внутри своего приложения, чтобы иметь возможность включать / отключать некоторые функции в зависимости от типа сертификата.

Интересно, как Google проверяет эту информацию в то время, когда мы загружаем приложение в Market через Developer?Консоль?

Любое предложение / код будет принят.

Ответы [ 4 ]

2 голосов
/ 02 марта 2012

Я использую

final PackageInfo info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
ApplicationUtils.DEBUG_ENABLED = (info.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;

, чтобы включить / отключить ведение журнала отладки.

1 голос
/ 07 марта 2012

Я нашел этот ресурс, который описывает, что вы пытаетесь решить. На этой странице описано, как получить информацию о хранилище ключей в коде.

http://daniel -codes.blogspot.com / 2011/04 / обнаружения-хранилище ключей подписи в-code.html

0 голосов
/ 02 марта 2012

Название компании называется Android Debug для ключа отладки.

Запустите jarsigner -verbose -certs -verify против отладки и подписанных приложений.Для отладочного apk вы увидите, что поле CN называется Android Debug.Для вашего подписанного apk это имя подписавшего ключа.

Вероятно, именно так Google и другие рынки проверяют ключ при загрузке на рынок.Как говорили другие, вы не сможете загрузить приложение, подписанное ключом отладки, на рынок, поэтому я не знаю, зачем вам нужно это проверять.

0 голосов
/ 02 марта 2012

Вы сможете развернуть свое приложение на Android Market только с вашим Экспортным сертификатом.

АМ отклонит ваш APK, если он не подписан тем же сертификатом, который вы использовали при загрузке вашего первого APK.

Похоже, вы можете получить информацию об Открытом ключе из пакета: javax.security.auth.Subject (попробуйте метод getPublicCredentials ()). Я сам этим не пользовался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...