Android 애플리케이션을 설치하는 동안“Parse Error : 패키지를 구문 분석하는 데 문제가 있습니다.”


104

Android 애플리케이션 ( Parse Error : There is a problem parsing the package.) 을 설치하는 동안이 오류가 발생했습니다 . 다음 단계를 수행했습니다.

  1. 처음으로 응용 프로그램을 설치했는데 제대로 작동합니다.

  2. 기존 애플리케이션을 변경하고 Manifest 파일의 버전 번호를 변경했습니다.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
  3. 그런 다음 응용 프로그램을 내보내고 코드 서명 프로세스를 완료합니다. 이를 위해 프로젝트 노드를 마우스 오른쪽 버튼으로 클릭하고 내보내기를 선택합니다. 마법사가 표시됩니다. 단계를 따르고 코드 서명도 완료하십시오.

  4. ARDemo.apk 파일을받은 다음 이름을 ARDemo1.apk로 변경했습니다.

  5. 그런 다음이 apk 파일을 모바일 SD 카드로 배송하고 설치를 시작했습니다. 위의 오류가 발생했습니다.

내가 봤는데 매니페스트 파일의 압축을 풀 때 문제가 있다고 말했습니다.

아무도 나에게 무엇이 잘못 될 수 있는지 말해 줄 수 있습니까?


3에 버전 번호를 넣어야합니다. wikitude 웹 사이트의 일본어 자습서를 참조하십시오

안녕하세요 Ejder, 응답 해 주셔서 감사합니다. 내 문제는 이미 해결되었습니다. 내 실수는 "수동으로 apk 파일 이름을 변경했습니다"입니다. 위의 2에서 내 애플리케이션 버전 코드는 minsdk 값이 아닙니다. 나는 3. 감사 및 감사, Raghavendra K로 minsdk 값을 넣어
라구

4
이름 변경이 왜 문제가되었는지 생각하고 계십니까?
Mikey

안녕하세요 Mike, 수출 후 이름을 변경했습니다. 그것이 오류를주는 이유입니다. 내보낼 때 diff 이름을 지정하면 문제가되지 않습니다.
Raghu

1
Hello Cru, 버전 번호를 변경해도이 문제가 발생하지 않습니다. 내보내기를 한 후 apk 파일의 이름을 변경했습니다. 이 문제가 발생합니다.
Raghu

답변:


49

응용 프로그램을 처음 설치했을 때 정상적으로 작동한다고 말했습니다.

두 버전간에 설명한 단계의 유일한 차이점은 다음과 같습니다.

  1. 버전 번호 (나는 이것이 아무것도 깨뜨리는 데 관여하지 않았다고 가정)
  2. 코드
  3. .apk 파일의 이름

ARDemo1.apk 파일의 이름을 다시 ARDemo.apk로 바꾸고 (이전 버전을 백업해야 함) 도움이되는지 확인하십시오. 내 생각 엔 APK의 이름과 관련이 있다는 것입니다.

그래도 작동하지 않으면 문제의 원인이되는 apk 파일의 이름을 제거하고 2) 이전 버전을 다시 빌드하여 동일한 문제가 있는지 확인하여 조사를 시작할 수 있습니다. 이전 코드의 재 구축 된 버전에 문제가 없으면 코드와 관련이 있음을 알고 있습니다.

나는 그것이 당신을 어딘가에 데려 가기를 바랍니다.

건배, 조셉


안녕 조셉, 당신의 추측이 맞습니다. apk 파일의 이름을 이전 파일로 변경했습니다. 그것은 ..... 당신의 도움을 주셔서 대단히 감사합니다 ...... 작동
라구

안녕하세요, 비슷한 문제에 직면하고 있습니다. 웹 링크에서 애플리케이션을 다운로드하고 있습니다. 모바일 SDCard에 완벽하게 장착됩니다. 하지만 설치하려고 할 때이 오류가 표시됩니다. 나는 내 응용 프로그램에 서명하지 않았으며 기본적으로 Android 앱 개발의 초보자입니다. 어떤 종류의 도움을 주시면 감사하겠습니다 :)
varunrao321

2
비슷한 문제에 직면했고 케이스는 .gradle 파일의 최소 SDK 버전이었습니다. 그것과 장치의 버전에 대해 생각하면 도움이 될 것입니다.
user2881604 2015

아, APK 파일 이름 문제가 맞습니다 ...!
Arsal Imam 2015

apk 파일의 이름을 바꾸고 parse error사라졌지 만 지금 설치하려고 할 때 App not installed마시멜로 장치를 사용하고 있으며 아마도 여기에있는 문제와 동일한 것으로 표시됩니다. stackoverflow.com/questions/33930223/…
natsumiyu

