diff options
| author | ruki <[email protected]> | 2019-05-09 22:59:38 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-05-09 11:57:49 +0800 |
| commit | 1911e7fbb69ce21d803d30d61030e2c4d765fb64 (patch) | |
| tree | 7308174d854ef9554414781ce28c94337414613c | |
| parent | 4e43ba19c75172999753a4bcb0f41d30611bf67e (diff) | |
get android build-tools version
| -rw-r--r-- | xmake/modules/detect/sdks/find_android_sdk.lua | 32 | ||||
| -rw-r--r-- | xmake/platforms/android/xmake.lua | 18 | ||||
| -rw-r--r-- | xmake/rules/qt/xmake.lua | 9 |
3 files changed, 42 insertions, 17 deletions
diff --git a/xmake/modules/detect/sdks/find_android_sdk.lua b/xmake/modules/detect/sdks/find_android_sdk.lua index 35a415db8..e7af7114f 100644 --- a/xmake/modules/detect/sdks/find_android_sdk.lua +++ b/xmake/modules/detect/sdks/find_android_sdk.lua @@ -20,6 +20,7 @@ -- imports import("lib.detect.cache") +import("core.base.semver") import("core.base.option") import("core.base.global") import("core.project.config") @@ -42,8 +43,24 @@ function _find_android_sdkdir(sdkdir) end end +-- find the build-tools version of sdk +function _find_sdk_build_toolver(sdkdir) + + -- find the max version + local toolver_max = "0" + for _, dir in ipairs(os.dirs(path.join(sdkdir, "build-tools", "*"))) do + local toolver = path.filename(dir) + if semver.compare(toolver, toolver_max) > 0 then + toolver_max = toolver + end + end + + -- get the max sdk version + return toolver_max ~= "0" and tostring(toolver_max) or nil +end + -- find the android sdk -function _find_android_sdk(sdkdir) +function _find_android_sdk(sdkdir, build_toolver) -- find sdk root directory sdkdir = _find_android_sdkdir(sdkdir) @@ -51,16 +68,19 @@ function _find_android_sdk(sdkdir) return {} end + -- find the build-tools version of sdk + build_toolver = build_toolver or _find_sdk_build_toolver(sdkdir) + -- ok? - return {sdkdir = sdkdir} + return {sdkdir = sdkdir, build_toolver = build_toolver} end -- find android sdk directory -- -- @param sdkdir the android sdk directory --- @param opt the argument options, e.g. {force = true} +-- @param opt the argument options, e.g. {force = true, build_toolver = "28.0.3"} -- --- @return the sdk toolchains. .e.g {sdkdir = ..} +-- @return the sdk toolchains. .e.g {sdkdir = .., build_toolver = "28.0.3"} -- -- @code -- @@ -81,15 +101,17 @@ function main(sdkdir, opt) end -- find sdk - local sdk = _find_android_sdk(sdkdir or config.get("android_sdk") or global.get("android_sdk")) + local sdk = _find_android_sdk(sdkdir or config.get("android_sdk") or global.get("android_sdk"), opt.build_toolver or config.get("build_toolver")) if sdk and sdk.sdkdir then -- save to config config.set("android_sdk", sdk.sdkdir, {force = true, readonly = true}) + config.set("build_toolver", sdk.build_toolver, {force = true, readonly = true}) -- trace if opt.verbose or option.get("verbose") then cprint("checking for the Android SDK directory ... ${color.success}%s", sdk.sdkdir) + cprint("checking for the Build Tools Version of Android SDK ... ${color.success}%s", sdk.build_toolver) end else diff --git a/xmake/platforms/android/xmake.lua b/xmake/platforms/android/xmake.lua index 5dc3a6982..87345da94 100644 --- a/xmake/platforms/android/xmake.lua +++ b/xmake/platforms/android/xmake.lua @@ -43,18 +43,20 @@ platform("android") set_menu { config = { - {category = "Android NDK Configuration" } - , {nil, "ndk", "kv", nil, "The NDK Directory" } - , {nil, "ndk_sdkver", "kv", "auto", "The SDK Version for NDK" } - , {nil, "android_sdk", "kv", nil, "The Android SDK Directory" } + {category = "Android Configuration" } + , {nil, "ndk", "kv", nil, "The NDK Directory" } + , {nil, "ndk_sdkver", "kv", "auto", "The SDK Version for NDK" } + , {nil, "android_sdk", "kv", nil, "The Android SDK Directory" } + , {nil, "build_toolver", "kv", nil, "The Build Tool Version of Android SDK" } } , global = { - {category = "Android NDK Configuration" } - , {nil, "ndk", "kv", nil, "The NDK Directory" } - , {nil, "ndk_sdkver", "kv", "auto", "The SDK Version for NDK" } - , {nil, "android_sdk", "kv", nil, "The Android SDK Directory" } + {category = "Android Configuration" } + , {nil, "ndk", "kv", nil, "The NDK Directory" } + , {nil, "ndk_sdkver", "kv", "auto", "The SDK Version for NDK" } + , {nil, "android_sdk", "kv", nil, "The Android SDK Directory" } + , {nil, "build_toolver", "kv", nil, "The Build Tool Version of Android SDK" } } } diff --git a/xmake/rules/qt/xmake.lua b/xmake/rules/qt/xmake.lua index 48ff4636d..8316fbdb3 100644 --- a/xmake/rules/qt/xmake.lua +++ b/xmake/rules/qt/xmake.lua @@ -147,6 +147,9 @@ rule("qt.application") -- get android sdk directory local android_sdkdir = path.translate(assert(config.get("android_sdk"), "please run `xmake f --android_sdk=xxx` to set the android sdk directory!")) + -- get android build-tools version + local android_build_toolver = assert(config.get("build_toolver"), "please run `xmake f --build_toolver=xxx` to set the android build-tools version!") + -- get the target architecture local target_archs = { @@ -170,9 +173,6 @@ rule("qt.application") local ndk_toolchains_ver = config.get("ndk_toolchains_ver") or "4.9" -- generate android-deployment-settings.json file - -- - -- TODO "sdkBuildToolsRevision": "28.0.3", - -- local android_deployment_settings = path.join(workdir, "android-deployment-settings.json") io.writefile(android_deployment_settings, format([[ { @@ -180,6 +180,7 @@ rule("qt.application") "qt": "%s", "sdk": "%s", "ndk": "%s", + "sdkBuildToolsRevision": "%s", "toolchain-prefix": "llvm", "tool-prefix": "llvm", "toolchain-version": "%s", @@ -189,7 +190,7 @@ rule("qt.application") "stdcpp-path": "%s", "useLLVM": true, "application-binary": "%s" - }]], qt.sdkdir, android_sdkdir, ndk, ndk_toolchains_ver, ndk_host, target_arch, os.projectdir(), stdcpp_path, target:targetfile())) + }]], qt.sdkdir, android_sdkdir, ndk, android_build_toolver, ndk_toolchains_ver, ndk_host, target_arch, os.projectdir(), stdcpp_path, target:targetfile())) -- do deploy local argv = {"--input", android_deployment_settings, |
