生成APK

使用Gradle生成apk文件

1.在gradle.properties文件中添加如下内容:

KEY_PATH=D\:\\Documents\\ein.jks
KEY_PASS=1234567
ALIAS_NAME=Ein
ALIAS_PASS=1234567

其中从上至下依次为签名keystore文件的路径,密码,别名,别名密码。

2.编辑app/build.gradle文件,在android闭包中添加如下内容:

signingConfigs {
    config {
        storeFile file(KEY_PATH)
        storePassword KEY_PASS
        keyAlias ALIAS_NAME
        keyPassword ALIAS_PASS
    }
}

3.再编辑app/build.gradle文件,在buildTypes闭包中添加signingConfig使用上述配置

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
}

4.最后生成APK文件

打开右侧工具栏的Gradle→项目名→:app→Tasks→build,其中assembleDebug用于生成测试版的APK文件,assembleRelease用于生成正式版的APK文件,assemble用于生成测试版和正式版的APK文件。在生成APK文件之前,先要双击clean这个Task来清理一下当前项目。

PS:生成的文件在app/build/outputs/apk目录下

生成多渠道APK文件

1.编辑app/build.gradle文件,在android闭包中添加productFlavors闭包:

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.xxxx.xxxxx.xxxxxx"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "mode"
    productFlavors {
        demo {
            dimension "mode"
            applicationIdSuffix ".demo"
            versionNameSuffix "-demo"
        }
        full {
            dimension "mode"
            applicationIdSuffix ".full"
            versionNameSuffix "-full"
        }
    }
    ...
}

这里先声明了一个名为“mode”的维度,然后添加了productFlavors闭包,我们只用在该闭包中添加所有的渠道配置即可。

在这里我先添加了两个渠道,分别为demo和full。每一个渠道名的闭包中都可以覆写defaultConfig中的任何一个属性。以demo渠道为例,我先设置它是“mode”维度下的一个渠道,然后设置它包名后缀为“.demo”以及版本名后缀为“-demo”。

这么一来我们在生成APK的时候就有两个选择:生成demo渠道的APK,或者生成full渠道的APK。

2.维度的作用

上面有声明维度“mode”,因为两个渠道在同一维度下,因此看不出维度的作用。这里我再添加一个维度“size”以及两个渠道“small”和“large”,如下:

flavorDimensions "mode","size"
productFlavors {
    small {
        dimension "size"
    }
    large {
        dimension "size"
    }
    demo {
        dimension "mode"
        applicationIdSuffix ".demo"
        versionNameSuffix "-demo"
    }
    full {
        dimension "mode"
        applicationIdSuffix ".full"
        versionNameSuffix "-full"
    }
}

这么一来在生成APK的时候就有四个选择:(mode维度的渠道数*size维度的渠道数)

3.生成APK的多个渠道都准备好了,那么如何保证各渠道之间代码差异同时存在呢?其实只用在app/src目录下新建渠道目录即可。

比如要修改demo渠道的特有需求,那么我们就在app/src下新建一个demo目录(与main平级),然后在demo目录下新建java和res这两个目录,这样我们就可以在这里编写demo渠道特有的功能了。java用于存放代码,res用于存放资源,如果还要覆写AndroidManifest文件中的内容,就在demo目录下再新建一个AndroidManifest.xml文件即可。

猜你喜欢

转载自blog.csdn.net/Ein3614/article/details/82630594
今日推荐