TMS Service

Introduction

In order to upload applications to server and deploy them successfully on devices, following conditions should be met:

  • Manifest files should be adjusted to have required metadata

  • apk files must be signed with appropriate keys

Adjusting the Manifest File

Fields below should be in AndroidManifest.xml, under manifest -> application -> meta-data tags, as name-value pairs.

NameTypeLengthDescriptionExampleRequired

app_name

String

At most 20

Application name with application type prefix

“LYL_COMPANYNAME”

Yes

app_model_type

String

At most 8

Model type name (should match with model type name in ATMS)

“400TR”

Yes

app_version

Integer

-

Version of the application

"1"

Yes

saleactivity_name

String

not defined

Used by TLauncher App

"MyExampleSaleActivy"

No

Separate apks should be created for 400TR and 1000TR devices. The apk prepared for 400TR should have 400TR information in the XML file. The apk prepared for 1000TR should have 1000TR information.

Example 400TR:

<manifest ... >
    ...
    <application ... >
        ...
        <meta-data android:name="app_name" android:value="LYL_COMPANYNAME" /> // if you are Retail developer then "LYL_COPMANYNAME" , if you are an Bank developer "BNK_COMPANYNAME"
        <meta-data android:name="app_model_type" android:value="400TR" /> // For 400TR devices
        <meta-data android:name="app_version" android:value="40000110" /> // Change Android  Version major/minor/build into integer. We kindly request this change. Version no must start with 400. Example: 40000110.
        <meta-data android:name="saleactivity_name" android:value=”MyExampleSaleActivy" />  // For just Retail developers. The purpose of this line is to fork your Sale App from Tlauncher
     </application>
...

Example 1000TR:

<manifest ... >
    ...
    <application ... >
        ...
        <meta-data android:name="app_name" android:value="LYL_COMPANYNAME" /> // if you are Retail developer then "LYL_COPMANYNAME" , if you are an Bank developer "BNK_COMPANYNAME"
        <meta-data android:name="app_model_type" android:value="1000TR" /> // For 1000TR devices
        <meta-data android:name="app_version" android:value="100000110" /> // Change Android  Version major/minor/build into integer. We kindly request this change. Version no must start with 1000. Example: 100000110.
        <meta-data android:name="saleactivity_name" android:value=”MyExampleSaleActivy" />  // For just Retail developers. The purpose of this line is to fork your Sale App from Tlauncher
     </application>
...    

Example 330TR:

<manifest ... >
    ...
    <application ... >
        ...
        <meta-data android:name="app_name" android:value="LYL_COMPANYNAME" /> // if you are Retail developer then "LYL_COPMANYNAME" , if you are an Bank developer "BNK_COMPANYNAME"
        <meta-data android:name="app_model_type" android:value="330TR" /> // For 330TR devices
        <meta-data android:name="app_version" android:value="33000110" /> // Change Android  Version major/minor/build into integer. We kindly request this change. Version no must start with 330. Example: 33000110.
        <meta-data android:name="saleactivity_name" android:value=”MyExampleSaleActivy" />  // For just Retail developers. The purpose of this line is to fork your Sale App from Tlauncher
     </application>
...    

To convert version name to manifest data, you can use following example in your build.gradle

apply plugin: 'com.android.application'

// This section is parsing Android manifest file, reads version in the meta-data tag, writes it into version name in gradle
// so that the version shown in the android settinsg is same as version in the meta-tag
def versionFromManifest

task parseManifest() {
    def manifest = new XmlSlurper().parse(file(android.sourceSets.main.manifest.srcFile)).declareNamespace(android: 'http://schemas.android.com/apk/res/android');
    println manifest.@package
    manifest.application["meta-data"].each {
        def m = it.attributes()['android:name'] =~ /app_version/
        if (m.find()) {
            versionFromManifest = it.attributes()['android:value'].toString()
        }
    }
}

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.atms_alpha"
        minSdkVersion 26
        targetSdkVersion 28
        versionCode versionFromManifest.toInteger()
        versionName "${versionFromManifest}"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        setProperty("archivesBaseName", "ATMS_Alpha_" + versionFromManifest)

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

Last updated