This documentation is not maintained. Please refer to doc.castsoftware.com/technologies to find the latest updates.

Summary: This document provides information about the extension providing Android technologies support for the com.castsoftware.jee extension.

Extension ID

com.castsoftware.android

What's new?

See Android 2.1 - Release Notes.

Description

This extension provides support for Android technologies. This extension works together with the com.castsoftware.jee and the com.castsoftware.kotlin extension. If your JEE or Kotlin application source code uses Android technologies you should install this extension.

Features

AndroidManifest file

This file will be analyzed to understand whether the application is indeed an Android application. Some objects (exposed service/activity/receiver) are created under the manifest to represent exposed services. Then links are created from these services to the methods which are listeners of these services.

Android Event handling support from XML file

  • onClickListener()
  • onLongClickListener()
  • onFocusChangeListener()
  • onKeyListener()
  • onTouchListener()
  • onCreateContextMenu()

Android Event handling support from setEventListenner and addEventListener in widgets

  • The lambda function can be used to define the event handler. Sample: Button.setOnClickListenner(new View.OncLickListentHandler{...}), with lamda function: Button.setOnClickListenner( (v) → {})

Android Type XML support

  • Widget Layout
  • AndroidManifest file

WebServices support

Support for third-party WebServices is provided:

  • httpClient library with namespace cz.msebera.android.httpclient.
  • httpClient library with namespace org.apache.http.client.HttpClient.
  • httpUrlConnection from java.net.URL and java.net.HttpURLConnection.
  • Create webservice via AsyncTask class of Android.
  • Transaction between client and server on fullstack project.
  • Transaction between event handler widget and http method call.

End to End transactions

  • End to End transactions are resolved:
    • Entry point: layout ui xml file, exposed services
    • End point: web service, persisting data, intent resource calls

Supported Android versions

VersionSupported
4.4 - 10.0

(tick)

Technology support

TechnologySupported
Java

(tick)

Kotlin(tick)

Supported libraries

androidx.room for kotlin

import androidx.room.Entity

@Entity(tableName = "contact", primaryKeys = ["contactId", "contactUuid"])
data class Contact(
    var contactId: String = "",
    var contactUuid: String = "",
    var displayName: String = "",
    var pictureUri: String? = null,
    var contactInfo: List<ContactAddressBook> = listOf()
) : Parcelable

import androidx.room.*

@Dao
abstract class ContactDao {
    @Query("SELECT * FROM contact")
    abstract fun getAll(): LiveData<List<Contact>>

    @Update
    abstract fun updateContact(contact: Contact)

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    abstract fun insertAll(contact: List<Contact>): List<Long>
}

android.app.Application and com.ad4screen.sdk.A4SApplication for java and kotlin

"onCreate" and "onApplicationCreate" methods are now called from the android application object.

Function Point, Quality and Sizing support

Function Points
(transactions)
(tick)A green tick indicates that OMG Function Point counting and Transaction Risk Index are supported.
Quality and Sizing(tick)A green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist.

CAST Imaging Core compatibility

ReleaseOperating SystemSupported
8.3.xMicrosoft Windows(tick)

Dependencies with other extensions

Some CAST extensions require the presence of other CAST extensions in order to function correctly. The Android extension requires that the following other CAST extensions are also installed:

Download and installation instructions

The extension will be automatically installed by CAST Imaging Console.

Source code discovery

The Android extension does not contain any discoverers or extractors, therefore, no "Android" specific projects will be detected. Your Android source code should be part of a larger Java/JEE related project which you are also analyzing, and as such, JEE Analysis Units and/or Kotlin Analysis Units will be created automatically - simply ensure that the path to your Android source code is included in these JEE/Kotlin Analysis Units:

What results can you expect?

Android application

Transactions

Web services linker

Function points

Objects

IconDescription

Android EditText, Android TextView

Android Button, CheckBox, Item

Android EventHandler

Android Get Resource Service

Android Put Resource Service

Android Post Resource Service

Android Delete Resource Service

Android Shared preferences, Android internal storage, Android external storage

Android Application

Android UI XML File

Android exposed service, Android exposed activity

Android exposed receiver

Android intent resource

Android room entity

Android GridView, Android Group, Android Layout, Android LinearLayout, Android ListView, Android Menu, Android RelativeLayout, Android Spinner, Android TimePicker, Android Undefined Widget, Android WebView.

Structural Rules

The following structural rules are provided:

Known limitations

  • CAST recommends using the most recent stable release of CAST Imaging Core with the extension for best results.
  • Some links won't be resolved because of missing jar file.
  • There are some limitations for transactions with Lamda Expressions.
  • Web Service URI name isn't stable for more complex situations.