- const set<unsigned> &sdk_api_levels = sdk.get_supported_api_levels();
- const set<unsigned> &ndk_api_levels = ndk.get_supported_api_levels();
- unsigned highest_common = 0;
- for(set<unsigned>::const_reverse_iterator i=sdk_api_levels.rbegin(); (!highest_common && i!=sdk_api_levels.rend()); ++i)
- if(ndk_api_levels.count(*i))
- highest_common = *i;
-
- if(!highest_common)
- throw runtime_error("No usable Android platforms found");
-
- sdk.select_api_level(highest_common);
- ndk.select_api_level(highest_common);
+ if(uint64_t common_api_levels = sdk.get_supported_api_levels()&ndk.get_supported_api_levels())
+ {
+ unsigned api = 0;
+ for(unsigned i=32; i>0; i>>=1)
+ api += i*!!(common_api_levels>>(api+i));
+ builder.get_logger().log("tools", format("Using Android API level %d", api));
+ sdk.select_api_level(api);
+ ndk.select_api_level(api);
+ }
+ else
+ builder.get_logger().log("problems", "No usable Android platforms found");