10 votes

Comment mettre à jour webview sans passer par le Google Play store ?

J'ai un appareil Android 5.1, où j'ai un accès complet à Root. Pour cet appareil, j'ai écrit un application cordova et l'a installé comme un application système . Il fonctionne bien, mais la version webview d'Android 5.1 est très ancienne et présente malheureusement quelques bogues.

Je sais que vous pouvez mettre à jour la vue web avec le playstore, mais malheureusement l'appareil n'a pas les applications google et donc je ne suis pas en mesure de mettre à jour la vue web avec le playstore.

Donc ma question est : Comment puis-je mettre à jour la vue web du système sans google playstore ?

Je l'ai déjà essayé avec une approche plutôt naïve, qui a malheureusement tué mon application :

J'ai téléchargé la dernière version webview.apk depuis le playstore ( https://play.google.com/store/apps/details?id=com.google.Android.webview&hl=de )

Alors je l'ai fait :

adb remount
adb push webview.apk /system/webview/
adb reboot

Maintenant, j'obtiens des erreurs lorsque j'essaie de lancer mon application Cordova et l'application elle-même ne s'affiche plus :

I/CordovaActivity( 1931): Apache Cordova native platform version 6.1.1 is starting
D/CordovaActivity( 1931): CordovaActivity.onCreate()
E/WebViewFactory( 1931): Failed to list WebView package libraries for loadNativeLibrary
E/WebViewFactory( 1931): android.content.pm.PackageManager$NameNotFoundException: com.android.webview
E/WebViewFactory( 1931):        at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:281)
E/WebViewFactory( 1931):        at android.webkit.WebViewFactory.getWebViewNativeLibraryPaths(WebViewFactory.java:282)
E/WebViewFactory( 1931):        at android.webkit.WebViewFactory.loadNativeLibrary(WebViewFactory.java:397)
E/WebViewFactory( 1931):        at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:103)
E/WebViewFactory( 1931):        at android.webkit.WebView.getFactory(WebView.java:2194)
E/WebViewFactory( 1931):        at android.webkit.WebView.ensureProviderCreated(WebView.java:2189)
E/WebViewFactory( 1931):        at android.webkit.WebView.setOverScrollMode(WebView.java:2248)
E/WebViewFactory( 1931):        at android.view.View.<init>(View.java:3595)
E/WebViewFactory( 1931):        at android.view.View.<init>(View.java:3689)

Quel est le moyen correct de mettre à jour le webview.apk sans google playstore ?

5voto

Guillermo Gomez Points 423

L'application Google WebView est très différent de celui des autres. Vous ne peut pas utiliser Package Installer pour l'installer ou le mettre à jour de manière courante. Vous devez le faire vous-même (comme pour mon Lollipop 5.1.1).
Voici la façon dont je l'ai fait plusieurs fois. Exécutez dans un shell Root. Vous pouvez avoir besoin de busybox para unzip (ou le faire avec un gestionnaire de fichiers).

#!/system/bin/sh
rm -r /data/app/com.google.android.webview*
mkdir /data/app/com.google.android.webview-1
cd /data/app/com.google.android.webview-1
cp /path/to/your/webview.apk ./base.apk
unzip base.apk 'lib/armeabi-v7a'
mv lib/armeabi-v7a lib/arm
# Do the following 2 lines only if you're on an ARM64 ROM
unzip base.apk 'lib/arm64-v8a'
mv lib/arm64-v8a lib/arm
#
find . -type f -exec chmod 644 {} +
find . -type d -exec chmod 755 {} +
find . -exec chown 1000.1000 {} +

Alternativement, vous pouvez essayer de créer un répertoire /system/priv-app/WebView et mettez le nouvel APK là. N'oubliez pas de vous débarrasser de l'ancien .

3voto

Dmitry Tupikin Points 11

Vous essayez de mettre à jour "com.google.Android.webview", mais votre système utilise la version "com.Android.webview".

1voto

ppoffice Points 51

Vous ne pouvez pas remplacer com.android.webview avec com.google.android.webview puisqu'il s'agit de deux paquets différents et que le nom du paquetage par défaut de webview du système est codé en dur dans le fichier framework-res.apk . Veuillez consulter https://Android.stackexchange.com/a/139415/284780 pour une explication et https://Android.stackexchange.com/a/233282/284780 pour la solution.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X