如何通过编程从Android应用程序读取渐变文件属性
build.gradle文件包含以下部分。如何从android应用程序MainActivity如何通过编程从Android应用程序读取渐变文件属性,android,android-studio,gradle,Android,Android Studio,Gradle,build.gradle文件包含以下部分。如何从android应用程序MainActivity android { defaultConfig { applicationId "com.gatta.e.gatta" minSdkVersion 11 targetSdkVersion 21 versionCode 1 versionName "1.0" } } 您不必读取Gradle文件来获取版本代码
android {
defaultConfig {
applicationId "com.gatta.e.gatta"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
}
您不必读取Gradle文件来获取版本代码。以下是活动中的直接方法:
private PackageInfo getPackageInfo() {
PackageInfo pi;
try {
pi = this.getPackageManager().getPackageInfo(
this.getPackageName(), PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException e) {
// TODO: handle this
Log.e("yourMessage", e);
}
return pi;
}
并在您的onCreate(…)
方法中使用此选项,例如获取版本代码:
String versionCode = "" + getPackageInfo().versionCode;
有关PackageInfo
类的更多信息。以及对课程的快速描述:
关于包内容的总体信息。这对应于从AndroidManifest.xml收集的所有信息
我认为您无法读取build.gradle文件中的任何属性,但有一个API可以获取应用程序版本代码和版本名 这是我经常使用的实用类
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
/**
* Utility class used in getting application version code and version name.
*/
public class AppUtils {
/**
* @return Application's version code from the PackageManager.
*/
public static int getAppVersionCode(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (NameNotFoundException e) {
// should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
/**
* @return Application's version name from the PackageManager.
*/
public static String getAppVersionName(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionName;
} catch (NameNotFoundException e) {
// should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
}
以上属性是特定于生成配置的。您可以在java文件中将它们称为BuildConfig.propertyName,因为所有构建配置变量都会自动转换为BuildConfig.java文件中的静态资源。 e、 g.applicationId可以用作
BuildConfig.APPLICATION_ID
在您的情况下,您可以将versionCode称为:
BuildConfig.VERSION_CODE
如果您想要自定义BuildConfig,还可以按如下方式执行:
在build.gradle default config/flavor部分中,使用:
buildConfigField "variable type", "variable name", new Type(var name)
e、 g
multiDexEnabled false
buildConfigField "Boolean", "MY_FIELD", new Boolean(multiDexEnabled).toString
我希望这会有所帮助。此外,我甚至不认为可以使用内置API读取gradle文件,因为似乎并非所有IDE都使用gradle来构建APK,因此不值得实现它。@TheDestroyer12:正确。此外,当您使用Android Studio构建时,似乎build.gradle甚至没有包含在APK中,这是有道理的。