import sys
sys.path.append('scripts/gyp')
-from customize import ReplaceInvalidChars
+from customize import ReplaceInvalidChars, CustomizeAll
from dex import AddExeExtensions
from handle_permissions import permission_mapping_table
from manifest_json_parser import HandlePermissionList
extension_jars.append(extension_jar)
return extension_jars
+
# Follows the recommendation from
# http://software.intel.com/en-us/blogs/2012/11/12/how-to-publish-
# your-apps-on-google-play-for-x86-based-android-devices-using
def MakeVersionCode(options):
''' Construct a version code'''
if options.app_versionCode:
- return '--app-versionCode=%s' % options.app_versionCode
+ return options.app_versionCode
# First digit is ABI, ARM=2, x86=6
abi = '0'
sys.exit(12)
# zero pad to 7 digits, middle digits can be used for other
# features, according to recommendation in URL
- return '--app-versionCode=%s%s' % (abi, b.zfill(7))
+ return '%s%s' % (abi, b.zfill(7))
def Customize(options):
- package = '--package=org.xwalk.app.template'
+ package = 'org.xwalk.app.template'
if options.package:
- package = '--package=%s' % options.package
- name = '--name=AppTemplate'
+ package = options.package
+ name = 'AppTemplate'
if options.name:
- name = '--name=%s' % options.name
- app_version = '--app-version=1.0.0'
+ name = options.name
+ app_version = '1.0.0'
if options.app_version:
- app_version = '--app-version=%s' % options.app_version
+ app_version = options.app_version
app_versionCode = MakeVersionCode(options)
- description = ''
- if options.description:
- description = '--description=%s' % options.description
- permissions = ''
- if options.permissions:
- permissions = '--permissions=%s' % options.permissions
icon = ''
if options.icon:
- icon = '--icon=%s' % os.path.expanduser(options.icon)
- app_url = ''
- if options.app_url:
- app_url = '--app-url=%s' % options.app_url
+ icon = os.path.expanduser(options.icon)
app_root = ''
if options.app_root:
- app_root = '--app-root=%s' % os.path.expanduser(options.app_root)
- app_local_path = ''
- if options.app_local_path:
- app_local_path = '--app-local-path=%s' % options.app_local_path
+ app_root = os.path.expanduser(options.app_root)
remote_debugging = ''
if options.enable_remote_debugging:
remote_debugging = '--enable-remote-debugging'
fullscreen_flag = ''
if options.fullscreen:
fullscreen_flag = '-f'
- extensions_list = ''
- if options.extensions:
- extensions_list = '--extensions=%s' % options.extensions
- orientation = '--orientation=unspecified'
+ orientation = 'unspecified'
if options.orientation:
- orientation = '--orientation=%s' % options.orientation
- default_image = ''
- if options.launch_screen_img:
- default_image = '--launch-screen-img=' + options.launch_screen_img
- cmd = ['python', 'customize.py', package,
- name, app_version, app_versionCode, description, icon, permissions,
- app_url, remote_debugging, app_root, app_local_path, fullscreen_flag,
- extensions_list, orientation, default_image]
- RunCommand(cmd, options.verbose)
+ orientation = options.orientation
+ CustomizeAll(app_versionCode, options.description, icon,
+ options.permissions, options.app_url, app_root,
+ options.app_local_path, remote_debugging,
+ fullscreen_flag, options.extensions,
+ options.launch_screen_img, package, name, app_version,
+ orientation)
def Execution(options, sanitized_name):
if options.app_version:
package_name += ('_' + options.app_version)
if options.mode == 'shared':
- dst_file = '%s.apk' % package_name
+ dst_file = os.path.join(options.target_dir, '%s.apk' % package_name)
elif options.mode == 'embedded':
- dst_file = '%s_%s.apk' % (package_name, options.arch)
+ dst_file = os.path.join(options.target_dir,
+ '%s_%s.apk' % (package_name, options.arch))
shutil.copyfile(src_file, dst_file)
CleanDir('out')
if options.mode == 'embedded':
os.remove(pak_des_path)
-def PrintPackageInfo(app_name, app_version, arch = ''):
- package_name_version = app_name
+def PrintPackageInfo(target_dir, app_name, app_version, arch = ''):
+ package_name_version = os.path.join(target_dir, app_name)
if app_version != '':
package_name_version += ('_' + app_version)
if arch == '':
print ('A non-platform specific APK for the web application "%s" was '
- 'generated successfully at %s.apk. It requires a shared Crosswalk '
+ 'generated successfully at\n%s.apk. It requires a shared Crosswalk '
'Runtime to be present.'
% (app_name, package_name_version))
else:
print ('An APK for the web application "%s" including the Crosswalk '
'Runtime built for %s was generated successfully, which can be '
- 'found at %s_%s.apk.'
+ 'found at\n%s_%s.apk.'
% (app_name, arch, package_name_version, arch))
app_version = options.app_version
if options.mode == 'shared':
Execution(options, sanitized_name)
- PrintPackageInfo(sanitized_name, app_version)
+ PrintPackageInfo(options.target_dir, sanitized_name, app_version)
elif options.mode == 'embedded':
if options.arch:
Execution(options, sanitized_name)
- PrintPackageInfo(sanitized_name, app_version, options.arch)
+ PrintPackageInfo(options.target_dir, sanitized_name,
+ app_version, options.arch)
else:
# If the arch option is unspecified, all of available platform APKs
# will be generated.
Execution(options, sanitized_name)
packaged_archs.append(options.arch)
for arch in packaged_archs:
- PrintPackageInfo(sanitized_name, app_version, arch)
+ PrintPackageInfo(options.target_dir, sanitized_name,
+ app_version, arch)
else:
print('Unknown mode for packaging the application. Abort!')
sys.exit(11)
+
def parse_optional_arg(default_value):
def func(option, value, values, parser):
del value
setattr(parser.values, option.dest, val)
return func
+
def main(argv):
parser = optparse.OptionParser()
parser.add_option('-v', '--version', action='store_true',
info = ('The list of permissions to be used by web application. For example, '
'--permissions=geolocation:webgl')
group.add_option('--permissions', help=info)
+ info = ('Packaging tool will move the output APKS to the target directory')
+ group.add_option('--target-dir', default=os.getcwd(), help=info)
parser.add_option_group(group)
group = optparse.OptionGroup(parser, 'Keystore Options',
'The keystore is a signature from web developer, it\'s used when '
options.package = ReplaceInvalidChars(options.package)
sanitized_name = ReplaceInvalidChars(options.name, 'apkname')
+ if options.target_dir:
+ target_dir = os.path.abspath(os.path.expanduser(options.target_dir))
+ options.target_dir = target_dir
+ if not os.path.isdir(target_dir):
+ os.makedirs(target_dir)
+
try:
compress = compress_js_and_css.CompressJsAndCss(options.app_root)
if options.compressor == 'all':