1

현재 최신 Android Studio/Gradle 도구로 시스템을 업데이트하려고하고 있으며 일부 오류가 만연되고 있습니다.두 라이브러리가 동일한 권한을 사용하고자 할 때 Manifest Merger가 실패합니다.

우리는 permission.C2D_MESSAGE, 즉 Firebase와 XtremePush를 사용하는 2 개의 라이브러리를 가지고 있습니다. 문제는 응용 프로그램을 빌드하자 마자 "레코드가 없습니다"오류로 병합을 완료 할 수 없어 매니페스트 합병이 실패합니다 (이것은 매니페스트 합병의 버그입니다) ". 두 정의는 외부 라이브러리에, 우리는 병합 설정 할 수없는 XtremePush

<permission 
    android:name=".permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name=".permission.C2D_MESSAGE" /> 

중포 기지

<permission android:name="${applicationId}.permission.C2D_MESSAGE" 
      android:protectionLevel="signature"/> 

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/> 

: 우리가 문제로 보았을 때

우리는 다음과 같은 정의를 발견 매니 페스트 세부 정보를 변경하거나 규칙을 변경하십시오. 또한 두 라이브러리는 현재까지 최신 버전이므로 각 개발자 측에서 해결책이없는 것으로 보입니다. 매니페스트에 권한을 설정해도 아무 것도 변경되지 않았습니다.

고마워요! 안드로이드 매니페스트 파일 추가에서

+1

"우리는 병합 규칙을 설정하거나 매니페스트 세부 정보를 변경할 수 없습니다"- 자신의 매니페스트에서 요소를 정의하고 IIRC : tools : overrideLibrary를 사용합니다. – CommonsWare

+0

지금은 두 속성 (사용 권한 및 사용 권한)은 오른쪽 태그와 나는 태그가 없습니다, 페이스 북 라이브러리 제외. 방금 라이브러리의 패키지 이름으로 다른 라이브러리를 만들고 overrideLibrary를 추가 할 수 있습니까? – Essi

+1

매니페스트에''과''요소를 넣고 원하는대로 설정하고, 이들 요소에'tools : overrideLibrary'를 포함시킵니다. 그럼 최선을 다하겠습니다. – CommonsWare

답변

0

은 내가 먼저 라이브러리가 충돌 할 수있는 찾는하여 문제를 해결했다. 필자는 패키지 이름이 'ie.imobile.extremepush'인 XtremePush와 패키지 이름이 'com.google.firebase'인 Firebase였습니다.

그럼 내가

<permission 
    android:name="${applicationId}.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" 
    tools:overrideLibrary="com.google.firebase, ie.imobile.extremepush" /> 

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" 
       tools:overrideLibrary="com.google.firebase, ie.imobile.extremepush"/> 

내 매니페스트가 충돌 한 두 매니페스트를 무시한다고 ..so 및 병합 문제의 결과 ..에 내 구현을 변경합니다. 그들은 이미 기능면에서 거의 동일했기 때문에 이것은 문제가되지 않았습니다.

1

는 :

<uses-sdk tools:overrideLibrary="com.example.firebase, com.example.xtremepush"/> 
+0

이것은''또는''요소에 영향을 미치지 않고''요소에만 영향을줍니다. – CommonsWare

+0

당신이 옳습니다, 저를위한 올바른 해결책은 초기 질문의 코멘트에 있습니다. – Essi