@@ -230,9 +230,11 @@ public static void readProperties(ModuleInfo moduleInfo, InputStream inputStream
230230 if (!readName || isInvalidValue (moduleInfo .name )) {
231231 moduleInfo .name = makeNameFromId (moduleInfo .id );
232232 }
233- // We can't accept too long version names for usability reason.
234- if (!readVersion || moduleInfo .version .length () > 16 ) {
233+ if (!readVersion ) {
235234 moduleInfo .version = "v" + moduleInfo .versionCode ;
235+ } else {
236+ moduleInfo .version = shortenVersionName (
237+ moduleInfo .version , moduleInfo .versionCode );
236238 }
237239 if (!readDescription || isInvalidValue (moduleInfo .description )) {
238240 moduleInfo .description = "" ;
@@ -292,4 +294,15 @@ private static String makeNameFromId(String moduleId) {
292294 return moduleId .substring (0 , 1 ).toUpperCase (Locale .ROOT ) +
293295 moduleId .substring (1 ).replace ('_' , ' ' );
294296 }
297+
298+ // Make versionName no longer than 16 charters to avoid UI overflow.
299+ public static String shortenVersionName (String versionName , long versionCode ) {
300+ if (versionName == null ) return "v" + versionCode ;
301+ if (versionName .length () <= 16 ) return versionName ;
302+ int i = versionName .lastIndexOf ('.' );
303+ if (i != -1 && i <= 16 && versionName .indexOf ('.' ) != i
304+ && versionName .indexOf (' ' ) == -1 )
305+ return versionName .substring (0 , i );
306+ return "v" + versionCode ;
307+ }
295308}
0 commit comments