L'autorisation IntelliJ SQLite refusée sur Android Lollipop, a travaillé avant

J'ai mis à jour Nexus 7 avec Android Lollipop et maintenant je ne peux pas accéder à SQLite db à partir d'IntelliJ IDEA 14. Tout fonctionnait bien avant la mise à jour de Lollipop, même si Android n'était pas enracinée, je pouvais accéder à db d'IntelliJ (mais pas le tirer via ADB) . L'erreur que j'obtiens lorsque j'essaie de me connecter est:

Data Source Synchronization Error Cannot synchronize 'SQLite': run-as: exec failed for /data/local/tmp/intellij_native_tools/get_modification_time Error:Permission denied 

Je suis conscient que SQLite a été mis à jour dans lollipop de 3,7 à 3,8. Qu'est-ce qui pourrait causer ce type d'erreur? Création de DB erronée, anciens pilotes de base de données, autre chose?

  • Comment rechercher une valeur dans firebase Android
  • Ne pas lancer d'activité en raison de ClassNotFoundException
  • Comment créer un écran coulissant (comme dans Tweetdeck) dans Android?
  • Comment utiliser onPause avec Android?
  • Comment faire un double gradient avec XML (iphone like)
  • Méthode SQLite .query (), la clause WHERE ne prend que des chaînes à guillemets multiples
  • Android Studio Error: (3, 0) Plugin avec id 'com.android.application' introuvable
  • Écran de démarrage animé avec Phonegap
  • ActionBar MenuItem Divider
  • Exploiter checkCallingOrSelfPermission () pour l'attaque d'escalade de privilège
  • Comment aligner le centre de l'onglet actif dans Android Layout coulissant
  • Exécuter l'application deux fois au travail
  • 2 Solutions collect form web for “L'autorisation IntelliJ SQLite refusée sur Android Lollipop, a travaillé avant”

    adb root ne résout rien, il y a de nombreux problèmes en fonction de l'environnement. Voici comment je l'ai travaillé sur l'émulateur où j'ai passé beaucoup de mon temps de développement.

    Tout d'abord, nous devons résoudre l'erreur. Les only position independent executables (PIE) are supported en only position independent executables (PIE) are supported avec le binaire.

    Obtenez la source de l'outil de plugin pour Android:

     git clone https://android.googlesource.com/platform/tools/adt/idea cd idea/android/ultimate/get_modification_time/jni 

    Appliquer le patch suivant:

     diff --git a/android/ultimate/get_modification_time/jni/Application.mk b/android/ultimate/get_modification_time/jni/Application.mk index a252a72..bdf815d 100644 --- a/android/ultimate/get_modification_time/jni/Application.mk +++ b/android/ultimate/get_modification_time/jni/Application.mk @@ -1 +1,2 @@ APP_ABI := all +APP_PLATFORM := android-16 

    Vous devrez configurer une version récente de NDK à construire, j'ai déjà installé ndk-r10d.

     # ndk-r10d ndk-build cd .. cp -R libs native_tools # update the intellij plugin with whatever arch you plan to use # adjust the path here to where your copy of IntelliJ is located zip -u ~/local/apps/idea/plugins/android/lib/android-ultimate.jar native_tools/*/get_modification_time 

    Notez que vous devez mettre à jour le chemin d'accès dans cette dernière ligne pour indiquer votre installation IntelliJ locale. Par exemple, sur MacOS, ce sera:

     zip -u /Applications/IntelliJ\ IDEA\ 14.app/Contents/plugins/android/lib/android-ultimate.jar native_tools/*/get_modification_time 

    Redémarrez IntelliJ.

    Ensuite, nous remplacerons /system/bin/run-as sur l'émulateur. Créez le script suivant localement et nommez run-as .

     #! /system/bin/sh INTELLIJ_NATIVE="/data/local/tmp/intellij_native_tools/get_modification_time" if [ "$2" = "$INTELLIJ_NATIVE" ]; then cd /data/local/tmp/intellij_native_tools ./get_modification_time "$3" else /system/bin/run-as.org "$@" fi 

    Démarrez l'émulateur. Après avoir démarré, mettez-le à jour.

     # update run-as after start adb shell mount -o remount,rw /system adb shell mv /system/bin/run-as /system/bin/run-as.org adb push ./run-as /system/bin/run-as 

    Maintenant, vous pouvez vous synchroniser avec le contenu de votre coeur.

    Notez que vous voudrez peut-être suivre les progrès sur le bug en amont qui ont simplement été choqués après avoir publié ceci: https://youtrack.jetbrains.com/issue/IDEA-137606

    Si vous avez un périphérique enraciné, essayez la commande

     adb root 

    Après cela, la synynchronisation IDEA a réussi.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.