2012-03-02 1 views
3

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

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

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

+0

Возможный дубликат [Как проверить, если APK подписан или "отладки сборки"?] (Http://stackoverflow.com/questions/7085644/how-to-check-if-apk-is -signed-or-debug-build) – grebulon

ответ

1

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

http://daniel-codes.blogspot.com/2011/04/detecting-keystore-signature-in-code.html

+0

hmm this one кажется хорошей идеей – waqaslam

+0

404 - Не найдено – Hamidreza

+0

Этот ответ дает пример того, как это сделать: http://stackoverflow.com/a/11535593/2603965 – grebulon

0

Вы сможете разместить свое приложение в Android Market с помощью своего сертификата:.

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

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

+0

Да, я знаю, что нам нужно обновить приложение с тем же сертификатом. Но я ищу информацию о сертификате в приложении, например, имя, компанию, организацию, isDebug и т. Д. – waqaslam

2

Я использую

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

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

+0

, в каком пакете содержится «ApplicationUtils»? – waqaslam

+0

'ApplicationUtils' - мой собственный класс статических переменных/функций, который инициализируется в' Application.onCreate'. – techiServices

+1

Флаг отладки автоматически устанавливается для вас, когда APK построен с помощью отладочного ключа, поэтому вам не нужно устанавливать его в манифесте. – techiServices

0

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

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

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

+0

как я уже сказал, я не говорю о загрузке или обновлении приложения на рынке. Я просто хотел знать эти поля в коде. Есть ли возможность? – waqaslam