Skip to content

HAPI Structures, Java11, and Android API levels #1627

Open
@jingtang10

Description

@jingtang10

This is an issue @vitorpamplona raised in the process of implementing #1403.

PR #1603 introduces new dependencies such as CQL evalutor, CQL engine, and CQL translator. They use HAPI version 6.0.1 which is compiled using Java11. There are certain Java11 APIs that are not available on older Android versions, especially pre Android API 26. For example, java.lang.reflect.Method.getParameterCount().

As a result, with this PR, the workflow library will crash on Android API level 24. Please note, however, that although the API java.lang.reflect.Method.getParameterCount() is used in HAPI, we do not invoke code paths in HAPI using this API through our usage in the FHIR Engine and SDC library. Only in the workflow library in this PR. In other words, when I tested the FHIR Engine and SDC library with HAPI 6 on Android API level 24, there's no crash caused by the missing of this API.

Android API levels 26+ support Java11 APIs. So the above PR works fine in Android API 26+. This means that we will need to update the min api level for the workflow library to API 26.

At the moment, our gradle files are written so that all libraries share the same min api level. This will need to be changed so we do not raise API level above 24 for users of FHIR engine and SDC library.

cc: @joiskash

Metadata

Metadata

Assignees

Labels

P1High priority issuetype:processCreate or improve processes

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions