[android] 설치 오류 : INSTALL_PARSE_FAILED_MANIFEST_MALFORMED?

나는 안드로이드 장치에 존재 / 설치된 모든 응용 프로그램을 나열하는 작은 응용 프로그램을 개발 중입니다. 하지만 코드를 실행하는 동안 아래 오류가 발생합니다.

설치 오류 : INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

누구든지이 오류를 해결하는 데 도움을 줄 수 있습니다.



답변

이 오류에 대한 또 다른 이유가있을 수 있습니다. 속성

android:taskAffinity="string" 

다음과 같이 항상 점으로 시작해야합니다.

android:taskAffinity=".string" 


답변

활동 이름은 “.”로 시작해야합니다. 매니페스트 파일에서.


답변

이 오류는 패키지 이름에 대문자가 있었기 때문에 발생했습니다.

Com.Example.packagename

내가 그것을 다음과 같이 바꾼 후

com.example.packagename

해결되었다


답변

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 오류 코드는 manifest.xml 파일에서 많은 수의 오류를 감지하면 PackageParser.java에 의해 리턴됩니다.

오류를 분리하려면 logcat을 확인하십시오 ( ‘adb install foo.apk’명령을 수행 할 때). 내가 만난 문제에서 logcat에는 다음이 포함되었습니다.

W/ActivityManager(  360): No content provider found for permission revoke: file:///data/local/tmp/foo.apk
D/Finsky  (32707): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 6
D/Finsky  (32707): [1] WorkerTask.onPreExecute: Verification Requested for id = 6,   data=file:///data/local/tmp/foo.apk flags=112 fromVerificationActivity=false
W/PackageParser(32707): /data/local/tmp/foo.apk (at Binary XML file line #214): <provider> does not include authorities attribute
D/Finsky  (32707): [716] PackageVerificationService.getPackageInfo: Cannot read archive for file:///data/local/tmp/foo.apk in request id=6
D/Finsky  (32707): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 6
W/ActivityManager(  360): No content provider found for permission revoke: file:///data/local/tmp/foo.apk
I/PackageManager(  360): Copying native libraries to /data/app-lib/vmdl1205566381
W/PackageParser(  360): /data/app/vmdl1205566381.tmp (at Binary XML file line #214): <provider> does not include authorities attribute

위의 네 번째 줄에서 PackageParser가 manifest.xml 파일 “<provider>에 권한 속성이 포함되지 않음” 의 # 214 번째 줄에 불만을 표시하는 것을 볼 수 있습니다. . 해당 오류 코드를 반환하는 PackageParser의 모든 사례는 아래 목록을 참조하십시오. (PackageParser는 PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 오류 코드를 생성하는 유일한 클래스입니다)

필자의 경우 “<provider> does not include authority attribute”메시지는 parseApplication에 의해 호출 된 parseProvider 함수에서 PackagerParser.java의 2490 행에 의해 생성됩니다.


4.1.1 버전의 frameworks / base / core / java / android / content / pm / PackageParser.java에서 PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED는 이러한 메서드에서 이러한 행에서 참조됩니다. 소스 코드 행 번호 다음에 logcat에 인쇄 된 메시지 인 따옴표로 묶인 문자열이 오는 경우. 행 번호 다음에 해당 오류 코드를 리턴 한 코드 인 Java 표현식이 오는 경우 해당 함수를 조사하여 오류 메시지가 리턴 된 원인을 확인해야합니다. 몇 가지 경우에 오류 원인을 하나의 특정 메서드 호출로 격리 할 수 ​​없었습니다.

in parsePackage:
  536:  (only used in 'core apps' with no 'pkg')
  973:  "<manifest> has more than one <application>"
  1275: "Bad element under <manifest>: "      --if RIGID_PARSER

in parsePermissionGroup:
  1464: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission-group>", sa,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_name,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_label,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_icon,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_logo)
  1482: !parseAllMetaData(res, parser, attrs, "<permission-group>", perm,
    outError)

in parsePermission:
  1506: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission>", sa,
    com.android.internal.R.styleable.AndroidManifestPermission_name,
    com.android.internal.R.styleable.AndroidManifestPermission_label,
    com.android.internal.R.styleable.AndroidManifestPermission_icon,
    com.android.internal.R.styleable.AndroidManifestPermission_logo)
  1530: "<permission> does not specify protectionLevel"
  1541: "<permission>  protectionLevel specifies a flag but is not based on signature type"
  1548: !parseAllMetaData(res, parser, attrs, "<permission>", perm, outError)

in parsePersmissionTree:
  1572: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission-tree>", sa,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_name,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_label,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_icon,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_logo)
  1585: "<permission-tree> name has less than three segments: "+perm.info.name
  1595: !parseAllMetaData(res, parser, attrs, "<permission-tree>", perm, outError)

in parseInstrumentation:
  1625: new Instrumentation(mParseInstrumentationArgs, new InstrumentationInfo())
  1648: "<instrumentation> does not specify targetPackage"
  1654: !parseAllMetaData(res, parser, attrs, "<instrumentation>", a, outError)

in parseApplication:
  1678: buildClassName(pkgName, name, outError) == null
  1851: (Set by various other functions)
  1869: parseActivity(owner, res, parser, attrs, flags, outError, false, hardwareAccelerated) == null
  1878: parseActivity(owner, res, parser, attrs, flags, outError, true, false) == null
  1887: parseService(owner, res, parser, attrs, flags, outError) == null
  1896: parseProvider(owner, res, parser, attrs, flags, outError) == null
    2484: "Heavy-weight applications can not have providers in main process"
    2890: "<provider> does not incude authorities attribute"
  1905: parseActivityAlias(owner, res, parser, attrs, flags, outError) == null
  1917: parseMetaData(res, parser, attrs, owner.mAppMetaData, outError) == null
  1969: "Bad element under <application>: "+tagName

문제의 원인을 파악하기 위해 logcat과 소스를 살펴보아야하는 것은 유감입니다.


답변

활동 이름 확인매니페스트 파일에서

또는 주요 활동 / 클래스의 패키지 이름

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


답변

나는 같은 문제가 있지만 다음과 같은 프로세스를 호출 할 때 :

<service
    android:name="com.dexode.tama.AppService"
    android:process="screen" >
</service>

내가 변경할 때 :

<service
    android:name="com.dexode.tama.AppService"
    android:process=":screen" >
</service>

모든 것이 작동하기 시작합니다.


답변

나는 시간 전에 같은 문제를 만났는데, 안드로이드 문서에서 그들은 “:”를 접두사로 사용하지 않으면 android:process소문자를 사용해야한다고 말했지만 결코 그렇게 말한 적이 없다면 프로세스와 같은 패키지 여야한다고 말했다. 이름처럼com.company.app.services.MyService