Some fixes for android-build.py.

This commit is contained in:
James Chen 2014-03-14 12:52:24 +08:00
parent a7fea5bdb7
commit b893ca3378
1 changed files with 48 additions and 47 deletions

View File

@ -1,6 +1,6 @@
#!/usr/bin/python #!/usr/bin/python
# android-build.py # android-build.py
# Build android # Build android
import sys import sys
import os, os.path import os, os.path
@ -12,21 +12,21 @@ LUA_SAMPLES = ['lua-empty-test', 'lua-tests']
ALL_SAMPLES = CPP_SAMPLES + LUA_SAMPLES ALL_SAMPLES = CPP_SAMPLES + LUA_SAMPLES
def get_num_of_cpu(): def get_num_of_cpu():
''' The build process can be accelerated by running multiple concurrent job processes using the -j-option. ''' The build process can be accelerated by running multiple concurrent job processes using the -j-option.
''' '''
try: try:
platform = sys.platform platform = sys.platform
if platform == 'win32': if platform == 'win32':
if 'NUMBER_OF_PROCESSORS' in os.environ: if 'NUMBER_OF_PROCESSORS' in os.environ:
return int(os.environ['NUMBER_OF_PROCESSORS']) return int(os.environ['NUMBER_OF_PROCESSORS'])
else: else:
return 1 return 1
else: else:
from numpy.distutils import cpuinfo from numpy.distutils import cpuinfo
return cpuinfo.cpu._getNCPUs() return cpuinfo.cpu._getNCPUs()
except Exception: except Exception:
print "Can't know cpuinfo, use default 1 cpu" print "Can't know cpuinfo, use default 1 cpu"
return 1 return 1
def check_environment_variables(): def check_environment_variables():
''' Checking the environment NDK_ROOT, which will be used for building ''' Checking the environment NDK_ROOT, which will be used for building
@ -39,7 +39,7 @@ def check_environment_variables():
sys.exit(1) sys.exit(1)
return NDK_ROOT return NDK_ROOT
def check_environment_variables_sdk(): def check_environment_variables_sdk():
''' Checking the environment ANDROID_SDK_ROOT, which will be used for building ''' Checking the environment ANDROID_SDK_ROOT, which will be used for building
''' '''
@ -74,7 +74,7 @@ def select_toolchain_version():
def caculate_built_samples(args): def caculate_built_samples(args):
''' Compute the sampels to be built ''' Compute the sampels to be built
'cpp' for short of all cpp tests 'cpp' for short of all cpp tests
'lua' for short of all lua tests 'lua' for short of all lua tests
''' '''
if 'all' in args: if 'all' in args:
@ -115,17 +115,17 @@ def do_build(cocos_root, ndk_root, app_android_root, ndk_build_param,sdk_root,an
if os.system(command) != 0: if os.system(command) != 0:
raise Exception("Build dynamic library for project [ " + app_android_root + " ] fails!") raise Exception("Build dynamic library for project [ " + app_android_root + " ] fails!")
elif android_platform is not None: elif android_platform is not None:
sdk_tool_path = os.path.join(sdk_root, "tools/android") sdk_tool_path = os.path.join(sdk_root, "tools/android")
cocoslib_path = os.path.join(cocos_root, "cocos/2d/platform/android/java") cocoslib_path = os.path.join(cocos_root, "cocos/2d/platform/android/java")
command = '%s update lib-project -t %s -p %s' % (sdk_tool_path,android_platform,cocoslib_path) command = '%s update lib-project -t %s -p %s' % (sdk_tool_path,android_platform,cocoslib_path)
if os.system(command) != 0: if os.system(command) != 0:
raise Exception("update cocos lib-project [ " + cocoslib_path + " ] fails!") raise Exception("update cocos lib-project [ " + cocoslib_path + " ] fails!")
command = '%s update project -t %s -p %s -s' % (sdk_tool_path,android_platform,app_android_root) command = '%s update project -t %s -p %s -s' % (sdk_tool_path,android_platform,app_android_root)
if os.system(command) != 0: if os.system(command) != 0:
raise Exception("update project [ " + app_android_root + " ] fails!") raise Exception("update project [ " + app_android_root + " ] fails!")
buildfile_path = os.path.join(app_android_root, "build.xml") buildfile_path = os.path.join(app_android_root, "build.xml")
command = 'ant clean %s -f %s -Dsdk.dir=%s' % (build_mode,buildfile_path,sdk_root) command = 'ant clean %s -f %s -Dsdk.dir=%s' % (build_mode,buildfile_path,sdk_root)
os.system(command) os.system(command)
def copy_files(src, dst): def copy_files(src, dst):
@ -166,7 +166,7 @@ def copy_resources(target, app_android_root):
assets_src_dir = os.path.join(assets_dir, "src"); assets_src_dir = os.path.join(assets_dir, "src");
os.mkdir(assets_src_dir) os.mkdir(assets_src_dir)
copy_files(resources_dir, assets_src_dir) copy_files(resources_dir, assets_src_dir)
resources_dir = os.path.join(app_android_root, "../../../../cocos/scripting/lua-bindings/script") resources_dir = os.path.join(app_android_root, "../../../../cocos/scripting/lua-bindings/script")
copy_files(resources_dir, assets_dir) copy_files(resources_dir, assets_dir)
@ -184,20 +184,20 @@ def build_samples(target,ndk_build_param,android_platform,build_mode):
current_dir = os.path.dirname(os.path.realpath(__file__)) current_dir = os.path.dirname(os.path.realpath(__file__))
cocos_root = os.path.join(current_dir, "..") cocos_root = os.path.join(current_dir, "..")
if android_platform is not None: if android_platform is not None:
sdk_root = check_environment_variables_sdk() sdk_root = check_environment_variables_sdk()
if android_platform.isdigit(): if android_platform.isdigit():
android_platform = 'android-'+android_platform android_platform = 'android-'+android_platform
else: else:
print 'please use vaild android platform' print 'please use vaild android platform'
exit(1) exit(1)
if build_mode is None: if build_mode is None:
build_mode = 'debug' build_mode = 'debug'
elif build_mode != 'release': elif build_mode != 'release':
build_mode = 'debug' build_mode = 'debug'
app_android_root = '' app_android_root = ''
target_proj_path_map = { target_proj_path_map = {
@ -214,8 +214,8 @@ def build_samples(target,ndk_build_param,android_platform,build_mode):
print 'unknown target: %s' % target print 'unknown target: %s' % target
continue continue
copy_resources(target, app_android_root) copy_resources(target, app_android_root)
do_build(cocos_root, ndk_root, app_android_root, ndk_build_param,sdk_root,android_platform,build_mode) do_build(cocos_root, ndk_root, app_android_root, ndk_build_param,sdk_root,android_platform,build_mode)
# -------------- main -------------- # -------------- main --------------
if __name__ == '__main__': if __name__ == '__main__':
@ -223,8 +223,8 @@ if __name__ == '__main__':
#parse the params #parse the params
usage = """ usage = """
This script is mainy used for building tests built-in with cocos2d-x. This script is mainy used for building tests built-in with cocos2d-x.
Usage: %prog [options] [cpp-empty-test|cpp-tests|lua-empty-test|lua-tests] Usage: %prog [options] [cpp-empty-test|cpp-tests|lua-empty-test|lua-tests|cpp|lua|all]
If you are new to cocos2d-x, I recommend you start with cpp-empty-test, lua-empty-test. If you are new to cocos2d-x, I recommend you start with cpp-empty-test, lua-empty-test.
@ -237,16 +237,17 @@ if __name__ == '__main__':
""" """
parser = OptionParser(usage=usage) parser = OptionParser(usage=usage)
parser.add_option("-n", "--ndk", dest="ndk_build_param", parser.add_option("-n", "--ndk", dest="ndk_build_param",
help='Parameter for ndk-build') help='Parameter for ndk-build')
parser.add_option("-p", "--platform", dest="android_platform", parser.add_option("-p", "--platform", dest="android_platform",
help='Parameter for android-update. Without the parameter,the script just build dynamic library for the projects. Valid android-platform are:[10|11|12|13|14|15|16|17|18|19]') help='Parameter for android-update. Without the parameter,the script just build dynamic library for the projects. Valid android-platform are:[10|11|12|13|14|15|16|17|18|19]')
parser.add_option("-b", "--build", dest="build_mode", parser.add_option("-b", "--build", dest="build_mode",
help='The build mode for java project,debug[default] or release. Get more information,please refer to http://developer.android.com/tools/building/building-cmdline.html') help='The build mode for java project,debug[default] or release. Get more information,please refer to http://developer.android.com/tools/building/building-cmdline.html')
(opts, args) = parser.parse_args() (opts, args) = parser.parse_args()
if len(args) == 0: if len(args) == 0:
parser.print_help() parser.print_help()
sys.exit(1)
else: else:
try: try:
build_samples(args, opts.ndk_build_param,opts.android_platform,opts.build_mode) build_samples(args, opts.ndk_build_param,opts.android_platform,opts.build_mode)