Android Google Войти: Сборка выпуска приложения всегда получала «Ошибка: 12500», а сборка отладки - нет - PullRequest
0 голосов
/ 11 октября 2018

Итак, как было сказано в заголовке, я всегда терпел неудачу при входе с кодом ошибки "12500" каждый раз, когда использую релиз apk, но всегда успешно входил в систему при отладке apk.Уже обновлены службы Google Play до последней версии, а также повторно загружен файл google-services.json.Все еще не удалось войти по коду ошибки "12500" при выпуске apk.

Моя активность:

public class ActivityLogin extends AppCompatActivity {

    @BindView(R.id.iv_google)ImageView ivGPlus;

    private GoogleSignInClient mGoogleSignInClient;
    private final int RC_SIGN_IN = 123;
    private Context context;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);

        prepareGoogle();
        initUI();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                GoogleSignInAccount account = task.getResult(ApiException.class);
            } catch (ApiException e) {
                e.printStackTrace();
            }
        }
    }

    private void initUI(){
        ivGPlus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signInGoogle();
            }
        });
    }

    //login google
    private void prepareGoogle(){
        mAuth = FirebaseAuth.getInstance();
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getResources().getString(R.string.default_web_client_id))
                .requestServerAuthCode(getResources().getString(R.string.default_web_client_id))
                .requestEmail()
                .build();
        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
    }

    private void signInGoogle() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }
}

Я также уже отключил proguard:

android {
    compileSdkVersion 27
    buildToolsVersion '28.0.2'
    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 17
        versionName "1.1.9.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        jumboMode = true
    }
}

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Принятый ответ не помог в моем случае.Я проверял ключи SHA везде, и они соответствовали.Локальная отладка работала, локальный релиз работал, но после публикации приложения в магазине Play все версии выдавали ошибку 12500 при входе в Google (alfa, beta, production).

Поэтому я задал Google немного другой вопрос и наткнулся нана github обсуждаем реакцию native и вход в Google. Ответ от HadrienPierart помог мне найти и исправить проблему.

Изображение с его постом на github ниже: image with answer

0 голосов
/ 11 октября 2018

Так как он работает в вашей отладочной сборке, эта ошибка в основном связана с проблемой ключа SHA или имени пакета.Вы сказали, что у вас последняя версия google-services.json, поэтому я предполагаю, что вы включили отпечаток SHA для хранилища ключей релиза в свой проект Firebase?

Если нет, вам придется получить отпечаток пальца, как описано в этом ответе , а затем добавить его в проект Firebase и снова обновить google-services.json.

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

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

Я могу предоставить более подробную информацию в зависимости от вашей ситуации.Редактирование вашего вопроса и включение соответствующей части logcat при возникновении ошибки облегчит предоставление точных рекомендаций.

...