关于AndroidStudio的打包数字签名以及多渠道发布

时间:2023-03-09 01:47:05
关于AndroidStudio的打包数字签名以及多渠道发布

AndroidStudio右侧Gradle里边的build(工程下的)是可以生成未签名的debug和release的apk包生成前可以先clean一下工程

app下的build.gradle里边的

lintOptions{
abortOnError false
}
是用来取消检查错误直接打包

buildTypes {
//设置为true进行混淆proGuard
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

是用来混淆 默认是false

//配置软件包打包的时候 准备不同的渠道
productFlavors {
//渠道的名称 生成不同的包
baidu {

applicationId  "cn.fangz.baidu"

// 对resValue在java代码中的使用:String app_id = getResources().getString(R.string.app_id);

resValue("string", "app_id", "50074")

resValue("string", "app_start", "1")

// 对manifestPlaceholders中资源的使用:在AndroidManifest.xml文件中的application节点下

// andorid:icon="${icon}"

//android:app_name="${app_name}"

manifestPlaceholders = [app_name: "@string/app_name_agiledata", icon: "@drawable/ic_launcher"]

}

qihoo {
minSdkVersion 10
applicationId 'com.ceshi.updateadapter.qihoo.app'
}
}

对应于不同渠道由于appid不同所以生成了不同的版本的apk文件
还有就是可以在src下建立free paid文件夹建立不同的AndroidManifest.xml文件修改入口即可运行一个程序的不同版本如果没有的资源会去找main文件夹下的资源(类似国际化) 在Build Variants 修改运行的程序

以上都是放在android 下

Build菜单里生成keystore文件一般放在工程目录下 之后签名时需要选择目录就是cd../ 上级目录里选 最后在buildtype左边小栏选择release版本 ok

apply plugin: 'com.android.application'

android {
//数字签名证书以及密钥温家的配置 可以在以后不同的渠道设置
signingConfigs {
mykeystore {
keyAlias 'my_release_key'
keyPassword '123456'
storeFile file('../release.jks')
storePassword '123456'
}
}
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.ceshi.updateadapter"
minSdkVersion 9
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
//设置为true进行混淆proGuard
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.mykeystore
}
debug {
}
}
lintOptions {
abortOnError false
}
//配置软件包打包的时候 准备不同的渠道
productFlavors {
//渠道的名称 生成不同的包

baidu {

applicationId  "cn.fangz.baidu"

// 对resValue在java代码中的使用:String app_id = getResources().getString(R.string.app_id);

resValue("string", "app_id", "50074")

resValue("string", "app_start", "1")

// 对manifestPlaceholders中资源的使用:在AndroidManifest.xml文件中的application节点下

// andorid:icon="${icon}"

//android:app_name="${app_name}"

manifestPlaceholders = [app_name: "@string/app_name_agiledata", icon: "@drawable/ic_launcher"]

}

        qihoo {
minSdkVersion 10
applicationId 'com.ceshi.updateadapter.qihoo.app'
} paid{
minSdkVersion 10
applicationId 'com.ceshi.updateadapter.paid.app'
} free{
minSdkVersion 10
applicationId 'com.ceshi.updateadapter.free.app'
} }
} dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.0'
//选择性对应不同渠道去与依赖不同的jar包
    paidCompile files('src/libs/ShareSDK-QQ-2.7.9.jar');
  freeCompile file('src/libs/123.jar');
}

最后值得一说的是 如果不同渠道所需的java文件 如同名的Activity内容逻辑不一样的话  可以建立对应于main文件夹的相应文件夹 对应于包下的同名Activity实现不同的逻辑即可

关于AndroidStudio的打包数字签名以及多渠道发布