45

설치시 최소한 다음과 같은 경우 지정된 오류가 발생할 수 있습니다.

  • 서명 후 패키지 이름 변경 : 서명 된 패키지와 동일한 이름 사용 (대신 Manifest에서 이름 조정)
  • 패키지가 상위 API 레벨에 대해 컴파일 됨 : Manifest 파일에서 API 레벨 수정
  • 패키지는 SD 카드에서 실행됩니다 . : 휴대폰 메모리에서 apk 파일을 실행 (설치)하거나 adb 명령을 사용하여 설치합니다.

이런 일을 할 수있는 다른 조건이 있다고 생각합니다. 예를 들어, 이메일로 설치할 때이 오류 메시지를 얻는 것에 대한 kansasian의 답변에 대한 내 의견을 참조하십시오.
M Katz

여기에 최고의 답변입니다. 나를 위해 그것은 서명 된 후 패키지의 이름을 변경했습니다. 감사합니다.
쟈니 Theunissen

나는 당신이 그것을 사용하여 설치할 수 있도록 루팅 된 전화가 필요하다고 가정하고 adb install있습니까?
abbood

아니요 : 루팅이 필요하지 않습니다 .하지만 보안 설정에서 알 수없는 소스를 활성화해야 할 수도 있습니다. (미확인)
jmu

알 수없는 소스 및 USB 디버깅 ... 참고 : 8 때때로 MTP 모드 만 PTP에 전화를 인식하지 못합니다 창에 ...
스파크

22

기기의 Android 버전이 앱이 컴파일 된 버전보다 낮을 때만 구문 분석 오류가 발생했습니다. 예를 들어 앱이 Android OS v2.2 용으로 컴파일되고 기기에 Android OS v2.1 만있는 경우 앱을 설치하려고 할 때 구문 분석 오류가 발생합니다.


나는 얼마 전에 그것에 맞았고, 알아내는 데 오랜 시간이 걸렸습니다!
olafure 2011-08-07

14

그 이유는 apk가 서명되지 않았기 때문입니다. apk가 서명되면 문제가 해결됩니다. http://ionicframework.com/docs/guide/publishing.html apk에 서명하는 지침의 링크를 사용하십시오.


여기에도 같은 문제가 있습니다. APK에 서명 한 후 예상대로 작동했습니다.
Dino Tw

3
이것은 Xamarin Android 빌드에서 저에게 문제였습니다. 먼저 서명되지 않은 아카이브 관리자에서 APK를 만듭니다. 그런 다음 "배포"를 선택하여 설치할 수있는 서명 된 APK를 만들어야합니다.
dodgy_coder

dodgy_coder가 작성한 내용에 추가 : for Xamarin.Android 7 이상 또는 이전 버전 .
Veverke

13

어둠 속에서 촬영하는 대신 다음을 통해 설치하여이 오류의 원인을 확인하십시오 adb.

adb -s emulator-5555 install ~/path-to-your-apk/com.app.apk

emulator-5555장치 이름으로 바꿉니다 . 다음을 사용하여 목록을 얻을 수 있습니다.

adb devices

실패하면 이유를 알려줍니다. 일반적인 이유 및 수정 :

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: 참조
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: 참조

성공하면 어떻게하나요?
Jacob Sánchez

1
이것은 나를 많이 도왔습니다. 감사!
Tgo1014


6

SDK 버전 2.1에서 apk 파일을 컴파일하고 내보내는 경우 SDK 내보내기 "2.1"미만의 Android 버전에서는 작동하지 않습니다. Android 소프트웨어는 이전 버전과 호환되지 않으며 이전 버전과 호환되지 않습니다. 예를 들어 C / C ++ 제품군에서 개발할 수있는 android NDK (안드로이드 SDK에 대한 추가 기능) 패키지를 사용하여 프로그래밍하는 경우 이는 Android 2.3 과만 호환되며, Android 버전 2.2 이하에서는 자바 빌드 만 지원합니다. 따라서 "패키지 구문 분석에 문제가 있습니다."오류가 발생합니다.


3

또 다른 가능성은 apk 파일을 애플리케이션 PRIVATE 폴더에 저장 한 다음 설치를 시도하는 것입니다 (코드에서 의도를 시작하여). 이 경우 의도를 시작할 때 패키지 구문 분석 오류가 발생합니다. 이 경우 발생하는 오류는 권한 문제에 관한 것입니다. 요점은 파일을 개인 폴더에 저장하는 것은 좋지 않다는 것입니다. 그러나 정말로 그렇게하려면 다운로드 할 때 MODE_WORL_READABLE에 파일을 작성해야합니다. MODE_WORLD_READABLE은 더 이상 사용되지 않으며이 솔루션은 몇 가지 보안 문제가 있으므로 최선이 아닙니다. 가장 좋은 방법은 파일을 외부 저장소에 저장하는 것입니다.


