Android学习笔记

来源:互联网 发布:孕婴店网络宣传广告语 编辑:程序博客网 时间:2024/06/05 11:55

前言

最近接触到了一个新的项目,里面应该有好多自己未曾学习过的地方,特此记录。

笔记

1.编译项目报错

Error:Execution failed for task ':app:dexInternalDebug'.> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\SorftWare\JDK\bin\java.exe'' finished with non-zero exit value 3

因为项目中使用了DEX分包方案。
解决办法是在gradle文件的android节点中加入下面的配置,意思是增加java堆内存的大小。

 dexOptions {        javaMaxHeapSize "4g"    }

2.provideComplie和compile的区别
如果你的jar包/依赖代码 在编译的时候需要依赖,在运行的时候也需要,那么就用compile
如果你的jar包/依赖代码 仅在编译的时候需要,但是在运行时不需要依赖,就用providedCompile

3.关于studio项目结构中文件的作用
gradle.properties: 配置文件,可以定义常量供build.gradle文件使用
settings.gradle:配置多模块
gradle-wrapper.jar和gradle-wrapper.properties,只要是gradle项目都会有,通过gradle init命令来创建。
gradlew和gradlew.bat:分别是linux下的shell脚本和windows下的批处理文件,

4.gradle命令所在位置
想要在命令行直接能够输入gradle命令,我们需要配置环境变量,这时候我们就要知道gradle命令所在路径

//Studio安装路径下的gradle文件夹中D:\SorftWare\AndroidStudio\gradle\gradle-2.4\bin

5.gradle命令
gradlew build编译项目
gradlew clean清理项目
gradlew -v查看gradle版本
gradlew assembleDebug编译Debug包
gradlew assembleRelease编译Release包

6.gradle配置
gradle有三种仓库,maven仓库,ivy仓库以及flat本地仓库。声明方式如下:

maven{      url "..."}ivy{      url "..."}flatDir{      dirs 'xxx'}

一般引用aar的时候使用flatDir
首先将aar文件放到模块的libs目录下,然后在该模块的build.gradle中声明flat仓库:

repositories{    flatDir{          dirs 'libs'    }}
//使用外部脚本构建apply from: 'xxx.gradle'
//指定单元测试的配置 sourceSets {        androidTest {            java.srcDirs = ['tests/src']            manifest.srcFile 'tests/AndroidManifest.xml'        }    }

7.解决第三方库最低支持的版本高于应用最低支持的版本
在AndroidManifest.xml文件中 标签中添加

<uses-sdk tools:overrideLibrary="xxx.xxx.xxx"/>

,其中的xxx.xxx.xxx为第三方库包名,如果存在多个库有此异常,则用逗号分割它们,例如:,这样做是为了项目中的AndroidManifest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制。

8.其他配置

minifyEnabled//主要用来控制是否运行混淆的zipAlignEnabled//zipAlign优化,可以提高应用运行效率versionNameSuffix//后缀名  ndk {            //设置支持的SO库架构            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'        }        // 移除无用的resource文件            shrinkResources true            //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。 lintOptions {        abortOnError false    }

9.代码中设置权重

  LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(                            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);                    lp.weight = 1;                    itemView.setLayoutParams(lp);
0 0
原创粉丝点击