《Gradle权威指南》--自定义Android Gradle工程
No1:
minSdkVersion
public void minSdkVersion(int minSdkVersion){ setMinSdkVersion(minSdkVersion); } ----------------------- public void setMinSdkVersion(@Nullable String minSdkVersion){ setMinSdkVersion(getApiVersion(minSdkVersion)); } public void minSdkVersion(@Nullable String minSdkVersion){ setMinSdkVersion(minSdkVersion); }
No2:
android代号版本对应表
No3:
versionCode-内部版本号
@NonNull public ProductFlavor setVersionCode(Integer versionCode){ mVersionCode = versionCode; return this; } @Override @Nullable publid Integer getVersionCode(){ return mVersionCode; }
No4:
versionName-版本名称
@NonNull public ProductFlavor setVersionName(String versionName){ mVersionName = versionName; return this; } @Override @Nullable public String getVersionName(){ return mVersionName; }
No5:
testApplicationId-app的包名
@NonNull public ProductFlavor setTestApplicationId(String applicationId){ mTestApplicationId = applicationId; return this; } @Override @Nullable public String getTestApplicationId(){ return mTestApplicationId; }
No6:
testInstrumentationRunner-配置单元测试时使用的Runner
@NonNull public ProductFlavor setTestInstrumentationRunner(String testInstrumentationRunner){ mTestInstrumentationRunner = testInstrumentationRunner; return this; } @Override @Nullable public String getTestInstrumentationRunner(){ return mTestInstrumentationRunner(); }
No7:
signingConfig-配置默认的签名信息
@Override @Nullable public SigningConfig getSigningConfig(){ return mSigningConfig; } @NonNull public ProductFlavor setSigningConfig(SigningConfig signingConfig){ mSigningConfig = signingConfig; return this; }
No8:
proguardFile-混淆所使用的配置文件
public void projuardFile(@NonNull Object projuardFile){ getProjuardFiles().add(project.file(projuaardFile)); }
No9:
proguardFiles-同时接受多个配置文件
public void proguardFiles(@NonNull Object...proguardFileArray){ getProguardFiles().addAll(project.files(proguardFileArray).getFiles()); }
No10:
配置签名信息
signingConfigs{ release{ storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" } debug{ storeFile file("mydebugkey.keystore") storePassword "password" keyAlias "MyDebugKey" keyPassword "password" } }
storeFile:签名证书文件
storePassword:签名证书文件的密码
storeType:签名证书的类型
keyAlias:签名证书中秘钥别名
keyPassword:签名证书中该秘钥的密码
注:debug模式的签名已经被配置好了,使用的就是android sdk自动生成的debug证书,一般位于../.android/debug.keystore
调用
defaultConfig{ applicationId "org.flysnow.app.example82" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" signingConfig signingConfig.debug }
或者
buildType{
release{
signingConfig signingConfigs.release
}
debug{
signingConfig signingConfig.debug
}
}
No11:
applicationIdSuffix-用于配置基于默认applicationId的后缀
@NonNull public BaseConfigImpl setApplicationIdSuffix(@Nullable String applicationIdSuffix){ mApplicationIdSuffix = applicationIdSuffix; return this; } @Override @Nullable public String getApplicationIdSuffix(){ return mApplicationIdSuffix; }
No12:
debuggable-用于配置是否生成一个可供调试的apk
@NonNull public BuildType setDebuggable(boolean debuggable){ mDebuggable = debuggable; return this; } @Override public boolean isDebuggable(){ return mDebuggable || mTestCoverageEnabled; }
No13:
jniDebuggable-用于配置是否生成一个可供调试Jni代码的apk
@NonNull public BuildType setJniDebuggable(boolean jniDebugBuild){ mJniDebuggable = jniDebugBuild; return this; } @Override public boolean isJniDebuggable(){ return mJniDebuggable; }
No14:
minifyEnabled-用于配置是否启用Proguard混淆
@NonNull public BuildType setMinifyEnabled(boolean enabled){ mMinifyEnabled = enabled; return this; } @Override public boolean isMinifyEnabled(){ return mMinifyEnabled; }
No15:
multiDexEnabled-用于配置该BuildType是否启用自动拆分多个Dex的功能
@Override @Nullable public Boolean getMultiDexEnabled(){ return mMultiDexEnabled; } public void setMultiDexEnabled(@Nullable Boolean multiDex){ mMultiDexEnabled = multiDex; }
No16:
proguardFile
@NonNull public BuildType projuardFile(@NonNull Object proguardFile){ getProguardFiles().add(project.file(proguardFile)); return this; }
No17:
proguardFiles
@NonNull public BuildType projuardFiles(@NonNull Object... proguardFileArray){ getProguardFiles().addAll(project.files(proguardFileArray).getFiles()); return this; }
No18:
shrinkResources
@Override public boolean isShrinkResources(){ return thrinkResources; } public void setShrinkResources(boolean shrinkResources){ this.shrinkResources = shrinkResources; }
No19:
signingConfig
@NonNull public BuildType setSigningConfig(@Nullable SigningConfig signingConfig){ mSigningConfig = signingConfig; return this; } @Override @Nullable public SigningConfig getSigningConfig(){ return mSigningConfig; }
No20:
每一个BuildType都会生成一个SourceSet,还会生成相应的assemble任务,比如:assembleRelease或assembleDebug
No21:
代码混淆不仅能优化我们的代码,让apk包变得更小,还可以混淆我们原来的代码
No22:
public File getDefaultProjuardFile(String name){ File sdkDir = sdkHandler.getAndCheckSdkFolder(); return new File(sdkDir,SdkConstants.FD_TOOLS + File.separatorChar + SdkConstants.FD_PROGUARD + File.separatorChar + name); }
android sdk默认提供两个Proguard配置文件,proguard-android.txt和proguard-android-optimize.txt,一个没有优化,一个有优化。
No23:
android{ buildTypes{ release{ zipAlignEnabled true } debug{ } } }
@NonNull public BuildType setZipAlignEnabled(boolean zipAlign){ mZipAlignEnabled = zipAlign; return this; } @Override public boolean isZipAlignEnabled(){ return mZipAlignEnabled; }
相关文章
- 聚焦 Android 11: 大功告成
- android autosize原理,Android屏幕适配头条:autosize的原理
- android deeplink流程,Android Deeplink探究[通俗易懂]
- android退出app代码,Android应用退出代码各种方式
- 【Android布局】在程序中设置android gravity 和 android layout Gravity属性
- android系统中toast是什么_Android个人资料简单布局
- Android Binder框架实现之bindService详解「建议收藏」
- Android 数据库加密 android-database-sqlcipher 开源版本编译过程
- 【Android 组件化】使用 Gradle 实现组件化 ( 组件模式与集成模式切换 )
- 【Android Gradle 插件】settings.gradle 配置文件 ( 配置基本作用 | include 函数用法 | 目录层级配置 | 修改 Module 模块构建脚本名称 )
- 【Android Gradle 插件】工程根目录下 build.gradle 配置文件 ( 远程仓库配置 | 依赖配置 | 所有子模块配置 | task clean 任务 )
- 【错误记录】Android Studio 中查看 Gradle 配置的方法源码 ( 配置 gradle-wrapper.properties 中版本为 gradle-x.x.x-all.zip )
- 【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
- 【Android Gradle 插件】Android Plugin DSL Reference 离线文档下载 ( GitHub 下载文档 | 查看文档 )
- 【Android Gradle 插件】ProductFlavor 配置 ( multiDexEnabled 配置 | multiDexKeepFile | multiDexKeepProguard )
- 【ijkplayer】编译 Android 版本的 ijkplayer ③ ( 执行 compile-ffmpeg.sh clean 命令 | 下载并配置 android-ndk-r10e )
- 【Android Gradle 插件】BuildType 编译类型配置 ③ ( javaCompileOptions 配置 | jniDebuggable 配置 )
- 【Android Gradle 插件】Gradle 扩展属性 ④ ( 扩展属性访问方式 | 直接访问扩展属性 | 通过 ext 对象访问 | 在 gradle.properties 中定义扩展属性 )
- 【Android Gradle 插件】自定义 Gradle 插件优化图片 ③ ( 识别 png 图片中的 alpha 通道信息 | png 图片的 IHDR 类型数据块 )
- 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 )
- android安装应用程序工具类详解编程语言
- 在android开发中进行数据存储与访问的多种方式介绍
- Android中Activity跳转的创建步骤总结