【发布时间】:2015-05-20 08:45:23
【问题描述】:
当使用给定的 API 级别生成 APK 时,有没有办法知道使用哪个 API 级别来编译只有 APK 文件?
minSdkVersion 不一定与编译项目所用的 API 级别相匹配,它只是一个说明,如果 minSdkVersion > 当前版本,Android 安装程序会阻止应用程序
【问题讨论】:
当使用给定的 API 级别生成 APK 时,有没有办法知道使用哪个 API 级别来编译只有 APK 文件?
minSdkVersion 不一定与编译项目所用的 API 级别相匹配,它只是一个说明,如果 minSdkVersion > 当前版本,Android 安装程序会阻止应用程序
【问题讨论】:
这是获取我的应用程序的targetSdkVersion 和versionCode 的另一种方式:
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
int versionCode = packageInfo.versionCode;
int targetSdkVersion = packageInfo.applicationInfo.targetSdkVersion;
}
catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
使用Android Studio,将值定义到我的build.gradle 文件中
defaultConfig {
applicationId "com.tuna.hello.androidstudioapplication"
minSdkVersion 9
targetSdkVersion 22
versionCode 12
versionName "1.0"
}
【讨论】:
BuildConfig.VERSION_CODE;
和
getPackageManager().getPackageInfo(...).
会给我们:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
android:versionCode="1"
android:versionName="...">
versionCode,在本例中为 1。
用于编译.apk的API级别我找不到在运行时查阅它的方法,但如果你使用gradle你可以检查它:
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
...
}
如果您使用的是 .iml,使用 IntelliJ 项目配置 GUI 进行配置:
<component name="NewModuleRootManager" inherit-compiler-output="true">
...
<orderEntry type="inheritedJdk" />
...
</component>
project.properties:
# This file is automatically generated by IntelliJ IDEA
# Project target.
target=Google Inc.:Google APIs:22
但由于 build.gradle、project.iml 和 project.properties 没有附带 .apk 我想不出一种在运行时获取 compileSdkVersion 或解压缩 .apk 的方法
【讨论】:
你能得到的一切都应该在你从 PackageManager 得到的 ApplicationInfo 上,所以你应该得到 ApplicationInfo,然后看看你能从中得到什么,即:
getPackageManager().getPackageInfo(...).targetSdkVersion
参考:http://developer.android.com/reference/android/content/pm/ApplicationInfo.html
检查参考的“字段”部分。查看“sourceDir”字段。
我希望这对你有任何帮助,请投票赞成/反对任何帮助/误导你的事情。
最好的问候。
【讨论】:
试试这个:
android.os.Build.VERSION.SDK_INT
【讨论】:
如何知道您的应用正在运行哪个 Android API:
int myAPI = Build.VERSION.SDK_INT;
如何知道 APK 的 versionCode 已构建:
String versionCode = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0).versionName;
注意:ctx 是应用上下文。
但是更具体地说,将您的APK文件的扩展名更改为.zip,然后将Manifest.xml解压缩,然后您可以看到versionCode、minSdkVersion、targetSdkVersion等...
【讨论】: