Les Google Play services de ressources n'ont pas été trouvés - les Notifications Push
Je suis à la suite de la Google Tutoriel pour installer de Notification Push sur Android.
Je suis en utilisant Google Play Services Module parce que le Google Cloud Messaging a été récemment obsolète.
Tutoriel : Google Cloud Messaging - Google Play Services
Mais quand je lance l'application j'ai cette erreur :
11-06 13:37:30.119 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.119 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.119 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1816 (common_google_play_services_install_title) in Lcom/google/android/gms/R$string;
11-06 13:37:30.119 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1812 (common_google_play_services_enable_title) in Lcom/google/android/gms/R$string;
11-06 13:37:30.119 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1826 (common_google_play_services_update_title) in Lcom/google/android/gms/R$string;
11-06 13:37:30.119 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1823 (common_google_play_services_unsupported_title) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1820 (common_google_play_services_network_error_title) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1818 (common_google_play_services_invalid_account_title) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1813 (common_google_play_services_install_button) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1810 (common_google_play_services_enable_button) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1824 (common_google_play_services_update_button) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1815 (common_google_play_services_install_text_tablet) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1814 (common_google_play_services_install_text_phone) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1811 (common_google_play_services_enable_text) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1825 (common_google_play_services_update_text) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1822 (common_google_play_services_unsupported_text) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1819 (common_google_play_services_network_error_text) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1817 (common_google_play_services_invalid_account_text) in Lcom/google/android/gms/R$string;
11-06 13:37:30.129 20097-20097/com.thedjnivek.android.emarchespublics W/dalvikvm﹕ VFY: unable to resolve static field 1821 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
11-06 13:37:30.139 20097-20097/com.thedjnivek.android.emarchespublics E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
11-06 13:37:30.220 20097-20097/com.thedjnivek.android.emarchespublics E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
Vous pouvez voir ici mon code source
//basic import ...
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.gcm.GoogleCloudMessaging;
public class AppMainTabActivity extends FragmentActivity {
public static final String EXTRA_MESSAGE = "message";
public static final String PROPERTY_REG_ID = "registration_id";
private static final String PROPERTY_APP_VERSION = "appVersion";
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
/**
* Substitute you own sender ID here. This is the project number you got
* from the API Console, as described in "Getting Started."
*/
String SENDER_ID = "7984****78";
/**
* Tag used on log messages.
*/
static final String TAG = "GCMDemo";
TextView mDisplay;
GoogleCloudMessaging gcm;
AtomicInteger msgId = new AtomicInteger();
SharedPreferences prefs;
Context context;
String regid;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
//Check device for Play Services APK. If check succeeds, proceed with
// GCM registration.
if (checkPlayServices()) {
gcm = GoogleCloudMessaging.getInstance(this);
regid = getRegistrationId(context);
if (regid.isEmpty()) {
registerInBackground();
}
} else {
Log.i(TAG, "No valid Google Play Services APK found.");
}
}
//You need to do the Play Services APK check here too.
@Override
protected void onResume() {
super.onResume();
checkPlayServices();
}
/**
* Check the device to make sure it has the Google Play Services APK. If
* it doesn't, display a dialog that allows users to download the APK from
* the Google Play Store or enable it in the device's system settings.
*/
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
/**
* Gets the current registration ID for application on GCM service.
* <p>
* If result is empty, the app needs to register.
*
* @return registration ID, or empty string if there is no existing
* registration ID.
*/
private String getRegistrationId(Context context) {
final SharedPreferences prefs = getGCMPreferences(context);
String registrationId = prefs.getString(PROPERTY_REG_ID, "");
if (registrationId.isEmpty()) {
Log.i(TAG, "Registration not found.");
return "";
}
//Check if app was updated; if so, it must clear the registration ID
//since the existing regID is not guaranteed to work with the new
//app version.
int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
int currentVersion = getAppVersion(context);
if (registeredVersion != currentVersion) {
Log.i(TAG, "App version changed.");
return "";
}
return registrationId;
}
/**
* @return Application's {@code SharedPreferences}.
*/
private SharedPreferences getGCMPreferences(Context context) {
//This sample app persists the registration ID in shared preferences, but
//how you store the regID in your app is up to you.
return getSharedPreferences(AppMainTabActivity.class.getSimpleName(),
Context.MODE_PRIVATE);
}
/**
* @return Application's version code from the {@code PackageManager}.
*/
private static int getAppVersion(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
//should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
/**
* Registers the application with GCM servers asynchronously.
* <p>
* Stores the registration ID and app versionCode in the application's
* shared preferences.
*/
private void registerInBackground() {
new AsyncTask() {
@Override
protected Object doInBackground(Object[] objects) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
regid = gcm.register(SENDER_ID);
msg = "Device registered, registration ID=" + regid;
//You should send the registration ID to your server over HTTP,
//so it can use GCM/HTTP or CCS to send messages to your app.
//The request to your server should be authenticated if your app
//is using accounts.
sendRegistrationIdToBackend();
//For this demo: we don't need to send it because the device
//will send upstream messages to a server that echo back the
//message using the 'from' address in the message.
//Persist the regID - no need to register again.
storeRegistrationId(context, regid);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
//If there is an error, don't just keep trying to register.
//Require the user to click a button again, or perform
//exponential back-off.
}
return msg;
}
@Override
protected void onPostExecute(Object o) {
mDisplay.append(o + "\n");
Logger.logit("onPostExecute","o");
}
}.execute(null, null, null);
}
/**
* Sends the registration ID to your server over HTTP, so it can use GCM/HTTP
* or CCS to send messages to your app. Not needed for this demo since the
* device sends upstream messages to a server that echoes back the message
* using the 'from' address in the message.
*/
private void sendRegistrationIdToBackend() {
//Your implementation here.
PushNotification.register(OpenUDID.value(this), regid, new AsyncHRHandler(this, true) {
@Override
public void onSuccess(String s) {
super.onSuccess(s);
}
});
}
/**
* Stores the registration ID and app versionCode in the application's
* {@code SharedPreferences}.
*
* @param context application's context.
* @param regId registration ID
*/
private void storeRegistrationId(Context context, String regId) {
final SharedPreferences prefs = getGCMPreferences(context);
int appVersion = getAppVersion(context);
Log.i(TAG, "Saving regId on app version " + appVersion);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(PROPERTY_REG_ID, regId);
editor.putInt(PROPERTY_APP_VERSION, appVersion);
editor.commit();
}
}
Cependant Google Play Service a été ajouté.
Sur mon paramètres du module de
AndroidManifest.xml
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- For notification push -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<permission android:name="com.thedjnivek.android.emarchespublics.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.thedjnivek.android.emarchespublics.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.thedjnivek.android.emarchespublics" />
</intent-filter>
</receiver>
<service android:name=".GcmIntentService" />
<activity
android:name=".fragmentmodule.AppMainTabActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize|stateVisible">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.PDFActivity"
android:label="activity_pdf"/>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIza**************mGE4Mq88"/>
</application>
construire.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile: "com.google.android.gms:play-services:3.+"
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
Je ne sais pas où est le problème. Quelqu'un ne peut pas m'aider ? Merci beaucoup !
double possible de Impossible de résoudre le symbole "GoogleCloudMessaging' MCG
Tous les jours de Google est de faire changer et briser les vieilles versions qui rend parfois les développeurs complète avec déchirures. Que Dieu soit avec vous, mon cher frère 🙂
Tous les jours de Google est de faire changer et briser les vieilles versions qui rend parfois les développeurs complète avec déchirures. Que Dieu soit avec vous, mon cher frère 🙂
OriginalL'auteur Kevin Machado | 2013-11-06
Vous devez vous connecter pour publier un commentaire.
Je n'ai jamais joué avec les notifications push, mais je travaille avec les google play services. Vous devez ajouter le google-play-services_lib dossier comme un projet distinct et l'ajouter comme une bibliothèque dans votre projet Android.
Importer dans google-play-services_lib (cochez également la copie de l'espace de travail).
Vous pouvez trouver la google-play-services_lib dans le
sdk floder -> extra > google -> google_play_services -> libproject -> google-play-services_lib
Définir le projet nouvellement créé comme une bibliothèque (dans eclipse -> build path -> android -> cochez la case "est la Bibliothèque" et ok.
Aller vers le chemin de compilation de votre projet android -> android -> add -> ajouter google-play-services_lib de la bibliothèque que vous venez de créer.
J'espère que cela aide (-:
OriginalL'auteur Drorasta
Vous ne devez pas copier google-play-services.jar directement dans votre projet. Au lieu de cela, vous devez ajouter une référence à
bibliothèque de t votre projet. Pour ce faire, veuillez suivre le point 4 de ces instructions. Dans Android Studio, il devrait être similaire à la procédure.
La raison en est GPS de la bibliothèque se réfère à sa propre (com.google.android.gms.R) les ressources de fichier JAR.
google-play-services_lib
comme un module dans mon projet et j'ai enlevé le pot mais je sais que je ne peux pas compiler :com.google.android.gms.* not found.
:sJ'ai ajouté de nouveau le .jar et maintenant je peux le compiler. Le
google-play-services_lib module
est toujours dans mon projet, mais la même erreur s'est produite.Ressemble vous avez manqué quelque chose. Vous avez certainement ne devez pas copier les fichier jar manuellement. Essayez de suivre ces les étapes pour intégrer la bibliothèque de votre projet.
OriginalL'auteur Alexey Ivanov
J'étais en train de travailler sur ce problème depuis quelques jours. Mes problèmes étaient liés à la Voiture de l'API, mais la solution serait potentiellement aider indépendamment de la partie qui l'API Google que vous utilisez.
- Je utiliser IntelliJ IDÉE pour mon développement en tant que bien. Ce que j'avais à faire était d'appeler les paramètres du Projet et ajouter un peu de dépendances supplémentaires à mon application. Référencement Google Play Services fichier JAR est une partie de cela. Pour obtenir les ressources, vous devez faire référence au projet lui-même, de sorte qu'il compile le R de classe pour Jouer à des Services. Voici ce que j'ai fait:
Pour info, j'ai l'google-play-services.jar référence mondiale de la bibliothèque, je peux donc l'inclure facilement dans n'importe quel projet, mais ce n'est pas nécessaire pour que cela fonctionne. Vous avez juste besoin d'avoir les références à la fois le POT et le module pour la compiler le Jeu des Services de ressources de l'objet.
Dans mon proguard.fichier cfg pour mon projet d'appli, j'ai ajouté ceci:
Le Proguard de configuration modification peut ne pas être nécessaire.
Après que j'ai fait ces changements, il est venu ensemble assez rapidement. Je dirai que Google documentation de l'API pour la mise en œuvre des appels à leur API est TRÈS de la date et de l'incorrect. Ils mentionnent le référencement du POT, mais vous ne dites rien sur le référencement le projet. Je me souviens vaguement de leur dissimuler le fait que vous avez besoin pour compiler un pot manuellement vous-même, mais il n'est pas clair exactement ce que vous besoin de faire référence dans leur documentation.
Espérons que cette aide!
OriginalL'auteur Peter Adams