마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 파이(9.0) 버전에서 앱 종료됩니다.

0 추천
      //========================================================================================
      // GCM Start
      //========================================================================================
      String token = FirebaseInstanceId.getInstance().getToken();
      KiccPayNShop2Info.LOG_INFO(KiccPayNShop2Info.mTag, tag + " KICC Refreshed token : " + token, showFlag);

      try{
         ArrayList<BasicNameValuePair> postPrams = new ArrayList<BasicNameValuePair>();
         postPrams.add(new BasicNameValuePair("PHONE", mInfo.getPhoneNumber(ReceiveSchemeActivity.this)));
         postPrams.add(new BasicNameValuePair("GCM", token));
         postPrams.add(new BasicNameValuePair("VANTYPE", "5"));

         GCMSettingAsyn gcmSettingAsyn = new GCMSettingAsyn(ReceiveSchemeActivity.this, postPrams);
         if (Build.VERSION.SDK_INT >= 11) {
            gcmSettingAsyn.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mInfo.getGcmSenderURL());
         } else {
            gcmSettingAsyn.execute(mInfo.getGcmSenderURL());
         }
      }catch(Exception ex){ }
      //========================================================================================
      // GCM End
      //========================================================================================

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.apers.developer.animir.kiccpaynshop2bd, PID: 4372
    java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/message/BasicNameValuePair;
        at com.apers.developer.animir.kiccpaynshop2bd.ReceiveSchemeActivity.onCreate(ReceiveSchemeActivity.java:108)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.message.BasicNameValuePair" on path: DexPathList[[zip file "/data/app/com.apers.developer.animir.kiccpaynshop2bd-a2NWo6F-y3S3dXOqIIAIWg==/base.apk"],nativeLibraryDirectories=[/data/app/com.apers.developer.animir.kiccpaynshop2bd-a2NWo6F-y3S3dXOqIIAIWg==/lib/x86, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.apers.developer.animir.kiccpaynshop2bd.ReceiveSchemeActivity.onCreate(ReceiveSchemeActivity.java:108) 
        at android.app.Activity.performCreate(Activity.java:7136) 
        at android.app.Activity.performCreate(Activity.java:7127) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
I/Process: Sending signal. PID: 4372 SIG: 9
Application terminated.

안드로이드 9.0 폰에서 위와같은 에러로 앱 종료됩니다..
BasicNameValuePair이 문제되는거 같은데 뭐가문제 일까요?.. 소스는 길어서 일부만 올립니다.
재미있어 (120 포인트) 님이 2019년 2월 18일 질문

1개의 답변

+1 추천

Apache HTTP 클라이언트 지원 중단

Android 6.0에서는 Apache HTTP 클라이언트에 대한 지원이 제거되었습니다. Android 9부터는 이 라이브러리가 bootclasspath에서 제거되고 기본적으로 앱에서 사용할 수 없습니다.

Android 9 이상을 대상으로 하는 앱이 Apache HTTP 클라이언트를 계속 사용하려면 다음을 AndroidManifest.xml에 추가해야 합니다.

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

참고: android:required="false" 특성은 23 이하의 최소 SDK가 있는 앱에 필요합니다. API 레벨이 24보다 낮은 기기에서는org.apache.http.legacy 라이브러리가 제공되지 않기 때문입니다. (이 기기에서는 Apache HTTP 클래스가 bootclasspath에서 제공됩니다.)

앱에서 런타임 Apache 라이브러리를 사용하는 대신 APK에 org.apache.http 라이브러리의 자체 버전을 번들링할 수 있습니다. 이 방법을 사용하려면 런타임에서 제공되는 클래스와의 클래스 호환성 문제를 피하기 위해 ( Jar Jar 등의 유틸리티로) 라이브러리를 다시 패키징해야 합니다.

익명사용자 님이 2019년 2월 18일 답변
...