Android资源目录分模块(基于gradle)
使用gradle管理的安卓程序,默认没有分模块,所有的资源文件等都集中在res中,包括图片、图标、布局文件以及其他资源文件等等。现在要完成资源文件的模块化,如layout布局文件。就用layout举个例子。
先看下原本直接在layout下建立文件夹会怎么样。
在系统的layout下建立一个dir1的文件夹,比如你有一个模块叫dir1,并且有个布局叫layout。这时你的layout文件内容一定有错误产生,如图
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> </LinearLayout>
原因是管理安卓的东西(即gradle)并不知道你这是什么文件。需要让gradle知道你这个文件的存在才行。
解决方案:修改app文件夹下的buile.gradle,注意有两个gradle文件,我们选择app文件夹里面的那个,外面的不用管,一般也不用管它。
现在上我之前刚学Android时,那个小程序的目录结构。
如图,分了几个模块,cookPage,friendsPage,homePage,mePage,当然你也看到了同目录下的layout,这个是总的页面的几个activity存放的目录,它们几个都在一个叫Layouts的文件夹内。
android { compileSdkVersion 26 defaultConfig { applicationId "com.example.qq12cvhj.chowhound" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { res.srcDirs = [ 'src/main/res/Layouts/cookPage', 'src/main/res/Layouts/friendsPage', 'src/main/res/Layouts/mePage', 'src/main/res/Layouts/homePage', 'src/main/res/Layouts', 'src/main/res' ] } } }
如上代码所示,在这个gradle文件内,添加sourceSets这一项,修改资源目录即可。一定记得,既然是layout文件,在这几个目录里面,一定要添加layout文件夹,其他资源也如此。是什么文件,就添加一个默认的文件夹。建好layout文件夹后,再在里面添加布局文件,即xml文件。这样这个管理工具就能知道你这些文件的存在了,能成功的buile你的APP了。记得修改buile.gradle后几个点右上角的sync now,才能真正同步。如果同步失败,但是内容你确定正确,那就先clean一下project再同步。
欢迎交流,相互学习,共同进步。