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{
buildTypes{
release{
zipAlignEnabled true
}
debug{
}
}
}
@NonNull
public BuildType setZipAlignEnabled(boolean zipAlign){
mZipAlignEnabled = zipAlign;
return this;
}
@Override
public boolean isZipAlignEnabled(){
return mZipAlignEnabled;
}