2014-11-24 2 views
2

Когда я запускаю свое приложение cordova в Android 4.3+, у меня нет проблем.NullPointerException on Cordova app

Но когда я запускаю свое приложение на android 4.1.2, у меня есть nullpointerexception и после первого действия над приложением, выход приложения.

Последний вызов функции обратного вызова:

var callback = function(){ 
     $location.path('/profils'); 
    }; 

и когда "/ Profils" запущен, метод getProfils услуга называется:

service.factory('HttpService', ['$http', '$location', 
    function($http, $location){ 
     return { 
      getProfils: function(){ 
       console.log('-> Get Profils'); 
       uiUtils.showLoader(); 
       return $http.get(URL). 
        then(
         function success(response) { 
          uiUtils.hideLoader(); 
          return response.data.Result; 
         }, 
         function error(reason) { 
          uiUtils.hideLoader(); 
          return false; 
         } 
        ); 
      }, 
... 

Вы можете увидеть StackTrace ниже:

I/Web Console(8801): -> Get Profils:14 

D/FirewallPolicy(2128): getURLFilterEnabled(true) 

D/FirewallPolicy(2128): isUrlBlocked - Policy disabled 

D/STATUSBAR-NetworkController(2265): refreshSignalCluster: data=0 bt=false 

I/ClipboardServiceEx(2128): Send intent for dismiss clipboard dialog inside hideCurrentInputLocked() ! 

E/dalvikvm(8801): Class lookup Landroid/webkit/WebResourceResponse; attempted with exception pending 

W/dalvikvm(8801): Pending exception is: 

I/dalvikvm(8801): java.lang.NullPointerException: 

I/dalvikvm(8801): at android.content.res.AssetManager.openAsset(Native Method) 

I/dalvikvm(8801): at android.content.res.AssetManager.open(AssetManager.java:315) 

I/dalvikvm(8801): at android.webkit.BrowserFrame.inputStreamForAndroidResource(BrowserFrame.java:849) 

I/dalvikvm(8801): at android.webkit.BrowserFrame.shouldInterceptRequest(BrowserFrame.java:939) 

I/dalvikvm(8801): at android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method) 

I/dalvikvm(8801): at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113) 

I/dalvikvm(8801): at android.os.Handler.dispatchMessage(Handler.java:99) 

I/dalvikvm(8801): at android.os.Looper.loop(Looper.java:137) 

I/dalvikvm(8801): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:1067) 

I/dalvikvm(8801): at java.lang.Thread.run(Thread.java:856) 

I/dalvikvm(8801): DALVIK THREADS: 

I/dalvikvm(8801): (mutexes: tll=0 tsl=0 tscl=0 ghl=0) 

I/dalvikvm(8801): 

I/dalvikvm(8801): "main" prio=5 tid=1 NATIVE 

I/dalvikvm(8801): | group="main" sCount=0 dsCount=0 obj=0x40eb2508 self=0x40e01b08 

I/dalvikvm(8801): | sysTid=8801 nice=0 sched=0/0 cgrp=apps handle=1075203888 

I/dalvikvm(8801): | schedstat=(645744814 318546031 1496) utm=45 stm=19 core=1 

I/dalvikvm(8801): #00 pc 0000da70 /system/lib/libc.so (epoll_wait+12) 

I/dalvikvm(8801): #01 pc 00014899 /system/lib/libutils.so (android::Looper::pollInner(int)+96) 

I/dalvikvm(8801): #02 pc 00014b01 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+104) 

I/dalvikvm(8801): #03 pc 00063553 /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22) 

I/dalvikvm(8801): #04 pc 0001df30 /system/lib/libdvm.so (dvmPlatformInvoke+112) 

I/dalvikvm(8801): #05 pc 0004d183 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+394) 

I/dalvikvm(8801): #06 pc 00027360 /system/lib/libdvm.so 

I/dalvikvm(8801): #07 pc 0002bc68 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180) 

I/dalvikvm(8801): #08 pc 0005fbb7 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+374) 

I/dalvikvm(8801): #09 pc 00067165 /system/lib/libdvm.so 

I/dalvikvm(8801): #10 pc 00027360 /system/lib/libdvm.so 

I/dalvikvm(8801): #11 pc 0002bc68 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180) 

I/dalvikvm(8801): #12 pc 0005f8f1 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+272) 

I/dalvikvm(8801): #13 pc 00049773 /system/lib/libdvm.so 

I/dalvikvm(8801): #14 pc 0004c4a1 /system/lib/libandroid_runtime.so 

I/dalvikvm(8801): #15 pc 0004d663 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+390) 

I/dalvikvm(8801): #16 pc 00000dcf /system/bin/app_process 

I/dalvikvm(8801): #17 pc 00017123 /system/lib/libc.so (__libc_init+38) 

I/dalvikvm(8801): #18 pc 00000b34 /system/bin/app_process 

I/dalvikvm(8801): at android.os.MessageQueue.nativePollOnce(Native Method) 

I/dalvikvm(8801): at android.os.MessageQueue.next(MessageQueue.java:125) 

I/dalvikvm(8801): at android.os.Looper.loop(Looper.java:124) 

I/dalvikvm(8801): at android.app.ActivityThread.main(ActivityThread.java:4921) 

I/dalvikvm(8801): at java.lang.reflect.Method.invokeNative(Native Method) 

I/dalvikvm(8801): at java.lang.reflect.Method.invoke(Method.java:511) 

I/dalvikvm(8801): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 

I/dalvikvm(8801): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 

I/dalvikvm(8801): at dalvik.system.NativeStart.main(Native Method) 

I/dalvikvm(8801): 

Есть ли у кого-нибудь идеи, как его решить?

У меня есть больше журналов, если необходимо, но я думаю, что этого достаточно ... но, возможно, не потому, что я не могу найти причину проблемы.

UPDATE:

После очистки всего кода, я нашел точный источник ошибки:

<img src="{{profil.selection ? profil.template.selectedPicture : profil.template.picture}}"/> 

На данный момент, не знает, если ошибка происходит из тройных или URL-адресов ...

+0

можете ли вы разместить код? –

+0

да, конечно;) –

+0

попытаться опубликовать код AssetManager. –

ответ

4

Ошибка была на самом деле не явная, но я нашел проблему:

Я использую AngularJs в моем Cordova приложение и попытался кадрир заложить эту следующую строку:

<img src="{{profil.selection ? profil.template.selectedPicture : profil.template.picture}}"/> 

НО:

"Использование угловой разметки, как {{}} хэш в атрибуте SRC не работает права"

от AngularJS документация: https://docs.angularjs.org/api/ng/directive/ngSrc

Итак, я мой браузер и во время моих тестов и dev у меня не было проблем с этим, но когда я построю его с помощью кордовы, m y приложение разбилось и вышло с ошибкой выше.

Я думаю, что это ошибка, связанная с комментарием @JoffreyMaheo: https://issues.apache.org/jira/browse/CB-2391, потому что {{hash}} не интерпретируется, url изображения не распознается и исключает исключение нулевого указателя.

Чтобы исправить это: мы должны использовать «нг-Src», и все работы с ним:

<img ng-src="{{profil.selection ? profil.template.selectedPicture : profil.template.picture}}"/> 

Я думаю, что эта проблема возникает в Кордове, когда URL-адрес содержит специальные символы.

Итак, будьте осторожны со специальными символами в URL-адресах!

+0

Это тоже моя проблема! Отныне я обожаю вас Джеффри Лаллоу – leonprou