106 lines
3.7 KiB
Ruby
106 lines
3.7 KiB
Ruby
require 'formula'
|
|
|
|
class AndroidSdk < Formula
|
|
homepage 'http://developer.android.com/index.html'
|
|
url 'https://dl.google.com/android/android-sdk_r23.0.2-macosx.zip'
|
|
version '23.0.2'
|
|
sha1 '1ef502577ca4403ae81f3d68c1813995cb412354'
|
|
|
|
conflicts_with 'android-platform-tools',
|
|
:because => "The Android Platform-Tools need to be installed as part of the SDK."
|
|
|
|
resource 'completion' do
|
|
url 'https://raw.githubusercontent.com/CyanogenMod/android_sdk/938c8d70af7d77dfcd1defe415c1e0deaa7d301b/bash_completion/adb.bash'
|
|
sha1 '6dfead9b1350dbe1c16a1c80ed70beedebfa39eb'
|
|
end
|
|
|
|
# Version of the android-build-tools the wrapper scripts reference.
|
|
def build_tools_version
|
|
"20.0.0"
|
|
end
|
|
|
|
def install
|
|
prefix.install 'tools', 'SDK Readme.txt' => 'README'
|
|
|
|
%w[android ddms draw9patch emulator
|
|
emulator-arm emulator-x86 hierarchyviewer lint mksdcard
|
|
monitor monkeyrunner traceview].each do |tool|
|
|
(bin/tool).write <<-EOS.undent
|
|
#!/bin/bash
|
|
TOOL="#{prefix}/tools/#{tool}"
|
|
exec "$TOOL" "$@"
|
|
EOS
|
|
end
|
|
|
|
%w[zipalign].each do |tool|
|
|
(bin/tool).write <<-EOS.undent
|
|
#!/bin/bash
|
|
TOOL="#{prefix}/build-tools/#{build_tools_version}/#{tool}"
|
|
exec "$TOOL" "$@"
|
|
EOS
|
|
end
|
|
|
|
%w[dmtracedump etc1tool hprof-conv].each do |tool|
|
|
(bin/tool).write <<-EOS.undent
|
|
#!/bin/bash
|
|
TOOL="#{prefix}/platform-tools/#{tool}"
|
|
exec "$TOOL" "$@"
|
|
EOS
|
|
end
|
|
|
|
# this is data that should be preserved across upgrades, but the Android
|
|
# SDK isn't too smart, so we still have to symlink it back into its tree.
|
|
%w[platforms samples temp add-ons sources system-images extras].each do |d|
|
|
src = var/"lib/android-sdk"/d
|
|
src.mkpath
|
|
prefix.install_symlink src
|
|
end
|
|
|
|
%w[adb fastboot].each do |platform_tool|
|
|
(bin/platform_tool).write <<-EOS.undent
|
|
#!/bin/bash
|
|
PLATFORM_TOOL="#{prefix}/platform-tools/#{platform_tool}"
|
|
test -x "$PLATFORM_TOOL" && exec "$PLATFORM_TOOL" "$@"
|
|
echo "It appears you do not have 'Android SDK Platform-tools' installed."
|
|
echo "Use the 'android' tool to install them: "
|
|
echo " android update sdk --no-ui --filter 'platform-tools'"
|
|
EOS
|
|
end
|
|
|
|
%w[aapt aidl dexdump dx llvm-rs-cc].each do |build_tool|
|
|
(bin/build_tool).write <<-EOS.undent
|
|
#!/bin/bash
|
|
BUILD_TOOLS_VERSION='#{build_tools_version}'
|
|
BUILD_TOOL="#{prefix}/build-tools/$BUILD_TOOLS_VERSION/#{build_tool}"
|
|
test -x "$BUILD_TOOL" && exec "$BUILD_TOOL" "$@"
|
|
echo "It appears you do not have 'build-tools-$BUILD_TOOLS_VERSION' installed."
|
|
echo "Use the 'android' tool to install them: "
|
|
echo " android update sdk --no-ui --filter 'build-tools-$BUILD_TOOLS_VERSION'"
|
|
EOS
|
|
end
|
|
|
|
bash_completion.install resource('completion').files('adb.bash' => 'adb-completion.bash')
|
|
end
|
|
|
|
def caveats; <<-EOS.undent
|
|
Now run the 'android' tool to install the actual SDK stuff.
|
|
|
|
The Android-SDK location for IDEs such as Eclipse, IntelliJ etc is:
|
|
#{prefix}
|
|
|
|
You will have to install the platform-tools and docs EVERY time this formula
|
|
updates. If you want to try and fix this then see the comment in this formula.
|
|
|
|
You may need to add the following to your .bashrc:
|
|
export ANDROID_HOME=#{opt_prefix}
|
|
EOS
|
|
end
|
|
|
|
# The 'android' tool insists on deleting #{prefix}/platform-tools
|
|
# and then installing the new one. So it is impossible for us to redirect
|
|
# the SDK location to var so that the platform-tools don't have to be
|
|
# freshly installed EVERY DANG time the base SDK updates.
|
|
|
|
# Ideas: make android a script that calls the actual android tool, but after
|
|
# that tool exits it repairs the directory locations?
|
|
end
|