gpt4 book ai didi

android - Android:使用Gradle构建带有应用程序“关于”页面中使用的时间戳的.apk

转载 作者:行者123 更新时间:2023-12-03 06:31:00 29 4
gpt4 key购买 nike

我想使用Gradle在文件名中创建带有时间戳的apk,并且还要在有关页面上利用此信息。

Gradle :
(下)在将输出文件创建为DSapp-1.2.0-debug_date_time.apk时工作正常

applicationVariants.all { variant ->
variant.outputs.each { output ->
def project = "DSapp"
def sep = "_"
def version = variant.versionName
def newApkName = project + sep + version + sep + formattedDateD + "_" + formattedDateT + ".apk"

output.outputFile = new File(output.outputFile.parent, newApkName)
}
}

当我尝试使用 buildConfigField
android {
compileSdkVersion 21
buildToolsVersion "22.0.1"

def date = new Date();
def formattedDateD = date.format('ddMMyy');
def formattedDateT = date.format('HHmm');

defaultConfig {
applicationId "com.app_name"
minSdkVersion 18
targetSdkVersion 20
versionCode 1
versionName "1.2.0"



buildConfigField "String", "STRING2", formattedDateD
buildConfigField "String", "STRING3", formattedDateT

}

About.java:
    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);

version_number = (TextView)findViewById(R.id.version_number);
version_number.setText(mVersionName);

mVersionBuild= "( " + BuildConfig.STRING2 +"_"+BuildConfig.STRING3+ " )";
version_build = (TextView)findViewById(R.id.version_build);
version_build.setText(mVersionBuild);

我在 BuildConfig.java中遇到错误
  // Fields from default config.
public static final String STRING2 = 281116;
public static final String STRING3 = 0947;
Error:(15, 40) error: integer number too large: 0947

最佳答案

因此,要实现使用Gradle在文件名中创建带有时间戳的apk,并同时利用关于页面的信息。
我不得不改变我的方法,并放弃了使用buildConfigField的想法,而不是实现上述要求。

Gradle 文件:

给每个versionNameSuffix添加'_' + getDateTime()

applicationVariants.all { variant ->
customAPKname(variant, defaultConfig, versionNameSuffix)
}

因此 buildType的每个部分都将如下所示(调试示例):
debug {
versionNameSuffix '-debug' + '_' + getDateTime()

//to handle customAPKname build
applicationVariants.all { variant ->
customAPKname(variant, defaultConfig, versionNameSuffix)
}
}

android{}之外添加:
//to handle build process with output as: App_Name_versionName-buildType_date_time.apk
def customAPKname(variant, defaultConfig, buildType) {
variant.outputs.each { output ->
def file = output.packageApplication.outputFile
def fileName = "App_Name" + defaultConfig.versionName + buildType + ".apk"
output.packageApplication.outputFile = new File(file.parent, fileName)
}
}

def getDateTime(){
def date = new Date()
def formattedDate = date.format('yyMMdd_HHmm')
return formattedDate
}

现在在About.java文件中:
private TextView version_number, version_build;
private String mVersionName, mVersionBuild;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);

if (BuildConfig.VERSION_NAME.contains("debug")){
mVersionName = "App_Name Software version: " + BuildConfig.VERSION_NAME.substring(0,11);
mVersionBuild = "Build version: " + BuildConfig.VERSION_NAME.substring(12);
}else {
mVersionName = "App_Name Software version: " + BuildConfig.VERSION_NAME.substring(0, 13);
mVersionBuild = "Build version: " + BuildConfig.VERSION_NAME.substring(14);
}

version_number = (TextView)findViewById(R.id.version_number);
version_number.setText(mVersionName);

version_build = (TextView)findViewById(R.id.version_build);
version_build.setText(mVersionBuild);

}

输出(用于调试): App_Name_1.2.0-debug_YYMMDD_HHMM.apk

关于android - Android:使用Gradle构建带有应用程序“关于”页面中使用的时间戳的.apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841408/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com