CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-tns-platform-declarations

Platform-specific TypeScript declarations for NativeScript for accessing native objects

84

1.23x
Overview
Eval results
Files

android-platform.mddocs/

Android Platform

Comprehensive Android SDK type definitions with support for multiple API levels (17-29) and AndroidX libraries. Provides native Android object access, memory management, and NativeScript-specific integration.

Capabilities

Android API Entry Points

Multiple Android API level variants for different minimum SDK requirements.

// Default entry point (API level 17)
/// <reference path="./node_modules/tns-platform-declarations/android.d.ts" />

// API level specific variants (13 levels supported)
/// <reference path="./node_modules/tns-platform-declarations/android-17.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-18.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-19.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-20.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-21.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-22.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-23.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-24.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-25.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-26.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-27.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-28.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android-29.d.ts" />

Usage Examples:

// Use default API level 17
/// <reference path="./node_modules/tns-platform-declarations/android.d.ts" />

// Or specify higher API level for additional features
/// <reference path="./node_modules/tns-platform-declarations/android-24.d.ts" />

const permission = android.Manifest.permission.CAMERA;

Core Android Functions

Essential utility functions for Android development and native object handling.

/**
 * Convert a JavaScript number to Android float primitive
 * @param num - The number to convert
 * @returns Android float value
 */
declare function float(num: number): any;

/**
 * Convert a JavaScript number to Android long primitive  
 * @param num - The number to convert
 * @returns Android long value
 */
declare function long(num: number): any;

/**
 * Trigger garbage collection in JavaScript
 */
declare var gc: () => void;

/**
 * Release the reference to the wrapped native Java object
 * @param object - The Java object to release
 */
declare function __releaseNativeCounterpart(object: java.lang.Object): void;

Usage Examples:

// Convert numbers to Android primitives
const androidFloat = float(3.14159);
const androidLong = long(1234567890);

// Create and manage Java objects
const javaString = new java.lang.String("Hello Android");
// ... use the object
__releaseNativeCounterpart(javaString); // Release when done

// Trigger garbage collection
gc();

Native Array Support

Enhanced array constructor for creating typed native arrays.

interface ArrayConstructor {
  /**
   * Create a typed native array
   * @param type - The type of array elements  
   * @param count - Number of elements
   * @returns Native array instance
   */
  create(type: any, count: number): any;
}

declare module native {
  export class Array<T> {
    constructor();
    /** Number of elements in the array */
    length: number;
    /** Array element access by index */
    [index: number]: T;
  }
}

Usage Examples:

// Create native arrays
const intArray = Array.create("int", 10);
const stringArray = Array.create(java.lang.String, 5);

// Use native array wrapper
const nativeArray = new native.Array<string>();
nativeArray[0] = "first item";
console.log(nativeArray.length);

Android SDK API

Complete Android SDK type definitions providing access to all Android framework classes and constants.

declare module android {
  export class Manifest extends java.lang.Object {
    public static class: java.lang.Class<android.Manifest>;
    public constructor();
  }
  
  export module Manifest {
    export class permission extends java.lang.Object {
      public static class: java.lang.Class<android.Manifest.permission>;
      // Core permissions
      public static ACCESS_COARSE_LOCATION: string;
      public static ACCESS_FINE_LOCATION: string;
      public static ACCESS_NETWORK_STATE: string;
      public static ACCESS_WIFI_STATE: string;
      public static BLUETOOTH: string;
      public static BLUETOOTH_ADMIN: string;
      public static CAMERA: string;
      public static CALL_PHONE: string;
      public static CHANGE_NETWORK_STATE: string;
      public static CHANGE_WIFI_STATE: string;
      public static INTERNET: string;
      public static READ_CONTACTS: string;
      public static READ_EXTERNAL_STORAGE: string;
      public static READ_PHONE_STATE: string;
      public static RECORD_AUDIO: string;
      public static VIBRATE: string;
      public static WAKE_LOCK: string;
      public static WRITE_EXTERNAL_STORAGE: string;
      // And many more Android permissions...
    }
  }
}

