donglua / PhotoPicker

[DEPRECATED] Image Picker like Wechat
https://play.google.com/store/apps/details?id=me.iwf.PhotoPickerDemo
Apache License 2.0
2.83k stars 683 forks source link

Android 7.0 FileProvider merge failed #164

Closed Apeterlife closed 7 years ago

Apeterlife commented 7 years ago

项目中的下载升级需要在Manifest 中配置FileProvider 引入photoPicker 后也有FileProvider,build failed,提示信息如下:(XXXX 是我替换的)

D:\Android\Code\l****g\src\main\AndroidManifest.xml:700:13-65 Error: Attribute provider#android.support.v4.content.FileProvider@authorities value=(com.vaXXXde.fileprovider) from AndroidManifest.xml:700:13-65 is also present at [me.iwf.photopicker:PhotoPicker:0.9.0] AndroidManifest.xml:12:13-60 value=(com.vXXXXe.provider). Suggestion: add 'tools:replace="android:authorities"' to element at AndroidManifest.xml:698:9-709:20 to override. D:\Android\Code\leb&ng\src\main\AndroidManifest.xml:706:17-55 Error: Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/provider_paths) from AndroidManifest.xml:706:17-55 is also present at [me.iwf.photopicker:PhotoPicker:0.9.0] AndroidManifest.xml:17:17-64 value=(@xml/__picker_provider_paths). Suggestion: add 'tools:replace="android:resource"' to element at AndroidManifest.xml:704:13-708:19 to override.

按照提示添加Replace 后photo picker模块

                                                               java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
                                                                   at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:583)
                                                                   at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557)
                                                                   at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:399)
                                                                   at me.iwf.photopicker.utils.ImageCaptureManager.dispatchTakePictureIntent(ImageCaptureManager.java:69)
                                                                   at me.iwf.photopicker.fragment.PhotoPickerFragment.openCamera(PhotoPickerFragment.java:221)
                                                                   at me.iwf.photopicker.fragment.PhotoPickerFragment.access$400(PhotoPickerFragment.java:52)
                                                                   at me.iwf.photopicker.fragment.PhotoPickerFragment$4.onClick(PhotoPickerFragment.java:182)
                                                                   at me.iwf.photopicker.adapter.PhotoGridAdapter$1.onClick(PhotoGridAdapter.java:85)
                                                                   at android.view.View.performClick(View.java:5637)
                                                                   at android.view.View$PerformClick.run(View.java:22429)
                                                                   at android.os.Handler.handleCallback(Handler.java:751)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                   at android.os.Looper.loop(Looper.java:154)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

                                                               --------- beginning of system
werbhelius commented 7 years ago

我也遇到过 merge failed , Gradle 会提示使用 tools:replace"XXXX" 来替换

但是,我发现替换后 到三方库的authorities 好像失效了

werbhelius commented 7 years ago

这个 我解决了 自定义一个 FileProvider 就好了, 总之不要让库和工程的 FileProvider 在AndroidManifest name 一样就行

AnyLifeZLB commented 7 years ago

@Apeterlife public class FileProviderUtils extends FileProvider { }

name 不一样就行了