问题1.首先,apk 打包过程中,应用包名app-release.apk或是app-debug.apk
我们都想改成自己的应用名,百度过后,设置如下:
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true // Zipalign优化
shrinkResources true // 移除无用的resource文件,必须和minifyEnabled 一起使用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 打包后应用名称
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "luoyBiJi_R${defaultConfig.versionName}.${getTime()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
问题2.但是会报错 Absolute path are not supported when setting an output file name,这是版本更新的问题,
解决办法是outputFile.parent改成绝对路径
outputFileName = new File("../../../release/", fileName)
问题3.如此编译不报错了,但是生成的文件不对,没有apk
解决办法:直接点outputFileName = fileName
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true // Zipalign优化
shrinkResources true // 移除无用的resource文件,必须和minifyEnabled 一起使用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 打包后应用名称
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "luoyBiJi_R${defaultConfig.versionName}.${getTime()}.apk"
//output.outputFile = new File(outputFile.parent, fileName)
//outputFileName = new File("../../../release/", fileName)
outputFileName = fileName
}
}
}
}
}
生成结果:
问题4. app-debug.apk也改成特定的名字
解决办法:
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true // Zipalign优化
shrinkResources true // 移除无用的resource文件,必须和minifyEnabled 一起使用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 打包后应用名称
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
def fileName
if (outputFile != null && outputFile.name.endsWith('.apk')) {
if ("release".equals(variant.buildType.name)) {
fileName = "luoyBiJi_R${defaultConfig.versionName}.${getTime()}.apk"
//output.outputFile = new File(outputFile.parent, fileName)
//outputFileName = new File("../../../release/", fileName)
// outputFileName = fileName
} else if ("debug".equals(variant.buildType.name)) {
fileName = "luoyBiJi_dubeg${defaultConfig.versionName}.${getTime()}.apk"
}
outputFileName = fileName
}
}
}
}
//这是系统默认的生成debug.apk的代码,我这边是提出来对比release的
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
生成效果:
总结:多去试错,实际动手才能体会到真的知识和乐趣。
如果还有什么问题,欢迎加入我的Java与Android逆向开发交流QQ群,一起交流进步。