add check on aidl / 64 bits platform, and refer on installation instructions if it can't be runned.

Closes #228
This commit is contained in:
Mathieu Virbel 2015-10-04 12:44:29 +02:00
parent 3fc3c63e47
commit 04e3530fdb
2 changed files with 42 additions and 8 deletions

View file

@ -257,6 +257,7 @@ class TargetAndroid(Target):
self.buildozer.file_rename(unpacked, sdk_dir,
cwd=self.buildozer.global_platform_dir)
self.buildozer.info('Android SDK installation done.')
return sdk_dir
def _install_android_ndk(self):
@ -401,6 +402,8 @@ class TargetAndroid(Target):
if ver and ver > v_build_tools:
self._android_update_sdk(self._build_package_string('build-tools',
ver))
# 2.bis check aidl can be runned
self._check_aidl(v_build_tools)
# 3. finally, install the android for the current api
android_platform = join(self.android_sdk_dir, 'platforms',
@ -413,9 +416,30 @@ class TargetAndroid(Target):
self.buildozer.info('Android packages installation done.')
self.buildozer.state[cache_key] = cache_value
self.buildozer.state.sync()
def _check_aidl(self, v_build_tools):
self.buildozer.debug('Check that aidl can be executed')
v_build_tools = self._read_version_subdir(
self.android_sdk_dir, 'build-tools')
aidl_cmd = join(self.android_sdk_dir, 'build-tools', str(v_build_tools), 'aidl')
self.buildozer.checkbin('Aidl', aidl_cmd)
_, _, returncode = self.buildozer.cmd(aidl_cmd, break_on_error=False, show_output=False)
if returncode != 1:
self.buildozer.error('Aidl cannot be executed')
if sys.maxint > 2 ** 32:
self.buildozer.error('')
self.buildozer.error('You might have missed to install 32bits libs')
self.buildozer.error('Check http://buildozer.readthedocs.org/en/latest/installation.html')
self.buildozer.error('')
else:
self.buildozer.error('')
self.buildozer.error('In case of a bug report, please add a full log with log_level = 2')
self.buildozer.error('')
raise BuildozerException()
def install_platform(self):
cmd = self.buildozer.cmd
self.pa_dir = pa_dir = join(self.buildozer.platform_dir,

View file

@ -17,20 +17,30 @@ If you target Android, you must install at least Cython, few build libs, and a
Java SDK. Some binaries of the Android SDK are still in 32 bits, so you need
few 32bits libraries available::
Android on Ubuntu 12.04 (64bit)
Android on Ubuntu 14.10 (64bit)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
sudo pip install --upgrade cython
sudo apt-get install build-essential ccache git ia32-libs python2.7 python2.7-dev openjdk-7-jdk unzip zlib1g-dev
sudo pip install --upgrade cython==0.21
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential ccache git lib32z1 lib32z1-dev python2.7 python2.7-dev openjdk-7-jdk unzip zlib1g-dev
Android on Ubuntu 13.10 (64bit)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
sudo pip install --upgrade cython
sudo pip install --upgrade cython==0.21
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential ccache git ia32-libs libncurses5:i386 libstdc++6:i386 python2.7 python2.7-dev openjdk-7-jdk unzip zlib1g-dev zlib1g:i386
Android on Ubuntu 12.04 (64bit)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
sudo pip install --upgrade cython==0.21
sudo apt-get install build-essential ccache git ia32-libs python2.7 python2.7-dev openjdk-7-jdk unzip zlib1g-dev