《Gradle權威指南》--自訂Android Gradle工程

來源:互聯網
上載者:User

標籤: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工程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.