akexorcist / Localization

[Android] In-app language changing library
Apache License 2.0
983 stars 154 forks source link

crash on using webview #105

Open hsiami opened 3 years ago

hsiami commented 3 years ago

when I change locale and then use webview app crashes for the first time.

var webview = WebView(this)

java.lang.RuntimeException: Package not found: com.android.webview
    at android.webkit.WebViewDelegate.getPackageId(WebViewDelegate.java:191)
    at lb.a(PG:16)
    at ks.run(PG:14)
    at java.lang.Thread.run(Thread.java:919)
akexorcist commented 3 years ago

@hsiami Did you tried to test on Android Emulator or Physical device?

akexorcist commented 3 years ago

Refer to stack trace from https://stackoverflow.com/questions/47944586/package-not-found-com-android-chrome

java.lang.RuntimeException: Package not found: com.android.chrome
    at android.webkit.WebViewDelegate.getPackageId(WebViewDelegate.java:164)
    at com.android.webview.chromium.ig.L(WebViewDelegateFactory.java:16)
    at com.android.webview.chromium.WebViewChromiumFactoryProvider.h(WebViewChromiumFactoryProvider.java:177)
    at com.android.webview.chromium.se.run(WebViewChromiumFactoryProvider.java:5)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6809)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

This seems not related to my library. But I will keep this issue because crashing might caused by Resource class from my library.

/**
 * Returns the package id of the given {@code packageName}.
 */
public int getPackageId(Resources resources, String packageName) {
    SparseArray<String> packageIdentifiers =
            resources.getAssets().getAssignedPackageIdentifiers();
    for (int i = 0; i < packageIdentifiers.size(); i++) {
        final String name = packageIdentifiers.valueAt(i);
        if (packageName.equals(name)) {
            return packageIdentifiers.keyAt(i);
        }
    }
    throw new RuntimeException("Package not found: " + packageName);
}
hsiami commented 3 years ago

@hsiami Did you tried to test on Android Emulator or Physical device?

I tried on both Emulator and physical device

hsiami commented 3 years ago

Without your library app doesn't crash. and with your library app crashes only when I change the locale and then create an instance of WebView.

No idea yet?

hsiami commented 3 years ago

for solving webview problem I used this library instead: https://github.com/YarikSOffice/lingver

akexorcist commented 3 years ago

@hsiami Thank you for alternative library suggestion.

I will fix this issue soon. In Lingver library, there're some information about WebView issue that might useful for me to solve this issue.

omidahmadian commented 3 years ago

I also have this problem Did you find any solution for it?

@hsiami Thank you for alternative library suggestion.

I will fix this issue soon. In Lingver library, there're some information about WebView issue that might useful for me to solve this issue.

hsiami commented 3 years ago

I also have this problem Did you find any solution for it?

@hsiami Thank you for alternative library suggestion. I will fix this issue soon. In Lingver library, there're some information about WebView issue that might useful for me to solve this issue.

for solving webview problem I used this library instead: https://github.com/YarikSOffice/lingver

ashutoshgohil commented 3 years ago

It's crashing on webview randomly.

nagesh-kashyap-r commented 3 years ago

@akexorcist I can see you have resolved the crash issue (saw in commits) but when I try updating library from 1.2.9 -> 1.2.10 but ended with the following error. Could not find com.akexorcist:localization:1.2.10.

akexorcist commented 3 years ago

@nagesh-kashyap-r still in testing please wait until tomorrow

akexorcist commented 3 years ago

1.2.10 is live. please check on your project and don't forget to give me a feedback.

nagesh-kashyap-r commented 3 years ago

@akexorcist Thanks!!!! Crash issue is resolved!

huunhan18pro commented 3 years ago

I also get the same issue. Only for the first time. The library is very good. I could change any language on my app. But I got this issue. Hope you fix it soon. Ver 1.2.10 and Android 7.0

juliocbcotta commented 3 years ago

@akexorcist I have tried the 1.2.10 and I get the error when creating an instance of WebView or just setting it to debug. I tried to replicate it in the sample app in the repository, but I couldn't.

Do you have any tips ?

MobatiaArshad commented 3 years ago

This crash issue is still rising with version com.akexorcist:localization:1.2.10. The crash is only occurring when user try to open the webView with fresh install.

fukemy commented 3 years ago

for solving webview problem I used this library instead: https://github.com/YarikSOffice/lingver

lingver is better. Thanks

akexorcist commented 2 years ago

Note: From my investigation, this happen when user change the language to another language then open WebView.

https://user-images.githubusercontent.com/1949576/145110103-e990923d-ecd9-4148-b563-ef6204dd5d0e.mp4

Let me investigate more about it.

akexorcist commented 2 years ago

This issue was fixed in 1.2.11. Please check it out

kenkieo commented 2 years ago

i guess u just code locazation,and u just only Override application.getResources but not Override getAssets. why it happen by locazation, we can see the android framewrok : WebViewFactoryProvider.getProvider -> WebViewFactoryProvider.getProviderClass-> AppGlobals.getInitialApplication (the application u config manifest.xml)-> initialApplication.getAssets().addAssetPathAsSharedLibrary (this webview package info add to ).

akexorcist commented 2 years ago

Since AndroidX AppCompat has per-app language preferences for backward compatibility. Please migrate this library to AndroidX for more stability, compatibility, and longer support from Google team.

See Migrate to AndroidX guide

Thank you for your support