관리 메뉴

플랫폼공작소 IT Blog

[하이브리드 앱] Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize 본문

mobile/Cordova

[하이브리드 앱] Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize

솜픽(Sompic) 플랫폼공작소 2016. 11. 1. 22:45
Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize


안녕하세요. 오레오 다이어리입니다.

하이브리드(cordova)앱을 개발하던 도중 위와 같은 오류가 발생하였습니다.




해결방법 : 오류내용을 자세히보고 어느 부분에서 오류가 발생하였는지 파악합니다.

저의 경우는 loadUrl(launchUrl)을 loadUrl("file:///android_asset/www/index.html"); 로 절대경로로 변경해서 해결하였습니다.


<!-- 상세한 오류내용 -->

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.globalbridge.tomyangel/com.globalbridge.tomyangel.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize(java.lang.String, org.apache.cordova.CordovaInterface, org.apache.cordova.CordovaWebView, org.apache.cordova.CordovaPreferences)' on a null object reference

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702)

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)

at android.app.ActivityThread.access$900(ActivityThread.java:177)

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)

at android.os.Handler.dispatchMessage(Handler.java:102)

at android.os.Looper.loop(Looper.java:145)

at android.app.ActivityThread.main(ActivityThread.java:5951)

at java.lang.reflect.Method.invoke(Native Method)

at java.lang.reflect.Method.invoke(Method.java:372)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize(java.lang.String, org.apache.cordova.CordovaInterface, org.apache.cordova.CordovaWebView, org.apache.cordova.CordovaPreferences)' on a null object reference

at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:171)

at org.apache.cordova.PluginManager.startupPlugins(PluginManager.java:97)

at org.apache.cordova.PluginManager.init(PluginManager.java:86)

at org.apache.cordova.CordovaWebViewImpl.init(CordovaWebViewImpl.java:115)

at org.apache.cordova.CordovaActivity.init(CordovaActivity.java:149)

at org.apache.cordova.CordovaActivity.loadUrl(CordovaActivity.java:224)

at com.globalbridge.tomyangel.MainActivity.onCreate(MainActivity.java:36) <!-- 주의

at android.app.Activity.performCreate(Activity.java:6289)

at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)

... 10 more



1. 주의해서 보아야할 오류!


at com.globalbridge.tomyangel.MainActivity.onCreate(MainActivity.java:36)


로그를 자세히 보면 MainActivity.java의 36번 줄에 문제가 있다고 하네요.


public class MainActivity extends CordovaActivity

{

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        loadUrl(launchUrl) <-- 오류가 발생한 위치!!

    }

}



2. 해결방법 : 


폰갭(코르도바)로 개발하셨나요? 그렇다면 


loadUrl(launchUrl) --> loadUrl("file:///android_asset/www/index.html"); 로 절대경로로 변경해서 시작해주세요 ^ ^


3. 고친 결과


public class MainActivity extends CordovaActivity

{

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        loadUrl("file:///android_asset/www/index.html"); <-- index.html

    }

}




구글에서 해당 내용이 검색이 안되서 한참 해맸었네요 ㅎㅎㅠ 도움이 되길 바랍니다.

감사합니다. 한 번씩 공감 눌러주세요~

질문 사항이 있다면 댓글 남겨주세요 ^ ^

0 Comments
댓글쓰기 폼