summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-05-09 22:59:38 +0800
committerruki <[email protected]>2019-05-09 11:57:49 +0800
commit1911e7fbb69ce21d803d30d61030e2c4d765fb64 (patch)
tree7308174d854ef9554414781ce28c94337414613c
parent4e43ba19c75172999753a4bcb0f41d30611bf67e (diff)
get android build-tools version
-rw-r--r--xmake/modules/detect/sdks/find_android_sdk.lua32
-rw-r--r--xmake/platforms/android/xmake.lua18
-rw-r--r--xmake/rules/qt/xmake.lua9
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,