3

여기에서 키 저장소, 암호 등을 입력하도록 지시 한 내용을 반복하지 않습니다.

빌드-> 서명 된 APK 생성-> [입력] --- 다음 ---> 둘 다 선택

  • V1 (Jar 서명)
  • V2 (전체 APK 서명)

이유는 모르겠지만 적어도 내 상황에서는 효과가있었습니다.


1
나를 위해 일했습니다. 기본적으로 Android Studio MacOS에서는 선택되지 않았습니다.
vojta

2

이메일에서 .apk 패키지를 설치하는 동안 동일한 오류 (Parse Error, There is a problem parsing the package)가 발생했습니다. 타사 패키지 설치 프로그램 ApKatcher를 설치하여 문제를 해결할 수있었습니다.

http://www.addictivetips.com/mobile/install-android-apps-from-gmail/

ApKatcher가 유일한 솔루션은 아닙니다. 제 동료가 Astro File Manager를 설치하여 문제를 해결했습니다.

Android Marketplace에서 두 애플리케이션을 모두 찾을 수 있습니다.


여기에 다른 데이터 포인트를 추가하기 위해 이메일에서 설치할 때도이 오류가 발생했지만 코드와 adb를 사용하여 동일한 패키지를 설치하면 제대로 설치되었습니다. 불행히도 야후 메일을 통해 설치하려고했기 때문에 ApKatcher가 도움이 될 수 없다고 생각합니다.
M Katz

1

이 "빌려온"코드와 약간 수정 된 코드를 사용하는 유사한 문제 :

                Intent intent = new Intent(Intent.ACTION_VIEW);
                File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "myapp.apk");
                intent.setDataAndType(Uri.fromFile(newApk), "application/vnd.android.package-archive");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                result = true;

파일 생성을 다음과 같이 변경해야합니다 (파일 생성자에서 플러스 대신 쉼표, 다운로드 디렉토리 뒤에 '/'누락).

                    File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");

1

내 매니페스트 파일에 잘못된 태그 쌍이 있습니다.

<meta-data>
</meta-data>

기본적으로 meta-datapayu pdf 파일에서 잘못된 샘플 코드를 복사했을 때 들어 갔습니다. 쓰레기.


1

한 가지 이유는 활동 이름이 매니페스트에 정의되지 않았기 때문일 수 있습니다.

    <activity
          android:name=""
          ...>
</activity>

위의 코드는 나와 같은 문제를 일으켰습니다.


1

이 오류를 일으키는 또 다른 문제는 제한된 SD 카드 마운트 지점에서 APK를 설치하는 것 /mnt/media_rw/MicroSD입니다.

무제한 마운트 지점을 사용하십시오 /Removable/MicroSD.


1

가능한 새로운 독자를 돕기 위해 또 다른 이유는 매니페스트 파일의 오류 일 수 있습니다. 내가 잘못 입력 한 android:serviceandroid.service와 같은 오류로 실행 ...


1

@Veneet Reddy가 언급했듯이 ADB를 통해 설치하십시오.

파일을 지나 ADT Bundle / sdk / platform-tools로 이동하여 .apk관리자 권한으로 명령 프롬프트를 실행합니다.

그런 다음 실행 adb devices중인 연결된 장치 또는 에뮬레이터를 나열하는 명령을 실행합니다.

여기에 이미지 설명 입력

그런 다음 실행 adb -s yourDeviceID install yourApk.apk

여기에 이미지 설명 입력

참고 : 다시 설치하기 전에 이미 설치 한 경우 앱을 제거하십시오.


0

이 문제가있는 다른 사람에게이 오류가 발생한 유일한 경우는 Android 빌드 구성의 API 버전이 실제 장치에있는 것과 일치하지 않을 때였습니다.

Eclipse로 이동하여 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하십시오. Android를 선택하면 Android 빌드 대상이됩니다. 장치와 일치하도록 대상을 조정하고 문제가 해결되는지 확인하십시오.


0

올바른 minSDK 및 targetSDK 버전을 지정한 경우에도이 문제가 발생했습니다. 내 문제는 "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"Jellybean 장치에서 런처 활동 을 사용 하고 있다는 것입니다. 이 속성을 제거하면 작동했습니다.


0