Usage Examples:

// Access Android permissions
const locationPermission = android.Manifest.permission.ACCESS_FINE_LOCATION;
const cameraPermission = android.Manifest.permission.CAMERA;
const internetPermission = android.Manifest.permission.INTERNET;

// Create Android manifest reference
const manifest = new android.Manifest();

AndroidX Support Libraries

AndroidX library type definitions for modern Android development with comprehensive compatibility matrix.

// AndroidX declarations are included automatically with each API level
// Available androidx versions: 17, 23, 26, 28, 29

declare module androidx {
  // AndroidX support library types are automatically included
  // Content varies by androidx version - see compatibility matrix below
}

AndroidX Version Compatibility Matrix:

Android API LevelAndroidX VersionFile SizeKey Components
android-17.d.tsandroidx-17.d.ts~15MBBasic support libraries, legacy compatibility
android-18.d.tsandroidx-17.d.ts~15MBSame as API 17
android-19.d.tsandroidx-17.d.ts~15MBSame as API 17
android-20.d.tsandroidx-17.d.ts~15MBSame as API 17
android-21.d.tsandroidx-17.d.ts~15MBSame as API 17
android-22.d.tsandroidx-17.d.ts~15MBSame as API 17
android-23.d.tsandroidx-23.d.ts~22MBAppCompat, RecyclerView, CardView
android-24.d.tsandroidx-23.d.ts~22MBSame as API 23
android-25.d.tsandroidx-23.d.ts~22MBSame as API 23
android-26.d.tsandroidx-26.d.ts~28MBArchitecture Components, Room, ViewModel
android-27.d.tsandroidx-26.d.ts~28MBSame as API 26
android-28.d.tsandroidx-28.d.ts~34MBNavigation, WorkManager, CameraX
android-29.d.tsandroidx-29.d.ts~36MBJetpack Compose (early), Biometric

Usage Examples:

// AndroidX types are available automatically based on API level
/// <reference path="./node_modules/tns-platform-declarations/android-28.d.ts" />

// API 28+ includes advanced AndroidX components
const workRequest = new androidx.work.OneTimeWorkRequest.Builder(MyWorker.class).build();
const navController = androidx.navigation.Navigation.findNavController(activity, R.id.nav_host_fragment);

// API 23+ includes basic AndroidX components  
const recyclerView = new androidx.recyclerview.widget.RecyclerView(context);
const cardView = new androidx.cardview.widget.CardView(context);

// All API levels include basic support
const appCompatActivity = new androidx.appcompat.app.AppCompatActivity();

API Level Structure

Each Android API level entry point follows this structure:

/// <reference path="./android/android-platform-{level}.d.ts" />
/// <reference path="./android/androidx-{version}.d.ts" />  
/// <reference path="./android/common.d.ts" />

Where:

  • android-platform-{level}.d.ts contains the complete Android SDK for that API level
  • androidx-{version}.d.ts contains AndroidX support library definitions
  • common.d.ts includes common declarations and NativeScript widgets

Memory Management

Proper memory management is crucial when working with native Android objects:

// Always release native objects when done
const javaObject = new java.lang.Object();
try {
  // Use the object...
} finally {
  __releaseNativeCounterpart(javaObject);
}

// Trigger garbage collection periodically
gc();

Performance Notes

  • API Level Selection: Choose the lowest API level that meets your requirements
  • Memory Usage: Android platform declarations are memory-intensive
  • Build Performance: Use skipLibCheck: true for faster compilation
  • Object Lifecycle: Always release native objects to prevent memory leaks

Install with Tessl CLI

npx tessl i tessl/npm-tns-platform-declarations

docs

android-platform.md

index.md

ios-platform.md

native-interop.md

nativescript-widgets.md

tile.json