NativeScript Android API 版本检查

3

我使用以下命令将Android平台添加到我的NativeScript应用程序中:

tns platform add android

现在我无法确定已添加平台的API版本是哪个?

如何确定这一点呢?

2个回答

9
platform add android命令将获取所有必要的文件,以开始构建Android应用程序。我假设您正在询问android应用程序的compileSdk版本 - 这是在构建时确定的。
当您执行tns build/run android时,除非指定了--compileSdk 21/22/23/24/25标志,否则将使用系统上可用的最新版本。
例如,如果我最近从Android SDK Manager下载了Android SDK Build-Tools和SDK-Platform 25,则上传到设备上的应用程序包将使用平台25构建。
Medium有一篇关于compileSdk、targetSdk和minSdk的好文章,我建议您阅读->https://medium.com/google-developers/picking-your-compilesdkversion-minsdkversion-targetsdkversion-a098a0341ebd#.eoe0x9isx 祝你好运!

我不熟悉原生Android开发,但我想了解API版本的含义,因为我想为API 19即Android 4.4构建我的应用程序。Nativescript是否有类似于Cordova中的Config.xml文件? - krv
您可以自由地为运行在API级别低至17的Android设备构建Android应用程序,并且您可以使用低至21的compileSdk构建包。例如,即使您使用Build-tools 25构建包,也可以在API 19手机上部署应用程序。现在,开发人员有责任相应地处理API级别的差异,但在编写NativeScript时,在99%的情况下不需要这样做。每个NativeScript应用程序都可用的核心模块已经处理了这个问题,您可能只需要使用它们来编写下一个应用程序。 - pkanev
如果我没记错的话,我可以构建应用程序而不必担心 API 级别,这与 Cordova 的情况不同。 - krv
@krv 正确,如果有疑问,您可以在 Android 文档中查看您想要使用的功能是否适用于目标设备的级别! - pkanev
感谢您的澄清和资源。然而,我现在遇到了一个需要在运行时检查Android版本的情况,即if(VERSION>xx)。如果可能的话,您会如何处理?Google在这方面没有提供帮助... - radu_m
2
@radu_m 检查 Android 版本的方法与在 Android 中一样 - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){ ... } - https://developer.android.com/reference/android/os/Build.VERSION_CODES.html 是您可以找到所有版本代码的地方。 - pkanev

1

latest docs say:

https://docs.nativescript.org/angular/ng-framework-modules/platform

import { isAndroid, isIOS, device, screen } from "tns-core-modules/platform";
class DeviceInfo {
    constructor(
        public model: string,
        public deviceType: string,
        public os: string,
        public osVersion: string,
        public sdkVersion: string,
        public language: string,
        public manufacturer: string,
        public uuid: string
    ) { }
}

class ScreenInfo {
    constructor(
        public heightDIPs: number,
        public heightPixels: number,
        public scale: number,
        public widthDIPs: number,
        public widthPixels: number
    ) { }
}

@Component({
    moduleId: module.id,
    templateUrl: "./platform-module-example.html"
})
export class PlatformModuleExampleComponent {
    public isItemVisible: boolean = false;
    public deviceInformation: DeviceInfo;
    public isItemVisibleScreenInfo: boolean = false;
    public screenInformation: ScreenInfo;
    public deviceInfoButton: string = "Show device info";
    public screenInfoButton: string = "Show/Hide screen info";

    constructor() {
        this.deviceInformation = new DeviceInfo(
            device.model,
            device.deviceType,
            device.os,
            device.osVersion,
            device.sdkVersion,
            device.language,
            device.manufacturer,
            device.uuid);
        this.screenInformation = new ScreenInfo(
            screen.mainScreen.heightDIPs,
            screen.mainScreen.heightPixels,
            screen.mainScreen.scale,
            screen.mainScreen.widthDIPs,
            screen.mainScreen.widthPixels);
    }

    public checkPlatformType(args) {
        let message = "";
        if (isAndroid) {
            message = "You are using Android device";
        } else if (isIOS) {
            message = "You are using IOS device";
        }
        alert(message);
    }

    public deviceInfo(args) {
        if (this.isItemVisible) {
            this.isItemVisible = false;
            this.deviceInfoButton = "Show device info";
        } else {
            this.isItemVisible = true;
            this.deviceInfoButton = "Hide device info";
        }
    }

    public screenInfo(args) {
        if (this.isItemVisibleScreenInfo) {
            this.isItemVisibleScreenInfo = false;
            this.screenInfoButton = "Show screen info";
        } else {
            this.isItemVisibleScreenInfo = true;
            this.screenInfoButton = "Hide screen info";
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接