AndroidStudio⼯程⽬录结构及简单使⽤
1.Android Studio安装
2.⽬录分析
榕树⽬录结构.png
1、.gradle gradle编译系统,版本由wrapper决定
.idea AndroidStudio IDE所需要的⽂件 IntelliJ IDEA 同样有这个⽂件
这两个⽬录下⽂件都是Android Studio ⾃动⽣成的⼀些⽂件,我们⽆需关⼼,也不要⼿动去编辑
2、app app项⽬的代码、资源等内容⼏乎都是放在这个⽬录下,我们后期的开发也基本都是在这个⽬录下进⾏
3、build build代码编译后⽣成的⽂件存放的位置
4、gradle wrapper的jar和配置⽂件所在位置,这个⽬录下包含了gradle wrapper的配置⽂件使⽤gradle wrapper的⽅式不需要提前将gradle 下载好,⽽是会⾃动根据vending的缓存情况决定是否需要联⽹下载gradle
5、.gitgnore git使⽤的ignore⽂件 这个⽂件是⽤来将指定的⽬录或者⽂件排除在版本控制之外的
6、adle gradle编译的相关配置⽂件,这是项⽬全局的gradle构建脚本,通常这个⽂件中的内容是不需要修改的
7、gradle.properties gradle相关的全局属性设置,这个⽂件是全局的gradle配置⽂件,在这⾥配置的属性将会影响到项⽬中所有的gradle编译脚本
8、gradlew Unix下的gradle wrapper 可执⾏⽂件
gradlew.bat windows下的gradle wrapper 可执⾏⽂件
这两个⽂件是⽤来在命令⾏界⾯中执⾏gradle命令的,其中gradlew是在Linux或者Mac系统使⽤的,gradle是windows下使⽤的
9、项⽬名.iml iml⽂件是所有Android Studio项⽬⾃动⽣成的⽂件,我们不需要关⼼或者修改这个⽂件的内容
10、local.projecties 本地属性设置(key设置,android ndk sdk 位置等属性),这个⽂件是不推荐上传到VCS中去的
11、adle 这个⽂件⽤于指定项⽬中所有引⼊的模块。
3.app⽬录分析
build 编译后的⽂件存在的位置(包括最终⽣成的apk也在这⾥⾯)
libs 依赖的库所在的位置(jar和aar)
src 源代码所在的⽬录
src/main 主要代码所在位置
src/main/assets android中附带的⼀些⽂件
src/main/java java代码所在的位置
src/main/jniLibs jni的⼀些动态库所在的默认位置(.so⽂件)
src/main/res android资源⽂件的所在位置
src/l 清单⽂件
proguard.pro 代码混淆配置⽂件
1.buildscript
buildscript中的声明是gradle脚本⾃⾝需要使⽤的资源。可以声明的资源包括依赖项、第三⽅插件、maven仓库地址等
顾名思义就是仓库的意思啦,⽽jcenter()、maven()和google()就是托管第三⽅插件的平台
3.dependencies
当然配置了仓库还不够,我们还需要在dependencies{}⾥⾯的配置⾥,把需要配置的依赖⽤classpath配置上,因为这个dependencies在buildscript{}⾥⾯,所以代表的是Gradle需要的插件。
4.allprojects
allprojects块的repositories⽤于多项⽬构建,为所有项⽬提供共同所需依赖包。⽽⼦项⽬可以配置⾃⼰的repositories以获取⾃⼰独需的依赖包。
5.buildscript和allprojects的作⽤和区别
buildscript中的声明是gradle脚本⾃⾝需要使⽤的资源,⽽allprojects声明的却是你所有module所需要使⽤的资源,就是说每个module都需要⽤同⼀个第三库的时候,你可以在allprojects⾥⾯声明
6.task clean
运⾏gradle clean时,执⾏此处定义的task。该任务继承⾃Delete,删除根⽬录中的build⽬录。相当于执⾏
Delete.delete(rootProject.buildDir)。其实这个任务的执⾏就是可以删除⽣成的Build⽂件的,跟Android Studio的clean是⼀个道理。
1.android{}
是Android插件提供的⼀个扩展类型,可以让我们⾃定义Android Gradle⼯程,是Android Gradle⼯程
配置的唯⼀⼊⼝。
2pileSdkVersion
是编译所依赖的Android SDK的版本,这⾥是API Level。
3.buildToolsVersion
是构建该Android⼯程所⽤构建⼯具的版本。
4.defaultConfig{}
defaultConfig是默认的配置,它是⼀个ProductFlavor。ProductFlavor允许我们根据不同的情况同时⽣成多个不同的apk包。
5.applicationId
配置我们的包名,包名是app的唯⼀标识,其实他跟AndroidManifest⾥⾯的package是可以不同的,他们之间并没有直接的关系。
package指的是代码⽬录下路径;applicationId指的是app对外发布的唯⼀标识,会在签名、申请第三
⽅库、发布时候⽤到。
6.minSdkVersion
是⽀持的Android系统的api level,这⾥是15,也就是说低于Android 15版本的机型不能使⽤这个app。
7.targetSdkVersion
表明我们是基于哪个Android版本开发的,这⾥是22。
8.versionName
表明我们的app应⽤的版本名称,⼀般是发布的时候写在app上告诉⽤户的
9.versionCode
表明我们的app应⽤的版本,⼀般app升级基于versionCode(应⽤市场)
10.multiDexEnabled
⽤于配置该BuildType是否启⽤⾃动拆分多个Dex的功能。⼀般⽤程序中代码太多,超过了65535个⽅法的时候。
11.ndk{}
多平台编译,⽣成有so包的时候使⽤,包括四个平台'armeabi', 'x86', 'armeabi-v7a', 'mips'。⼀般使⽤第三⽅提供的SDK的时候,可能会附带so库。
12.manifestPlaceholders
占位符,我们可以通过它动态配置AndroidManifest⽂件⼀些内容
builde(module).png
13.buildType
构建类型,在Android Gradle⼯程中,它已经帮我们内置了debug和release两个构建类型,两种模式主要车别在于,能否在设备上调试以及签名不⼀样,其他代码和⽂件资源都是⼀样的。⼀般⽤在代码混淆,⽽指定的混淆⽂件在下图的⽬录上,minifyEnabled=true就会开启混
淆,shrinkResources=true 缩⼩APK⼤⼩,删除没有引⽤的资源⽂件(drawable和layout)
image.png
14.signingConfigs
签名配置,⼀个app只有在签名之后才能被发布、安装、使⽤,签名是保护app的⽅式,标记该app的唯⼀性。如果app被恶意删改,签名就不⼀样了,⽆法升级安装,⼀定程度保护了我们的app。⽽signingConfigs就很⽅便为我们提供这个签名的配置。storeFile签名⽂
件,storePassword签名证书⽂件的密码,storeType签名证书类型,keyAlias签名证书中秘钥别名,keyPassword签名证书中改密钥的密码。
默认情况下,debug模式的签名已经被配置好了,使⽤的就是Android SDK⾃动⽣成的debug证书,它⼀般位于
$HOME/.android/debug.keystore,其key和密码是已经知道的,⼀般情况下我们不需要单独配置debug模式的签名信息。
15.productFlavors
Gradle的多渠道打包,你可以在不同的包定义不同的变量,实现⾃⼰的定制化版本的需求。
buildConfigField是BuildConfig⽂件的⼀个函数,⽽BuildConfig这个类是Android Gradle构建脚本在编译后⽣成的
image.png
x86架构和arm架构区别image.png
16.dependencies{}
我们平时⽤的最多的⼤概就这个了,
⾸先第⼀句compile fileTree(include: ['.jar'], dir: 'libs')*,这样配置之后本地libs⽂件夹下的扩展名为jar
的都会被依赖,⾮常⽅便。
如果你要引⼊某个本地module的话,那么需要⽤compile project('×××')。
如果要引⼊⽹上仓库⾥⾯的依赖,我们需要这样写compile group:'com.squareup.okhttp3',name:'okhttp',version:'3.1.0',当然这样是最完整的版本,缩写就把group、name、version去掉,然后以":"分割即可。
compile 'com.squareup.okhttp3:okhttp:3.1.0'
但是到了gradle3.0以后adle中的依赖默认为implementation,⽽不是
之前的compile。另外,还有依赖指令api。
gradle 3.0中其实api跟以前的compile没什么区别,将compile全部改成api是不会错的;⽽implementation指令依赖是不会传递的,也就是说当前引⽤的第三⽅库仅限于本module内使⽤,其他module需要重新添加依赖才能⽤
5.⽂件编译及打包
Make Project:编译Project下所有Module,⼀般是⾃上次编译后Project下有更新的⽂件,不⽣成apk。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论