Android

Openssl is not recognized as an internal or external command

Openssl не распознается как внутренняя или внешняя команда

Я хочу сгенерировать подпись приложения для моего приложения, которое позже будет интегрировано с Facebook. В одном из руководств Facebook я нашел эту команду:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

В руководстве говорится, что при запуске этого cmd запустится мой процесс генерации подписи.

Однако эта команда выдает ошибку:

openssl is not recognized as an internal or external command

Как я могу избавиться от этого?

Переведено автоматически
Ответ 1

Хорошо на месте OpenSSL ... вы должны указать фактически путь к вашей папке OpenSSL, которую вы загрузили. Ваша фактическая команда должна выглядеть следующим образом:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\Users\abc\openssl\bin\openssl.exe" sha1 -binary | "C:\Users\abc\openssl\bin\openssl.exe" base64

Помните, путь, который вы будете вводить, будет путем, по которому вы установили OpenSSL.

Редактировать:

вы можете загрузить OpenSSL для Windows 32 и 64 разрядных версий по соответствующим ссылкам ниже:

OpenSSL для 64 бит

OpenSSL для 32 бит

Ответ 2

Пожалуйста, следуйте этим шагам, я надеюсь, что ваш ключ работает правильно:


  1. Шаг 1 Вам понадобится OpenSSL. Вы можете загрузить двоичный файл из проекта openssl для Windows в Google Code.


  2. Шаг 2 Распакуйте папку, затем скопируйте путь к bin папке в буфер обмена.


    Например, если файл разархивирован в папку C:\Users\gaurav\openssl-0.9.8k_WIN32, то скопируйте путь C:\Users\gaurav\openssl-0.9.8k_WIN32\bin.


  3. Шаг 3 Добавьте путь к вашей системной среде path. После того, как ваша PATH переменная среды установлена, откройте cmd и введите эту команду:


    C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64

    Введите свой пароль при появлении запроса. Если команда сработает, вам будет показан ключ.


Ответ 3

Используйте весь путь, вот так:

exportcert -alias androiddebugkey -keystore ~/.android
/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op
enssl.exe"
base64

У меня это сработало.

Ответ 4

ответ запоздалый, но он поможет таким ленивым людям, как я .. добавьте этот код в свой класс приложения, нет необходимости загружать openssl и указывать путь .. нужно только просто скопировать этот код .. и keyHash будет сгенерирован в журнале.

import com.facebook.FacebookSdk;
public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
printKeyHash();
}

private void printKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("jk", "Exception(NameNotFoundException) : " + e);
} catch (NoSuchAlgorithmException e) {
Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
}
}
}

и не забудьте добавить класс MyApplication в манифест:

<application
android:name=".MyApplication"
</application>
java android