몇 가지 다른 답변에서 언급했듯이 SD 카드에서 설치할 때 문제가있을 수 있습니다. 제 경우에는 이메일 첨부 파일을 통해 앱을 배포했는데 일반적으로 정상적으로 작동했습니다. 이메일을 열고 첨부 파일을 다운로드하고 (분명히 SD 카드로 이동 함) 다시 클릭하면 설치됩니다.

그러나 어느 날 작동하지 않았고 USB를 통해 개발 PC에 전화를 연결하고 SD 카드를 다른 모드에 배치했기 때문입니다. 따라서 해결책은 단순히 PC에서 전화를 분리 한 다음 이메일을 다시 보내고 첨부 파일을 다시 다운로드하는 것입니다. 또는 USB 연결을 "충전 전용"모드로 설정하여 SD 카드가 PC에 "연결"되지 않도록합니다.


0

장치의 로그를 확인하여 권한 문제와 같은 간단한 것인지 확인할 수도 있습니다. adb호스트 / 디버그 컴퓨터에서 사용하여 로그를 확인할 수 있습니다 .

adb logcat

또는 콘솔에 대한 액세스 권한이있는 경우 (또는 Android-x86을 사용할 때 Alt+ 를 입력하여 콘솔 가져 오기 F1) 다음 logcat명령 을 사용하여 로그를 확인할 수 있습니다 .

logcat

0

에서 내 보낸 apk 파일을 사용하여 동일한 문제가 발생했습니다 android‌ Tools > Export. 대신 bin 폴더 의 apk 파일을 사용 했는데 작동했습니다!

bin 폴더의 PS apk 파일은 Eclipse에서 응용 프로그램을 처음 실행 한 후에 생성됩니다.


0

build.gradle (Module : app) 내부에서 사용하십시오.

 minSdkVersion 14
    targetSdkVersion 28

최소 버전 14 및 28이 타겟팅 된 이유를 설명해야합니다. 또한 형식을 확인하십시오.)
m02ph3u5

0

Parse Error : There is a problem parsing the package. Android-8에서 테스트 한이 문제가 발생했습니다 . 동일한 서명을 가진 동일한 apk가 있습니다. 버전 번호와 버전 이름없이 모든 것이 동일했습니다. 앱을 수동으로 설치할 때 설치 중이었지만 프로그래밍 방식으로 업데이트를 다운로드하고 설치할 때이 오류가 발생했습니다. 그런 다음 문제의 원인을 찾았습니다.

canRequestPackageInstalls 를 확인하는 옵션이 있습니다 . () 이 메서드가 true를 반환하면 앱이 성공적으로 설치됩니다. 제 경우에는 항상 거짓을 반환했습니다.

그래서 먼저 이것을 확인한 다음 사용자가 업데이트를 다운로드하고 설치하도록합니다.

onCreate ()에서

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            if (!packageManager.canRequestPackageInstalls()) {
                    startActivityForResult(
                        Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
                            Uri.parse(String.format("package:%s", packageName))
                        ), requestCodeqInstallPackage
                    )
                } else {
                    canInstallPackage = true
                }

        }

onActivityResult ()에서

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
                if (packageManager.canRequestPackageInstalls()) {
                    canInstallPackage = true
                }
            } else {
                canInstallPackage = false
                Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
                    .show()
            }
    }

그런 다음 업데이트를 설치해야 할 때

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   if(canInstallPackage){
      doInstallAppProcess()
   }else{
        // generate error message
   }
}

누군가를 도울 수 있기를 바랍니다.



-1

동일한 'Parse error : There is a problem parsing the package'error message with my signed APKs as other others, but 나는 다른 이유로 인해 발생할 수 있다고 생각합니다.

이것을 테스트하기 위해 다음을 수행했습니다.

Windows 8.1 Eclipse ADT 빌드 설정 : v22.6.2-1085508

모든 기본값을 허용하는 전형적인 새로운 Helloworld 앱을 생성했습니다.

에뮬레이터와 라이브 장치에서 앱을 성공적으로 실행했습니다.

그런 다음 APK를 라이브 장치에 사이드로드하여 설치하고 성공적으로 실행했습니다.

bin 폴더에 782KB 크기의 apk가 생성되었습니다.

그런 다음 Helloworld 앱을 이전에 Google Play로 홍보하는 데 성공적으로 사용 된 내 키 저장소에서 앱을 서명하는 동일한 bin 폴더로 내보냈습니다.

385KB 크기의 APK를 생성했습니다 (원래 apk 대체).

내 기기에 apk를 사이드로드했는데 설치하려고했을 때 "Parse error : There is a problem parsing the package"라는 오류가 발생했습니다 (내 보낸 양식이 아닌 경우 사이드로드 및 설치 한 것과 동일한 패키지).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.