2016-11-22 56 views
3

如何在清單中擁有多個相同類型的提供者?由於cordova相機插件帶來了文件提供程序,我們的應用程序無法再構建。在清單中,我們有以下內容:與Cordova的manifest.xml中的重複FileProvider錯誤

<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider"> 
    <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> 
</provider> 

<provider android:authorities="com.our.app.dev.fileprovider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider"> 
    <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths"/> 
</provider> 

第一個條目來自相機插件,第二個來自我們的插件之一。

在生成過程中,以下錯誤occurres:

AndroidManifest.xml:44:5-46:16 Error: 
Element provider#android.support.v4.content.FileProvider at AndroidManifest.xml:44:5-46:16 duplicated with element declared at AndroidManifest.xml:41:5-43:16 

謝謝!

+0

請刪除並重新添加android平臺。 –

+0

運行:cordova clean android – Eric

+0

@Eric:嘗試過'cordova clean android'。不幸的是,沒有幫助。 – Frank

回答

3

我認爲這不是一個cordova問題,而是在android構建過程中。至少我可以在一個普通的Android Studio和Gradle設置中重現它:

看起來android有兩個具有相同名稱屬性的標籤並不好。我不明白爲什麼這是一個問題,只要你有不同的權威,它應該工作得很好。但是這也導致了一個解決方案:在你的插件(或者你自己想要使用的插件的分支)中創建一個解決方案:

。您可以創建自己FileProvider.java剛剛擴充了原來的android.support.v4.content.FileProvider

package com.our.app.dev; 

public class FileProvider extends android.support.v4.content.FileProvider { 
} 

插件配置中鏈接到這個 FileProvider,現在有不同的包名,從而避免這個問題。希望這可以起作用,對我來說,它似乎有訣竅。

+0

更新:我提交了一個關於此問題的錯誤報告:https://code.google.com/p/android/issues/detail?id=231824&thanks=231824&ts=1483974507 –

+0

更新:我創建了一個PR來解決SocialSharing中的這個問題-PhoneGap-Plugin可用作參考解決方法:https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin/pull/748 –