標籤:flavor rod sse pes targe nullable bubuko 產生 gimp
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-組建號
@NonNullpublic ProductFlavor setVersionCode(Integer versionCode){ mVersionCode = versionCode; return this;}@Override@Nullablepublid Integer getVersionCode(){ return mVersionCode;}
No4:
versionName-版本名稱
@NonNullpublic ProductFlavor setVersionName(String versionName){ mVersionName = versionName; return this;}@Override@Nullablepublic String getVersionName(){ return mVersionName;}
No5:
testApplicationId-app的包名
@NonNullpublic ProductFlavor setTestApplicationId(String applicationId){ mTestApplicationId = applicationId; return this;}@Override@Nullablepublic String getTestApplicationId(){ return mTestApplicationId;}
No6:
testInstrumentationRunner-登錄區測試時使用的Runner
@NonNullpublic ProductFlavor setTestInstrumentationRunner(String testInstrumentationRunner){ mTestInstrumentationRunner = testInstrumentationRunner; return this;}@Override@Nullablepublic String getTestInstrumentationRunner(){ return mTestInstrumentationRunner();}
No7:
signingConfig-配置預設的簽名資訊
@Override@Nullablepublic SigningConfig getSigningConfig(){ return mSigningConfig;}@NonNullpublic 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的尾碼
@NonNullpublic BaseConfigImpl setApplicationIdSuffix(@Nullable String applicationIdSuffix){ mApplicationIdSuffix = applicationIdSuffix; return this;}@Override@Nullablepublic String getApplicationIdSuffix(){ return mApplicationIdSuffix;}
No12:
debuggable-用於配置是否產生一個可供調試的apk
@NonNullpublic BuildType setDebuggable(boolean debuggable){ mDebuggable = debuggable; return this;}@Overridepublic boolean isDebuggable(){ return mDebuggable || mTestCoverageEnabled;}
No13:
jniDebuggable-用於配置是否產生一個可供調試Jni代碼的apk
@NonNullpublic BuildType setJniDebuggable(boolean jniDebugBuild){ mJniDebuggable = jniDebugBuild; return this;}@Overridepublic boolean isJniDebuggable(){ return mJniDebuggable;}
No14:
minifyEnabled-用於配置是否啟用Proguard混淆
@NonNullpublic BuildType setMinifyEnabled(boolean enabled){ mMinifyEnabled = enabled; return this;}@Overridepublic boolean isMinifyEnabled(){ return mMinifyEnabled;}
No15:
multiDexEnabled-用於配置該BuildType是否啟用自動拆分多個Dex的功能
@Override@Nullablepublic Boolean getMultiDexEnabled(){ return mMultiDexEnabled;}public void setMultiDexEnabled(@Nullable Boolean multiDex){ mMultiDexEnabled = multiDex;}
No16:
proguardFile
@NonNullpublic BuildType projuardFile(@NonNull Object proguardFile){ getProguardFiles().add(project.file(proguardFile)); return this;}
No17:
proguardFiles
@NonNullpublic BuildType projuardFiles(@NonNull Object... proguardFileArray){ getProguardFiles().addAll(project.files(proguardFileArray).getFiles()); return this;}
No18:
shrinkResources
@Overridepublic boolean isShrinkResources(){ return thrinkResources;}public void setShrinkResources(boolean shrinkResources){ this.shrinkResources = shrinkResources;}
No19:
signingConfig
@NonNullpublic BuildType setSigningConfig(@Nullable SigningConfig signingConfig){ mSigningConfig = signingConfig; return this;}@Override@Nullablepublic 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{ } }}
@NonNullpublic BuildType setZipAlignEnabled(boolean zipAlign){ mZipAlignEnabled = zipAlign; return this;}@Overridepublic boolean isZipAlignEnabled(){ return mZipAlignEnabled;}
《Gradle權威指南》--自訂Android Gradle工程