Почему я получаю сообщение об ошибке «java.lang.SecurityException: неизвестное имя пакета вызова «com.google.android.gmsJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему я получаю сообщение об ошибке «java.lang.SecurityException: неизвестное имя пакета вызова «com.google.android.gms

Сообщение Anonymous »

Прошел почти месяц с тех пор, как я не могу найти ответ на свою проблему.
Создание APK приведет к успеху, когда дело доходит до входа в Firebase.
Проблемы возникают только тогда, когда я подписываюсь его и загрузите своим частным тестерам.
Я получу исключение api:10 после попытки войти в систему.
Беспокойство заключается в том, что мне всегда не удается получить услугу от брокера. (Спросите Gemini) java.lang.SecurityException: неизвестное имя пакета вызова «com.google.android.gms».
Каждый раз.
вот моя сборка gradle:app с некоторыми изменениями для сокрытия конфиденциальных данных.

Код: Выделить всё

plugins {
id("com.android.application")
id("com.google.gms.google-services") // Correct Google Services plugin
id("com.google.firebase.appdistribution") version "5.0.0"

}

android {
namespace = "com.XX.XX"
compileSdk = 34

defaultConfig {
applicationId = "com.XX.XX"
minSdk = 33
targetSdk = 36
versionCode = 22
versionName = "2.4"
}

signingConfigs {
create("release") {
storeFile = file("C:/XX/release.keystore")
storePassword = "XX"
keyAlias = "XX"
keyPassword = "XX"
}
}

buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}

dependencies {
implementation(libs.play.services.location)
implementation(libs.appcompat.v160)
implementation(libs.material.v180)
implementation(libs.activity.v172)
implementation(libs.constraintlayout.v214)

// Firebase BOM to manage versions
implementation(platform(libs.firebase.bom))
implementation(libs.google.firebase.analytics)
implementation(libs.com.google.firebase.firebase.messaging)
implementation(libs.google.firebase.firestore)
implementation(libs.com.google.firebase.firebase.auth)
implementation(libs.play.services.auth)
implementation(libs.play.services.location)

// Testing dependencies
testImplementation(libs.junit)
androidTestImplementation(libs.junit.v115)
androidTestImplementation(libs.espresso.core.v351)
}

мои настройки.gradle

Код: Выделить всё

pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}

dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") } // Include Jitpack if necessary
}
}

rootProject.name = "XX"
include(":app")
мой build.gradle

Код: Выделить всё

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
//alias(libs.plugins.android.application) apply false
id("com.android.application") version "8.7.3" apply false
id("com.google.gms.google-services") version "4.4.2" apply false
id("com.google.firebase.appdistribution") version "5.0.0"  apply false

}
и моя основная деятельность.

Код: Выделить всё

package com.XX.XX;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.messaging.FirebaseMessaging;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private FirebaseAuth mAuth;
private FirebaseFirestore db;
private SignInButton googleSignInButton;
private TextView authStatusTextView;
private FirebaseAnalytics mFirebaseAnalytics;
int GOOGLE_SIGN_IN = 10210;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
Log.d(TAG, "MainActivity Created");

// Check for Google Play services
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (googleApiAvailability.isUserResolvableError(resultCode)) {
googleApiAvailability.getErrorDialog(this, resultCode, 9000).show();
} else {
Log.e(TAG, "Google Play Services not available.");
finish(); // Or handle the error appropriately
return;
}
}

FirebaseApp.initializeApp(this);
mAuth = FirebaseAuth.getInstance();
db = FirebaseFirestore.getInstance();

googleSignInButton = findViewById(R.id.googleSignInButton);
authStatusTextView = findViewById(R.id.authStatusTextView);
googleSignInButton.setOnClickListener(v -> signInWithGoogle());

checkNotificationPermission();
checkCurrentUser();
}

private void checkCurrentUser() {
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null) {
authStatusTextView.setText("Logged in as: "  + currentUser.getDisplayName());
googleSignInButton.setVisibility(View.GONE);
checkFCMToken(currentUser.getUid());
} else {
authStatusTextView.setText("Not logged in");
googleSignInButton.setVisibility(View.VISIBLE);
}
}

private void checkNotificationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.POST_NOTIFICATIONS}, 1001);
} else {
subscribeToGlobalTopic();
}
} else {
subscribeToGlobalTopic();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1001 && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
subscribeToGlobalTopic();
} else {
showToast("Notification permission required for updates.");
}
}

private void signInWithGoogle() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
GoogleSignInClient googleSignInClient = GoogleSignIn.getClient(this, gso);
googleSignInClient.signOut();
Intent signInIntent = googleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, GOOGLE_SIGN_IN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GOOGLE_SIGN_IN) {
Task task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}

private void handleSignInResult(Task task) {
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account.getIdToken());
} catch (ApiException e) {
Log.w(TAG, "Google sign-in failed", e);
showToast("Authentication Failed." + e);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}

private void firebaseAuthWithGoogle(String idToken) {
mAuth.signInWithCredential(GoogleAuthProvider.getCredential(idToken, null))
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
checkCurrentUser();
} else {
showToast("Authentication Failed.");
}
});
}

private void checkFCMToken(String userId) {
DocumentReference docRef = db.collection("users").document(userId);
docRef.get().addOnCompleteListener(task -> {
if (task.isSuccessful() && task.getResult() != null) {
if (task.getResult().exists()) {
if (!task.getResult().contains("fcm_token")) { // Check for *absence* of token
getFCMToken();
} else {
subscribeToGlobalTopic();
}
} else {
getFCMToken();
}
} else {
Log.w(TAG, "Error checking FCM token", task.getException());
}
});
}

private void subscribeToGlobalTopic() {
FirebaseMessaging.getInstance().subscribeToTopic("global")
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Log.w(TAG, "Subscribe to global topic failed", task.getException());
}
});
}

private void getFCMToken() {
FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
if (task.isSuccessful() &&  task.getResult() != null) {
String token = task.getResult();
saveTokenToFirestore(token);
} else {
Log.w(TAG, "Fetching FCM token failed", task.getException());
}
});
}

private void saveTokenToFirestore(String token) {
FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
Map data = new HashMap();
data.put("fcm_token", token);
db.collection("users").document(user.getUid())
.set(data)
.addOnFailureListener(e -> Log.w(TAG, "Saving FCM token failed", e));
}
}

private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}`
Мой google json правильный и соответствует клятве Firebase + Google.
Я схожу с ума. Буду рад помощи
Все перепробовал, но ошибка так и не исчезла.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ackage-nam
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»