前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio3.0前后使用signingConfigs打包APK小记

Android Studio3.0前后使用signingConfigs打包APK小记

作者头像
木溪bo
修改2019-08-08 16:54:22
2K0
修改2019-08-08 16:54:22
举报
文章被收录于专栏:木溪知识加油站
在此记录一下Android Studio3.0前后打包的一些区别,以及在打包时debug和release版本如何使用同一个keystore。

在第三方sdk调试如微信支付等操作时,debug版本的apk会因为keystore与release的不同而无法吊起微信支付、登录、授权等服务。因为一般我们在微信开发者平台注册的keystore是release版的,只有与微信开发者平台一致才能使用微信相关的服务操作。

代码语言:txt
复制
apply plugin: 'com.android.application'
android {
    compileSdkVersion 27
//    buildToolsVersion '27'//可以用高版本的build-tool去构建一个低版本的sdk工程
    defaultConfig {
        applicationId "com.***"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    signingConfigs {
 //debug和release版本配置使用同一个jks,便于微信支付调试
//------------------------方式 1 -----------------------------
//        release {
//            //.jks文件放在MyView项目根目录下
//            storeFile rootProject.file('../MyView/myviewkey.jks')
//            storePassword "******"
//            keyAlias "name"
//            keyPassword "***"
//        }
//        debug {
//            //.jks文件放在MyView项目根目录下
//            storeFile rootProject.file('../MyView/myviewkey.jks')
//            storePassword "******"
//            keyAlias "name"
//            keyPassword "***"
//        }
// buildTypes {
//      默认不做更改
//    }
//------------------------方式 1 -------------end----------------

//------------------------方式 2 -----------------------------
//方式2中注意buildTypes { }里的配置写法
        appkey {
            //myviewkey.jks文件放在MyView项目根目录下
            storeFile rootProject.file('../MyView/myviewkey.jks')
            storePassword "***"
            keyAlias "myviewkey"
            keyPassword "***"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.appkey
        }
        debug {
            signingConfig signingConfigs.appkey
        }
    }
//------------------------方式 2 -------------end----------------
    productFlavors {
    }
    buildToolsVersion '28.0.1'
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
    //更改apk打包后的名称,Android studio3.0之前
//    android.applicationVariants.all {
//        variant ->
//            variant.outputs.each {
//                output -> output.outputFile = new File(output.outputFile.parent, "ljy_" + defaultConfig.versionCode + "_v" + defaultConfig.versionName + "_" + buildType.name + ".apk");
//            }
//    }
    //更改apk打包后的名称,Android studio3.0之后
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "myview_" + defaultConfig.versionCode + "_v" + defaultConfig.versionName + "_" + buildType.name + ".apk"
        }
    }
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:design:27.+'
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    testImplementation 'junit:junit:4.12'
 
}

repositories {
    mavenCentral()
}

——2019-08-08修订

其中defaultConfig.versionCode、defaultConfig.versionName已经被variant.versionCode、variant.versionName取代,如果强行使用会报错

WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.

It will be removed at the end of 2019.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.10.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在此记录一下Android Studio3.0前后打包的一些区别,以及在打包时debug和release版本如何使用同一个keystore。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档