如何知道APK构建的Android API

时间:2015-05-19 22:47:15

标签: android build

使用给定的API级别生成APK时,有没有办法知道哪个API级别用于编译只有APK文件?

minSdkVersion不一定与用于编译项目的API级别相匹配,如果minSdkVersion>这只是Android安装程序阻止应用程序的注释。当前版本

5 个答案:

答案 0 :(得分:2)

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

的方法

答案 1 :(得分:2)

这是获取我的应用的targetSdkVersionversionCode的另一种方法:

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"
    }

答案 2 :(得分:1)

你可以获得的所有东西都应该是你从PackageManager获得的ApplicationInfo,所以你应该得到ApplicationInfo,然后看看你可以从中得到什么,即:

getPackageManager().getPackageInfo(...).targetSdkVersion

参考:http://developer.android.com/reference/android/content/pm/ApplicationInfo.html

检查参考文献的“字段”部分。看看“sourceDir”字段。

我希望这对你有任何帮助,请在任何帮助/错过你的情况下投票/投票。

最好的问候。

答案 3 :(得分:0)

试试这个:

android.os.Build.VERSION.SDK_INT

答案 4 :(得分:0)

如何知道您的应用程序正在运行哪个Android API:

int myAPI = Build.VERSION.SDK_INT;

如何知道APK的versionCode已构建:

String versionCode = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0).versionName;

注意:ctx是应用程序上下文。

但更具体地说,将APK文件的扩展名更改为.zip,然后提取Manifest.xml,然后您就会看到versionCodeminSdkVersion,{{ 1}}等......