描述優(yōu)缺點(diǎn)和簡單使用
http://www.itdecent.cn/p/d4e384c98987
用戶指南
http://www.itdecent.cn/p/b1df61a4df77
在使用多Module中使用DataBinding會引發(fā)一些奇怪的問題,最近好好的騰出時間來折騰這些奇怪的問題:
1:如果當(dāng)Module啟動DataBinding重啟AS啟動報錯的話,就啟用允許多行代碼
android {
defaultConfig {
multiDexEnabled true
}
}
dependencies {
//解決超過65546代碼的問題
compile 'com.android.support:multidex:1.0.2'
}
2:為什么include的Toolbar(或者別的控件)在代碼里面顯示是View?因?yàn)檫@個Toolbar的布局代碼文件在Module,合并在app的時候,編譯所看到的是view,這個只能由Google后面優(yōu)化了,但是目前可以用這種方式來緩沖
public abstract class BaseFragmentListConditionDataBind<T, C, B extends ViewDataBinding> extends BaseFragmentListCondition<T, C> {
public B mViewBinding;
public ToolbarCommonBinding mToolbarCommonBinding;
@Override
public void initDataBind(View view) {
mViewBinding = DataBindingUtil.bind(view);
mToolbarCommonBinding = DataBindingUtil.bind(view.findViewById(R.id.toolbarCommon));
}
}
3.因?yàn)閙odule使用DataBinding這系列奇怪問題
Error:Execution failed for task ':library:test:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug'.
> failure, see logs for details.
Error reading contents of H:\mobile\code\trunk\as\library\test\build\intermediates\data-binding-compiler\debug\dependent-lib-artifacts directory java.nio.file.NoSuchFileException: H:\mobile\code\trunk\as\library\test\build\intermediates\data-binding-compiler\debug\dependent-lib-artifacts
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsDirectoryStream.<init>(WindowsDirectoryStream.java:86)
at sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(WindowsFileSystemProvider.java:518)
at java.nio.file.Files.newDirectoryStream(Files.java:457)
at android.databinding.tool.DataBindingBuilder.getBRFilePackages(DataBindingBuilder.java:145)
at android.databinding.tool.DataBindingBuilder.getJarExcludeList(DataBindingBuilder.java:128)
at com.android.build.gradle.internal.LibraryTaskManager.lambda$excludeDataBindingClassesIfNecessary$19(LibraryTaskManager.java:688)
關(guān)于這個坑爹的問題我一直不敢確認(rèn)我這個是否正確,也折騰了我好幾天,我處理方式是把主項(xiàng)目的Module都引用到新項(xiàng)目的Module使用,然后獲取到具體的錯誤問題,我這邊獲取到問題是把com.github.chrisbanes:PhotoView:1.0.0升級成com.github.chrisbanes:PhotoView:2.1.3。然后再運(yùn)行主項(xiàng)目,這個問題又沒了,真的是超級超級蛋疼。
4.多個module之間,他們生成的layout。名稱絕對不能一樣。
不然會出現(xiàn)上面的一系列問題。
5.如果以上問題都解決不了,刪除app和module的所有build和.gradle文件夾,就可以解決了,關(guān)于第三個問題也是能用這個方法解決的
6.還是關(guān)于module之間的生成dataBinding的問題。關(guān)于這個問題我折騰了2,3天了,最后特意搞了一個小項(xiàng)目,這個問題目前google搜索不到,可能這種形式做法的相當(dāng)相當(dāng)少,但總算找到一個折騰的方式解決
假設(shè)我們有一個這樣的需求,module項(xiàng)目使用抽象基類,并且抽象基類已經(jīng)確定了生成好的databinding



至于基類的邏輯我們暫且不管,這不是重點(diǎn),重點(diǎn)是我們看這個app的實(shí)現(xiàn)類

兩種方式解決:


反正最終就是在app的類里面,明確該DataBinding是屬于某個lib即可!
7.關(guān)于在module使用泛型DataBinding類時
會提示找不到所有生成的DataBinding。目前解決方式只能是module不用泛型DataBinding,只在app使用泛型DataBinding
8.databinding不存在
當(dāng)編譯錯誤的時候,會發(fā)現(xiàn)很多提示databinding不存在,如下圖

如果你拖到最下面,會看到真正導(dǎo)致錯誤的問題,如下圖

databinding有個問題,就是當(dāng)你本來正常的項(xiàng)目,一頓猛如虎的代碼操作后,運(yùn)行編譯出錯,會出現(xiàn)一種情況,全是提示databinding不存在,并沒有顯示真正導(dǎo)致錯誤的問題,如下圖

那么解決方式:
可能目前還未比較完善,我是用排除方式一個一個模塊進(jìn)行刪除,運(yùn)行,找到真正的錯誤,最后在這里發(fā)現(xiàn):

你們可以看到,錯誤提示里面,并沒有提示如圖中的代碼錯誤。這種問題是非常糾結(jié)非常糾結(jié)的!
如果有更好的解決方式,求指導(dǎo)!
8. gradle升級到4.6后,DataBinding編譯時報告參數(shù)過多
2019-9-27更新
這是最近碰到的一個問題,gradle4.1是沒有這個問題的,而4.6就報這個參數(shù)過多問題了,原因是每個DataBinding編譯生成的時候會在自動生成的類里面有個構(gòu)造函數(shù),而4.6的構(gòu)造函數(shù)不知道為什么會報參數(shù)過多。至于解決方法,我目前是又退回4.1了,google暫時搜不到什么解決方法
9. 當(dāng)編譯后只顯示編譯錯誤,沒有其他反饋的時候
可以輸入該命令:gradlew compileDebugJavaWithJavac
然后就能看到詳細(xì)的錯誤了
D:\yitu\MVVMRapid\app\src\main\java\com\my\mvvmrapid\MainActivity.java:4: 錯誤: 程序包c(diǎn)om.my.mvvmrapid.databinding不存在
按照豐富的經(jīng)驗(yàn)就是app沒有引入databinding
如果幫到您歡迎Star
一個非常豐富的開源庫,如果你需要相冊、錄制、錄音等操作,那么這個也許對你有一定的幫助:
zhongjhATC/AlbumCameraRecorder: ??一個高效的多媒體支持操作庫,可多方面的簡單配置操作相冊、拍照、錄制、錄音等功能。也支持配套使用的展示圖片、視頻、音頻的九宮格功能。 (An efficient multimedia support operation library, can be a variety of simple configuration operation album, photo, recording, recording and other functions.Also support supporting the use of the display of pictures, video, audio of the nine grid function.) (github.com)