《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;
}
复制代码

 

posted @   嘉禾世兴  阅读(269)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2016-03-21 Intent的七大属性
2016-03-21 Activity启动模式
点击右上角即可分享
微信分享提示