@@ -22,6 +22,7 @@ import kotlin.io.path.Path
2222import kotlin.io.path.div
2323import kotlin.io.path.exists
2424import kotlin.io.path.readText
25+ import kotlin.jvm.java
2526
2627class ApkAnalyzerRepo @Inject constructor() {
2728
@@ -69,21 +70,43 @@ class ApkAnalyzerRepo @Inject constructor() {
6970 }
7071 )
7172 val yamlString = yamlFile.readText()
72- val metaInfo: MetaInfo = yaml.load(yamlString)
73-
74- // Building gradle info
75- return GradleInfo (
76- versionCode = metaInfo.versionInfo?.versionCode,
77- versionName = metaInfo.versionInfo?.versionName,
78- minSdk = metaInfo.sdkInfo?.minSdkVersion?.let {
79- val androidVersionName = AndroidVersionIdentifier .getVersion(it)
80- GradleInfo .Sdk (it, androidVersionName)
81- },
82- targetSdk = metaInfo.sdkInfo?.targetSdkVersion?.let {
83- val androidVersionName = AndroidVersionIdentifier .getVersion(it)
84- GradleInfo .Sdk (it, androidVersionName)
85- }
86- )
73+ val metaInfo : Any = yaml.load(yamlString)
74+ if (metaInfo is MetaInfo ){
75+ // Backward compatible
76+
77+ // Building gradle info
78+ return GradleInfo (
79+ versionCode = metaInfo.versionInfo?.versionCode,
80+ versionName = metaInfo.versionInfo?.versionName,
81+ minSdk = metaInfo.sdkInfo?.minSdkVersion?.let {
82+ val androidVersionName = AndroidVersionIdentifier .getVersion(it)
83+ GradleInfo .Sdk (it, androidVersionName)
84+ },
85+ targetSdk = metaInfo.sdkInfo?.targetSdkVersion?.let {
86+ val androidVersionName = AndroidVersionIdentifier .getVersion(it)
87+ GradleInfo .Sdk (it, androidVersionName)
88+ }
89+ )
90+ }else if (metaInfo is LinkedHashMap <* , * >) {
91+ // Handle LinkedHashMap format
92+ val versionInfo = metaInfo[" versionInfo" ] as ? LinkedHashMap <* , * >
93+ val sdkInfo = metaInfo[" sdkInfo" ] as ? LinkedHashMap <* , * >
94+
95+ return GradleInfo (
96+ versionCode = versionInfo?.get(" versionCode" )?.toString()?.toIntOrNull(),
97+ versionName = versionInfo?.get(" versionName" ) as ? String ,
98+ minSdk = (sdkInfo?.get(" minSdkVersion" ) as ? Int )?.let {
99+ val androidVersionName = AndroidVersionIdentifier .getVersion(it)
100+ GradleInfo .Sdk (it, androidVersionName)
101+ },
102+ targetSdk = (sdkInfo?.get(" targetSdkVersion" ) as ? Int )?.let {
103+ val androidVersionName = AndroidVersionIdentifier .getVersion(it)
104+ GradleInfo .Sdk (it, androidVersionName)
105+ }
106+ )
107+ }else {
108+ error(" Unsupported meta info type: ${metaInfo::class .simpleName} . Expected MetaInfo or LinkedHashMap" )
109+ }
87110 }
88111
89112 /* *
0 commit comments