From 268c2180336116af1f7048c26253462710c264e6 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 16 Apr 2016 20:36:19 +0100 Subject: [PATCH 01/30] Added flask testapp --- testapps/testapp_flask/load.html | 62 +++++++++++++++ testapps/testapp_flask/main.py | 48 ++++++++++++ testapps/testapp_flask/static/colours.png | Bin 0 -> 191254 bytes testapps/testapp_flask/static/coloursinv.png | Bin 0 -> 191345 bytes testapps/testapp_flask/static/style.css | 77 +++++++++++++++++++ testapps/testapp_flask/templates/base.html | 26 +++++++ testapps/testapp_flask/templates/index.html | 14 ++++ testapps/testapp_flask/templates/page2.html | 15 ++++ 8 files changed, 242 insertions(+) create mode 100644 testapps/testapp_flask/load.html create mode 100644 testapps/testapp_flask/main.py create mode 100644 testapps/testapp_flask/static/colours.png create mode 100644 testapps/testapp_flask/static/coloursinv.png create mode 100644 testapps/testapp_flask/static/style.css create mode 100644 testapps/testapp_flask/templates/base.html create mode 100644 testapps/testapp_flask/templates/index.html create mode 100644 testapps/testapp_flask/templates/page2.html diff --git a/testapps/testapp_flask/load.html b/testapps/testapp_flask/load.html new file mode 100644 index 0000000000..33b34f7db6 --- /dev/null +++ b/testapps/testapp_flask/load.html @@ -0,0 +1,62 @@ + + + + + + + + Delayed loader + + + + + + +

+ Delayed loader +

+ +
+
Loading...
+
+ +
+
+ + + + + + diff --git a/testapps/testapp_flask/main.py b/testapps/testapp_flask/main.py new file mode 100644 index 0000000000..93c5d845d4 --- /dev/null +++ b/testapps/testapp_flask/main.py @@ -0,0 +1,48 @@ +print('main.py was successfully called') +print('this is the new main.py') + +import os +print('imported os') + +try: + print('contents of ./lib/python2.7/site-packages/ etc.') + print(os.listdir('./lib')) + print(os.listdir('./lib/python2.7')) + print(os.listdir('./lib/python2.7/site-packages')) +except OSError: + print('could not look in dirs') + print('this is expected on desktop') + +import flask +print('flask1???') + +print('contents of this dir', os.listdir('./')) + +import flask +print('flask???') + +import sys +print('pythonpath is', sys.path) + + +from flask import Flask +app = Flask(__name__) + +from flask import (Flask, url_for, render_template, request, redirect, + flash) + +@app.route('/') +def page1(): + return render_template('index.html') + +@app.route('/page2') +def page2(): + return render_template('page2.html') + +from os import curdir +from os.path import realpath +print('curdir', realpath(curdir)) +if realpath(curdir).startswith('/data'): + app.run(debug=False) +else: + app.run(debug=True) diff --git a/testapps/testapp_flask/static/colours.png b/testapps/testapp_flask/static/colours.png new file mode 100644 index 0000000000000000000000000000000000000000..30b685e32bf52c6e97726095fc8337775554c8a8 GIT binary patch literal 191254 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

gVODxKx#t(>zBw}Jtvq)$2@kX(fId)-; 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

  • d>?L-Gt38?I=(%p9~CH%?GjHJIafGZ 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

    + Flask on Android! +

    + + {% block body %} + {% endblock %} + + + + diff --git a/testapps/testapp_flask/templates/index.html b/testapps/testapp_flask/templates/index.html new file mode 100644 index 0000000000..20140a3b8e --- /dev/null +++ b/testapps/testapp_flask/templates/index.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + + +{% block body %} + +

    Page one

    + + + +
    + +
    + +{% endblock %} diff --git a/testapps/testapp_flask/templates/page2.html b/testapps/testapp_flask/templates/page2.html new file mode 100644 index 0000000000..70fca15f03 --- /dev/null +++ b/testapps/testapp_flask/templates/page2.html @@ -0,0 +1,15 @@ + +{% extends "base.html" %} + + +{% block body %} + +

    Page two

    + + + +
    + +
    + +{% endblock %} From cb1f67ec50e8bdab5edc6041755f55a07fa54cd9 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 16 Apr 2016 20:36:42 +0100 Subject: [PATCH 02/30] Added webview bootstrap Currently just the SDL2 bootstrap but displaying a webview on top --- .../bootstraps/webview/__init__.py | 120 ++ .../webview/build/AndroidManifest.xml | 45 + .../bootstraps/webview/build/ant.properties | 18 + .../bootstraps/webview/build/blacklist.txt | 90 + .../bootstraps/webview/build/build.properties | 21 + .../bootstraps/webview/build/build.py | 487 +++++ .../bootstraps/webview/build/build.xml | 93 + .../bootstraps/webview/build/jni/Android.mk | 1 + .../webview/build/jni/Application.mk | 7 + .../webview/build/jni/src/Android.mk | 27 + .../webview/build/jni/src/Android_static.mk | 12 + .../bootstraps/webview/build/jni/src/start.c | 319 ++++ .../webview/build/proguard-project.txt | 20 + .../build/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 2683 bytes .../build/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 1698 bytes .../build/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 3872 bytes .../build/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 6874 bytes .../webview/build/res/drawable/.gitkeep | 0 .../webview/build/res/drawable/icon.png | Bin 0 -> 16525 bytes .../webview/build/res/layout/main.xml | 13 + .../webview/build/res/values/strings.xml | 5 + .../build/src/org/kamranzafar/jtar/Octal.java | 141 ++ .../org/kamranzafar/jtar/TarConstants.java | 28 + .../src/org/kamranzafar/jtar/TarEntry.java | 284 +++ .../src/org/kamranzafar/jtar/TarHeader.java | 243 +++ .../org/kamranzafar/jtar/TarInputStream.java | 249 +++ .../org/kamranzafar/jtar/TarOutputStream.java | 163 ++ .../src/org/kamranzafar/jtar/TarUtils.java | 96 + .../android/GenericBroadcastReceiver.java | 19 + .../GenericBroadcastReceiverCallback.java | 8 + .../src/org/kivy/android/PythonActivity.java | 357 ++++ .../src/org/kivy/android/PythonService.java | 129 ++ .../src/org/kivy/android/PythonUtil.java | 56 + .../kivy/android/concurrency/PythonEvent.java | 45 + .../kivy/android/concurrency/PythonLock.java | 19 + .../build/src/org/libsdl/app/SDLActivity.java | 1596 +++++++++++++++++ .../src/org/renpy/android/AssetExtract.java | 115 ++ .../build/src/org/renpy/android/Hardware.java | 287 +++ .../src/org/renpy/android/PythonActivity.java | 12 + .../src/org/renpy/android/PythonService.java | 12 + .../org/renpy/android/ResourceManager.java | 54 + .../build/templates/AndroidManifest.tmpl.xml | 101 ++ .../webview/build/templates/Service.tmpl.java | 56 + .../webview/build/templates/build.tmpl.xml | 95 + .../build/templates/custom_rules.tmpl.xml | 14 + .../webview/build/templates/kivy-icon.png | Bin 0 -> 16525 bytes .../build/templates/kivy-presplash.jpg | Bin 0 -> 18251 bytes .../webview/build/templates/strings.tmpl.xml | 5 + .../build/templates/test/build.tmpl.xml | 93 + .../build/templates/test/build.xml.tmpl | 93 + .../bootstraps/webview/build/whitelist.txt | 1 + 51 files changed, 5649 insertions(+) create mode 100644 pythonforandroid/bootstraps/webview/__init__.py create mode 100644 pythonforandroid/bootstraps/webview/build/AndroidManifest.xml create mode 100644 pythonforandroid/bootstraps/webview/build/ant.properties create mode 100644 pythonforandroid/bootstraps/webview/build/blacklist.txt create mode 100644 pythonforandroid/bootstraps/webview/build/build.properties create mode 100755 pythonforandroid/bootstraps/webview/build/build.py create mode 100644 pythonforandroid/bootstraps/webview/build/build.xml create mode 100644 pythonforandroid/bootstraps/webview/build/jni/Android.mk create mode 100644 pythonforandroid/bootstraps/webview/build/jni/Application.mk create mode 100644 pythonforandroid/bootstraps/webview/build/jni/src/Android.mk create mode 100644 pythonforandroid/bootstraps/webview/build/jni/src/Android_static.mk create mode 100644 pythonforandroid/bootstraps/webview/build/jni/src/start.c create mode 100644 pythonforandroid/bootstraps/webview/build/proguard-project.txt create mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-hdpi/ic_launcher.png create mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-mdpi/ic_launcher.png create mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-xhdpi/ic_launcher.png create mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-xxhdpi/ic_launcher.png create mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable/.gitkeep create mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable/icon.png create mode 100644 pythonforandroid/bootstraps/webview/build/res/layout/main.xml create mode 100644 pythonforandroid/bootstraps/webview/build/res/values/strings.xml create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/Octal.java create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarConstants.java create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarEntry.java create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarHeader.java create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarInputStream.java create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarOutputStream.java create mode 100755 pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarUtils.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiver.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiverCallback.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonService.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonUtil.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonEvent.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonLock.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/libsdl/app/SDLActivity.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/renpy/android/AssetExtract.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/renpy/android/Hardware.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/renpy/android/PythonActivity.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/renpy/android/PythonService.java create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/renpy/android/ResourceManager.java create mode 100644 pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml create mode 100644 pythonforandroid/bootstraps/webview/build/templates/Service.tmpl.java create mode 100644 pythonforandroid/bootstraps/webview/build/templates/build.tmpl.xml create mode 100644 pythonforandroid/bootstraps/webview/build/templates/custom_rules.tmpl.xml create mode 100644 pythonforandroid/bootstraps/webview/build/templates/kivy-icon.png create mode 100644 pythonforandroid/bootstraps/webview/build/templates/kivy-presplash.jpg create mode 100644 pythonforandroid/bootstraps/webview/build/templates/strings.tmpl.xml create mode 100644 pythonforandroid/bootstraps/webview/build/templates/test/build.tmpl.xml create mode 100644 pythonforandroid/bootstraps/webview/build/templates/test/build.xml.tmpl create mode 100644 pythonforandroid/bootstraps/webview/build/whitelist.txt diff --git a/pythonforandroid/bootstraps/webview/__init__.py b/pythonforandroid/bootstraps/webview/__init__.py new file mode 100644 index 0000000000..148a92e75a --- /dev/null +++ b/pythonforandroid/bootstraps/webview/__init__.py @@ -0,0 +1,120 @@ +from pythonforandroid.toolchain import Bootstrap, shprint, current_directory, info, warning, ArchARM, info_main +from os.path import join, exists, curdir, abspath +from os import walk +import glob +import sh + +class SDL2Bootstrap(Bootstrap): + name = 'sdl2' + + recipe_depends = ['sdl2', ('python2', 'python3crystax')] + + def run_distribute(self): + info_main('# Creating Android project from build and {} bootstrap'.format( + self.name)) + + info('This currently just copies the SDL2 build stuff straight from the build dir.') + shprint(sh.rm, '-rf', self.dist_dir) + shprint(sh.cp, '-r', self.build_dir, self.dist_dir) + with current_directory(self.dist_dir): + with open('local.properties', 'w') as fileh: + fileh.write('sdk.dir={}'.format(self.ctx.sdk_dir)) + + arch = self.ctx.archs[0] + if len(self.ctx.archs) > 1: + raise ValueError('built for more than one arch, but bootstrap cannot handle that yet') + info('Bootstrap running with arch {}'.format(arch)) + + with current_directory(self.dist_dir): + info('Copying python distribution') + + if not exists('private') and not self.ctx.python_recipe.from_crystax: + shprint(sh.mkdir, 'private') + if not exists('crystax_python') and self.ctx.python_recipe.from_crystax: + shprint(sh.mkdir, 'crystax_python') + shprint(sh.mkdir, 'crystax_python/crystax_python') + if not exists('assets'): + shprint(sh.mkdir, 'assets') + + hostpython = sh.Command(self.ctx.hostpython) + if not self.ctx.python_recipe.from_crystax: + try: + shprint(hostpython, '-OO', '-m', 'compileall', + self.ctx.get_python_install_dir(), + _tail=10, _filterout="^Listing") + except sh.ErrorReturnCode: + pass + if not exists('python-install'): + shprint(sh.cp, '-a', self.ctx.get_python_install_dir(), './python-install') + + self.distribute_libs(arch, [self.ctx.get_libs_dir(arch.arch)]) + self.distribute_aars(arch) + self.distribute_javaclasses(self.ctx.javaclass_dir) + + if not self.ctx.python_recipe.from_crystax: + info('Filling private directory') + if not exists(join('private', 'lib')): + info('private/lib does not exist, making') + shprint(sh.cp, '-a', join('python-install', 'lib'), 'private') + shprint(sh.mkdir, '-p', join('private', 'include', 'python2.7')) + + # AND: Copylibs stuff should go here + if exists(join('libs', arch.arch, 'libpymodules.so')): + shprint(sh.mv, join('libs', arch.arch, 'libpymodules.so'), 'private/') + shprint(sh.cp, join('python-install', 'include' , 'python2.7', 'pyconfig.h'), join('private', 'include', 'python2.7/')) + + info('Removing some unwanted files') + shprint(sh.rm, '-f', join('private', 'lib', 'libpython2.7.so')) + shprint(sh.rm, '-rf', join('private', 'lib', 'pkgconfig')) + + libdir = join(self.dist_dir, 'private', 'lib', 'python2.7') + site_packages_dir = join(libdir, 'site-packages') + with current_directory(libdir): + # shprint(sh.xargs, 'rm', sh.grep('-E', '*\.(py|pyx|so\.o|so\.a|so\.libs)$', sh.find('.'))) + removes = [] + for dirname, something, filens in walk('.'): + for filename in filens: + for suffix in ('py', 'pyc', 'so.o', 'so.a', 'so.libs'): + if filename.endswith(suffix): + removes.append(filename) + shprint(sh.rm, '-f', *removes) + + info('Deleting some other stuff not used on android') + # To quote the original distribute.sh, 'well...' + # shprint(sh.rm, '-rf', 'ctypes') + shprint(sh.rm, '-rf', 'lib2to3') + shprint(sh.rm, '-rf', 'idlelib') + for filename in glob.glob('config/libpython*.a'): + shprint(sh.rm, '-f', filename) + shprint(sh.rm, '-rf', 'config/python.o') + # shprint(sh.rm, '-rf', 'lib-dynload/_ctypes_test.so') + # shprint(sh.rm, '-rf', 'lib-dynload/_testcapi.so') + + else: # Python *is* loaded from crystax + ndk_dir = self.ctx.ndk_dir + py_recipe = self.ctx.python_recipe + python_dir = join(ndk_dir, 'sources', 'python', py_recipe.version, + 'libs', arch.arch) + + shprint(sh.cp, '-r', join(python_dir, 'stdlib.zip'), 'crystax_python/crystax_python') + shprint(sh.cp, '-r', join(python_dir, 'modules'), 'crystax_python/crystax_python') + shprint(sh.cp, '-r', self.ctx.get_python_install_dir(), 'crystax_python/crystax_python/site-packages') + + info('Renaming .so files to reflect cross-compile') + site_packages_dir = 'crystax_python/crystax_python/site-packages' + filens = shprint(sh.find, site_packages_dir, '-iname', '*.so').stdout.decode( + 'utf-8').split('\n')[:-1] + for filen in filens: + parts = filen.split('.') + if len(parts) <= 2: + continue + shprint(sh.mv, filen, filen.split('.')[0] + '.so') + site_packages_dir = join(abspath(curdir), + site_packages_dir) + + + self.strip_libraries(arch) + self.fry_eggs(site_packages_dir) + super(SDL2Bootstrap, self).run_distribute() + +bootstrap = SDL2Bootstrap() diff --git a/pythonforandroid/bootstraps/webview/build/AndroidManifest.xml b/pythonforandroid/bootstraps/webview/build/AndroidManifest.xml new file mode 100644 index 0000000000..a3dfc7b224 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pythonforandroid/bootstraps/webview/build/ant.properties b/pythonforandroid/bootstraps/webview/build/ant.properties new file mode 100644 index 0000000000..f74e644b8a --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/ant.properties @@ -0,0 +1,18 @@ +# This file is used to override default values used by the Ant build system. +# +# This file must be checked into Version Control Systems, as it is +# integral to the build system of your project. + +# This file is only used by the Ant script. + +# You can use this to override default values such as +# 'source.dir' for the location of your java source folder and +# 'out.dir' for the location of your output folder. + +# You can also use it define how the release builds are signed by declaring +# the following properties: +# 'key.store' for the location of your keystore and +# 'key.alias' for the name of the key to use. +# The password will be asked during the build when you use the 'release' target. + +source.absolute.dir = tmp-src diff --git a/pythonforandroid/bootstraps/webview/build/blacklist.txt b/pythonforandroid/bootstraps/webview/build/blacklist.txt new file mode 100644 index 0000000000..d220d2a2ae --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/blacklist.txt @@ -0,0 +1,90 @@ +# prevent user to include invalid extensions +*.apk +*.pxd + +# eggs +*.egg-info + +# unit test +unittest/* + +# python config +config/makesetup + +# unused kivy files (platform specific) +kivy/input/providers/wm_* +kivy/input/providers/mactouch* +kivy/input/providers/probesysfs* +kivy/input/providers/mtdev* +kivy/input/providers/hidinput* +kivy/core/camera/camera_videocapture* +kivy/core/spelling/*osx* +kivy/core/video/video_pyglet* +kivy/tools +kivy/tests/* +kivy/*/*.h +kivy/*/*.pxi + +# unused encodings +lib-dynload/*codec* +encodings/cp*.pyo +encodings/tis* +encodings/shift* +encodings/bz2* +encodings/iso* +encodings/undefined* +encodings/johab* +encodings/p* +encodings/m* +encodings/euc* +encodings/k* +encodings/unicode_internal* +encodings/quo* +encodings/gb* +encodings/big5* +encodings/hp* +encodings/hz* + +# unused python modules +bsddb/* +wsgiref/* +hotshot/* +pydoc_data/* +tty.pyo +anydbm.pyo +nturl2path.pyo +LICENCE.txt +macurl2path.pyo +dummy_threading.pyo +audiodev.pyo +antigravity.pyo +dumbdbm.pyo +sndhdr.pyo +__phello__.foo.pyo +sunaudio.pyo +os2emxpath.pyo +multiprocessing/dummy* + +# unused binaries python modules +lib-dynload/termios.so +lib-dynload/_lsprof.so +lib-dynload/*audioop.so +lib-dynload/mmap.so +lib-dynload/_hotshot.so +lib-dynload/_heapq.so +lib-dynload/_json.so +lib-dynload/grp.so +lib-dynload/resource.so +lib-dynload/pyexpat.so +lib-dynload/_ctypes_test.so +lib-dynload/_testcapi.so + +# odd files +plat-linux3/regen + +#>sqlite3 +# conditionnal include depending if some recipes are included or not. +sqlite3/* +lib-dynload/_sqlite3.so +#[0-9\.]*<', + '"private_version">{}<'.format( + str(time.time())), lines)) + + +def parse_args(args=None): + global BLACKLIST_PATTERNS, WHITELIST_PATTERNS + default_android_api = 12 + import argparse + ap = argparse.ArgumentParser(description='''\ +Package a Python application for Android. + +For this to work, Java and Ant need to be in your path, as does the +tools directory of the Android SDK. +''') + + ap.add_argument('--private', dest='private', + help='the dir of user files', + required=True) + ap.add_argument('--package', dest='package', + help=('The name of the java package the project will be' + ' packaged under.'), + required=True) + ap.add_argument('--name', dest='name', + help=('The human-readable name of the project.'), + required=True) + ap.add_argument('--numeric-version', dest='numeric_version', + help=('The numeric version number of the project. If not ' + 'given, this is automatically computed from the ' + 'version.')) + ap.add_argument('--version', dest='version', + help=('The version number of the project. This should ' + 'consist of numbers and dots, and should have the ' + 'same number of groups of numbers as previous ' + 'versions.'), + required=True) + ap.add_argument('--orientation', dest='orientation', default='portrait', + help=('The orientation that the game will display in. ' + 'Usually one of "landscape", "portrait" or ' + '"sensor"')) + ap.add_argument('--icon', dest='icon', + help='A png file to use as the icon for the application.') + ap.add_argument('--permission', dest='permissions', action='append', + help='The permissions to give this app.') + ap.add_argument('--meta-data', dest='meta_data', action='append', + help='Custom key=value to add in application metadata') + ap.add_argument('--presplash', dest='presplash', + help=('A jpeg file to use as a screen while the ' + 'application is loading.')) + ap.add_argument('--wakelock', dest='wakelock', action='store_true', + help=('Indicate if the application needs the device ' + 'to stay on')) + ap.add_argument('--window', dest='window', action='store_true', + help='Indicate if the application will be windowed') + ap.add_argument('--blacklist', dest='blacklist', + default=join(curdir, 'blacklist.txt'), + help=('Use a blacklist file to match unwanted file in ' + 'the final APK')) + ap.add_argument('--whitelist', dest='whitelist', + default=join(curdir, 'whitelist.txt'), + help=('Use a whitelist file to prevent blacklisting of ' + 'file in the final APK')) + ap.add_argument('--add-jar', dest='add_jar', action='append', + help=('Add a Java .jar to the libs, so you can access its ' + 'classes with pyjnius. You can specify this ' + 'argument more than once to include multiple jars')) + ap.add_argument('--sdk', dest='sdk_version', default=-1, + type=int, help=('Android SDK version to use. Default to ' + 'the value of minsdk')) + ap.add_argument('--minsdk', dest='min_sdk_version', + default=default_android_api, type=int, + help=('Minimum Android SDK version to use. Default to ' + 'the value of ANDROIDAPI, or {} if not set' + .format(default_android_api))) + ap.add_argument('--intent-filters', dest='intent_filters', + help=('Add intent-filters xml rules to the ' + 'AndroidManifest.xml file. The argument is a ' + 'filename containing xml. The filename should be ' + 'located relative to the python-for-android ' + 'directory')) + ap.add_argument('--with-billing', dest='billing_pubkey', + help='If set, the billing service will be added (not implemented)') + ap.add_argument('--service', dest='services', action='append', + help='Declare a new service entrypoint: ' + 'NAME:PATH_TO_PY[:foreground]') + ap.add_argument('--add-source', dest='extra_source_dirs', action='append', + help='Include additional source dirs in Java build') + + if args is None: + args = sys.argv[1:] + args = ap.parse_args(args) + args.ignore_path = [] + + if args.billing_pubkey: + print('Billing not yet supported in sdl2 bootstrap!') + exit(1) + + if args.sdk_version == -1: + args.sdk_version = args.min_sdk_version + + if args.permissions is None: + args.permissions = [] + + if args.meta_data is None: + args.meta_data = [] + + if args.services is None: + args.services = [] + + if args.blacklist: + with open(args.blacklist) as fd: + patterns = [x.strip() for x in fd.read().splitlines() + if x.strip() and not x.strip().startswith('#')] + BLACKLIST_PATTERNS += patterns + + if args.whitelist: + with open(args.whitelist) as fd: + patterns = [x.strip() for x in fd.read().splitlines() + if x.strip() and not x.strip().startswith('#')] + WHITELIST_PATTERNS += patterns + + make_package(args) + + return args + + +if __name__ == "__main__": + + parse_args() diff --git a/pythonforandroid/bootstraps/webview/build/build.xml b/pythonforandroid/bootstraps/webview/build/build.xml new file mode 100644 index 0000000000..9f19a077b1 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/build.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pythonforandroid/bootstraps/webview/build/jni/Android.mk b/pythonforandroid/bootstraps/webview/build/jni/Android.mk new file mode 100644 index 0000000000..5053e7d643 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/jni/Android.mk @@ -0,0 +1 @@ +include $(call all-subdir-makefiles) diff --git a/pythonforandroid/bootstraps/webview/build/jni/Application.mk b/pythonforandroid/bootstraps/webview/build/jni/Application.mk new file mode 100644 index 0000000000..e79e378f94 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/jni/Application.mk @@ -0,0 +1,7 @@ + +# Uncomment this if you're using STL in your project +# See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information +# APP_STL := stlport_static + +# APP_ABI := armeabi armeabi-v7a x86 +APP_ABI := $(ARCH) diff --git a/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk b/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk new file mode 100644 index 0000000000..41d689d688 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk @@ -0,0 +1,27 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := main + +SDL_PATH := ../SDL + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include + +# Add your application source files here... +LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \ + start.c + +LOCAL_CFLAGS += -I$(LOCAL_PATH)/../../../../other_builds/$(PYTHON2_NAME)/$(ARCH)/python2/python-install/include/python2.7 $(EXTRA_CFLAGS) + +LOCAL_SHARED_LIBRARIES := SDL2 python_shared + +LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog $(EXTRA_LDLIBS) + +LOCAL_LDFLAGS += -L$(LOCAL_PATH)/../../../../other_builds/$(PYTHON2_NAME)/$(ARCH)/python2/python-install/lib $(APPLICATION_ADDITIONAL_LDFLAGS) + +include $(BUILD_SHARED_LIBRARY) + +ifdef CRYSTAX_PYTHON_VERSION + $(call import-module,python/$(CRYSTAX_PYTHON_VERSION)) +endif diff --git a/pythonforandroid/bootstraps/webview/build/jni/src/Android_static.mk b/pythonforandroid/bootstraps/webview/build/jni/src/Android_static.mk new file mode 100644 index 0000000000..faed669c0e --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/jni/src/Android_static.mk @@ -0,0 +1,12 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := main + +LOCAL_SRC_FILES := YourSourceHere.c + +LOCAL_STATIC_LIBRARIES := SDL2_static + +include $(BUILD_SHARED_LIBRARY) +$(call import-module,SDL)LOCAL_PATH := $(call my-dir) diff --git a/pythonforandroid/bootstraps/webview/build/jni/src/start.c b/pythonforandroid/bootstraps/webview/build/jni/src/start.c new file mode 100644 index 0000000000..7b40cb73be --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/jni/src/start.c @@ -0,0 +1,319 @@ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#ifndef Py_PYTHON_H +#error Python headers needed to compile C extensions, please install development version of Python. +#else + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "SDL.h" +#include "android/log.h" +#include "SDL_opengles2.h" + +#define ENTRYPOINT_MAXLEN 128 +#define LOG(n, x) __android_log_write(ANDROID_LOG_INFO, (n), (x)) +#define LOGP(x) LOG("python", (x)) + +static PyObject *androidembed_log(PyObject *self, PyObject *args) { + char *logstr = NULL; + if (!PyArg_ParseTuple(args, "s", &logstr)) { + return NULL; + } + LOG(getenv("PYTHON_NAME"), logstr); + Py_RETURN_NONE; +} + +static PyMethodDef AndroidEmbedMethods[] = { + {"log", androidembed_log, METH_VARARGS, "Log on android platform"}, + {NULL, NULL, 0, NULL}}; + +#if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef androidembed = {PyModuleDef_HEAD_INIT, "androidembed", + "", -1, AndroidEmbedMethods}; + +PyMODINIT_FUNC initandroidembed(void) { + return PyModule_Create(&androidembed); +} +#else +PyMODINIT_FUNC initandroidembed(void) { + (void)Py_InitModule("androidembed", AndroidEmbedMethods); +} +#endif + +int dir_exists(char *filename) { + struct stat st; + if (stat(filename, &st) == 0) { + if (S_ISDIR(st.st_mode)) + return 1; + } + return 0; +} + +int file_exists(const char *filename) { + FILE *file; + if (file = fopen(filename, "r")) { + fclose(file); + return 1; + } + return 0; +} + +/* int main(int argc, char **argv) { */ +int main(int argc, char *argv[]) { + + char *env_argument = NULL; + char *env_entrypoint = NULL; + char *env_logname = NULL; + char entrypoint[ENTRYPOINT_MAXLEN]; + int ret = 0; + FILE *fd; + + /* AND: Several filepaths are hardcoded here, these must be made + configurable */ + /* AND: P4A uses env vars...not sure what's best */ + LOGP("Initialize Python for Android"); + env_argument = getenv("ANDROID_ARGUMENT"); + setenv("ANDROID_APP_PATH", env_argument, 1); + env_entrypoint = getenv("ANDROID_ENTRYPOINT"); + env_logname = getenv("PYTHON_NAME"); + + if (env_logname == NULL) { + env_logname = "python"; + setenv("PYTHON_NAME", "python", 1); + } + + LOGP("Changing directory to the one provided by ANDROID_ARGUMENT"); + LOGP(env_argument); + chdir(env_argument); + + Py_SetProgramName(L"android_python"); + +#if PY_MAJOR_VERSION >= 3 + /* our logging module for android + */ + PyImport_AppendInittab("androidembed", initandroidembed); +#endif + + LOGP("Preparing to initialize python"); + + if (dir_exists("crystax_python/")) { + LOGP("crystax_python exists"); + char paths[256]; + snprintf(paths, 256, + "%s/crystax_python/stdlib.zip:%s/crystax_python/modules", + env_argument, env_argument); + /* snprintf(paths, 256, "%s/stdlib.zip:%s/modules", env_argument, + * env_argument); */ + LOGP("calculated paths to be..."); + LOGP(paths); + +#if PY_MAJOR_VERSION >= 3 + wchar_t *wchar_paths = Py_DecodeLocale(paths, NULL); + Py_SetPath(wchar_paths); +#else + char *wchar_paths = paths; + LOGP("Can't Py_SetPath in python2, so crystax python2 doesn't work yet"); + exit(1); +#endif + + LOGP("set wchar paths..."); + } else { + LOGP("crystax_python does not exist"); + } + + Py_Initialize(); + +#if PY_MAJOR_VERSION < 3 + PySys_SetArgv(argc, argv); +#endif + + LOGP("Initialized python"); + + /* ensure threads will work. + */ + LOGP("AND: Init threads"); + PyEval_InitThreads(); + +#if PY_MAJOR_VERSION < 3 + initandroidembed(); +#endif + + PyRun_SimpleString("import androidembed\nandroidembed.log('testing python " + "print redirection')"); + + /* inject our bootstrap code to redirect python stdin/stdout + * replace sys.path with our path + */ + PyRun_SimpleString("import sys, posix\n"); + if (dir_exists("lib")) { + /* If we built our own python, set up the paths correctly */ + LOGP("Setting up python from ANDROID_PRIVATE"); + PyRun_SimpleString("private = posix.environ['ANDROID_PRIVATE']\n" + "argument = posix.environ['ANDROID_ARGUMENT']\n" + "sys.path[:] = [ \n" + " private + '/lib/python27.zip', \n" + " private + '/lib/python2.7/', \n" + " private + '/lib/python2.7/lib-dynload/', \n" + " private + '/lib/python2.7/site-packages/', \n" + " argument ]\n"); + } + + if (dir_exists("crystax_python")) { + char add_site_packages_dir[256]; + snprintf(add_site_packages_dir, 256, + "sys.path.append('%s/crystax_python/site-packages')", + env_argument); + + PyRun_SimpleString("import sys\n" + "sys.argv = ['notaninterpreterreally']\n" + "from os.path import realpath, join, dirname"); + PyRun_SimpleString(add_site_packages_dir); + /* "sys.path.append(join(dirname(realpath(__file__)), 'site-packages'))") */ + PyRun_SimpleString("sys.path = ['.'] + sys.path"); + } + + PyRun_SimpleString( + "class LogFile(object):\n" + " def __init__(self):\n" + " self.buffer = ''\n" + " def write(self, s):\n" + " s = self.buffer + s\n" + " lines = s.split(\"\\n\")\n" + " for l in lines[:-1]:\n" + " androidembed.log(l)\n" + " self.buffer = lines[-1]\n" + " def flush(self):\n" + " return\n" + "sys.stdout = sys.stderr = LogFile()\n" + "print('Android path', sys.path)\n" + "import os\n" + "print('os.environ is', os.environ)\n" + "print('Android kivy bootstrap done. __name__ is', __name__)"); + +#if PY_MAJOR_VERSION < 3 + PyRun_SimpleString("import site; print site.getsitepackages()\n"); +#endif + + LOGP("AND: Ran string"); + + /* run it ! + */ + LOGP("Run user program, change dir and execute entrypoint"); + + /* Get the entrypoint, search the .pyo then .py + */ + char *dot = strrchr(env_entrypoint, '.'); + if (dot <= 0) { + LOGP("Invalid entrypoint, abort."); + return -1; + } + if (strlen(env_entrypoint) > ENTRYPOINT_MAXLEN - 2) { + LOGP("Entrypoint path is too long, try increasing ENTRYPOINT_MAXLEN."); + return -1; + } + if (!strcmp(dot, ".pyo")) { + if (!file_exists(env_entrypoint)) { + /* fallback on .py */ + strcpy(entrypoint, env_entrypoint); + entrypoint[strlen(env_entrypoint) - 1] = '\0'; + LOGP(entrypoint); + if (!file_exists(entrypoint)) { + LOGP("Entrypoint not found (.pyo, fallback on .py), abort"); + return -1; + } + } else { + strcpy(entrypoint, env_entrypoint); + } + } else if (!strcmp(dot, ".py")) { + /* if .py is passed, check the pyo version first */ + strcpy(entrypoint, env_entrypoint); + entrypoint[strlen(env_entrypoint) + 1] = '\0'; + entrypoint[strlen(env_entrypoint)] = 'o'; + if (!file_exists(entrypoint)) { + /* fallback on pure python version */ + if (!file_exists(env_entrypoint)) { + LOGP("Entrypoint not found (.py), abort."); + return -1; + } + strcpy(entrypoint, env_entrypoint); + } + } else { + LOGP("Entrypoint have an invalid extension (must be .py or .pyo), abort."); + return -1; + } + // LOGP("Entrypoint is:"); + // LOGP(entrypoint); + fd = fopen(entrypoint, "r"); + if (fd == NULL) { + LOGP("Open the entrypoint failed"); + LOGP(entrypoint); + return -1; + } + + /* run python ! + */ + ret = PyRun_SimpleFile(fd, entrypoint); + + if (PyErr_Occurred() != NULL) { + ret = 1; + PyErr_Print(); /* This exits with the right code if SystemExit. */ + PyObject *f = PySys_GetObject("stdout"); + if (PyFile_WriteString( + "\n", f)) /* python2 used Py_FlushLine, but this no longer exists */ + PyErr_Clear(); + } + + /* close everything + */ + Py_Finalize(); + fclose(fd); + + LOGP("Python for android ended."); + return ret; +} + +JNIEXPORT void JNICALL Java_org_kivy_android_PythonService_nativeStart( + JNIEnv *env, jobject thiz, jstring j_android_private, + jstring j_android_argument, jstring j_service_entrypoint, + jstring j_python_name, jstring j_python_home, jstring j_python_path, + jstring j_arg) { + jboolean iscopy; + const char *android_private = + (*env)->GetStringUTFChars(env, j_android_private, &iscopy); + const char *android_argument = + (*env)->GetStringUTFChars(env, j_android_argument, &iscopy); + const char *service_entrypoint = + (*env)->GetStringUTFChars(env, j_service_entrypoint, &iscopy); + const char *python_name = + (*env)->GetStringUTFChars(env, j_python_name, &iscopy); + const char *python_home = + (*env)->GetStringUTFChars(env, j_python_home, &iscopy); + const char *python_path = + (*env)->GetStringUTFChars(env, j_python_path, &iscopy); + const char *arg = (*env)->GetStringUTFChars(env, j_arg, &iscopy); + + setenv("ANDROID_PRIVATE", android_private, 1); + setenv("ANDROID_ARGUMENT", android_argument, 1); + setenv("ANDROID_ENTRYPOINT", service_entrypoint, 1); + setenv("PYTHONOPTIMIZE", "2", 1); + setenv("PYTHON_NAME", python_name, 1); + setenv("PYTHONHOME", python_home, 1); + setenv("PYTHONPATH", python_path, 1); + setenv("PYTHON_SERVICE_ARGUMENT", arg, 1); + + char *argv[] = {"."}; + /* ANDROID_ARGUMENT points to service subdir, + * so main() will run main.py from this dir + */ + main(1, argv); +} + +#endif diff --git a/pythonforandroid/bootstraps/webview/build/proguard-project.txt b/pythonforandroid/bootstraps/webview/build/proguard-project.txt new file mode 100644 index 0000000000..f2fe1559a2 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable-hdpi/ic_launcher.png b/pythonforandroid/bootstraps/webview/build/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d50bdaae06ee5a8d3f39911f81715abd3bf7b24d GIT binary patch literal 2683 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 literal 0 HcmV?d00001 diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable-mdpi/ic_launcher.png b/pythonforandroid/bootstraps/webview/build/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0a299eb3cc0273ad1fc260cf0b4a2c35f5d373f5 GIT binary patch literal 1698 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 literal 0 HcmV?d00001 diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable-xxhdpi/ic_launcher.png b/pythonforandroid/bootstraps/webview/build/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d423dac2624cf0b5dc90821a15362bc29e5a1e6b GIT binary patch literal 6874 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 literal 0 HcmV?d00001 diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable/.gitkeep b/pythonforandroid/bootstraps/webview/build/res/drawable/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable/icon.png b/pythonforandroid/bootstraps/webview/build/res/drawable/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..59a00ba6fff07cec43a4100fdf22f3f679df2349 GIT binary patch literal 16525 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 L>T(q_W}*KFob!<> literal 0 HcmV?d00001 diff --git a/pythonforandroid/bootstraps/webview/build/res/layout/main.xml b/pythonforandroid/bootstraps/webview/build/res/layout/main.xml new file mode 100644 index 0000000000..123c4b6eac --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/res/layout/main.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/pythonforandroid/bootstraps/webview/build/res/values/strings.xml b/pythonforandroid/bootstraps/webview/build/res/values/strings.xml new file mode 100644 index 0000000000..daebceb9d5 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/res/values/strings.xml @@ -0,0 +1,5 @@ + + + SDL App + 0.1 + diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/Octal.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/Octal.java new file mode 100755 index 0000000000..dd10624eab --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/Octal.java @@ -0,0 +1,141 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +/** + * @author Kamran Zafar + * + */ +public class Octal { + + /** + * Parse an octal string from a header buffer. This is used for the file + * permission mode value. + * + * @param header + * The header buffer from which to parse. + * @param offset + * The offset into the buffer from which to parse. + * @param length + * The number of header bytes to parse. + * + * @return The long value of the octal string. + */ + public static long parseOctal(byte[] header, int offset, int length) { + long result = 0; + boolean stillPadding = true; + + int end = offset + length; + for (int i = offset; i < end; ++i) { + if (header[i] == 0) + break; + + if (header[i] == (byte) ' ' || header[i] == '0') { + if (stillPadding) + continue; + + if (header[i] == (byte) ' ') + break; + } + + stillPadding = false; + + result = ( result << 3 ) + ( header[i] - '0' ); + } + + return result; + } + + /** + * Parse an octal integer from a header buffer. + * + * @param value + * @param buf + * The header buffer from which to parse. + * @param offset + * The offset into the buffer from which to parse. + * @param length + * The number of header bytes to parse. + * + * @return The integer value of the octal bytes. + */ + public static int getOctalBytes(long value, byte[] buf, int offset, int length) { + int idx = length - 1; + + buf[offset + idx] = 0; + --idx; + buf[offset + idx] = (byte) ' '; + --idx; + + if (value == 0) { + buf[offset + idx] = (byte) '0'; + --idx; + } else { + for (long val = value; idx >= 0 && val > 0; --idx) { + buf[offset + idx] = (byte) ( (byte) '0' + (byte) ( val & 7 ) ); + val = val >> 3; + } + } + + for (; idx >= 0; --idx) { + buf[offset + idx] = (byte) ' '; + } + + return offset + length; + } + + /** + * Parse the checksum octal integer from a header buffer. + * + * @param value + * @param buf + * The header buffer from which to parse. + * @param offset + * The offset into the buffer from which to parse. + * @param length + * The number of header bytes to parse. + * @return The integer value of the entry's checksum. + */ + public static int getCheckSumOctalBytes(long value, byte[] buf, int offset, int length) { + getOctalBytes( value, buf, offset, length ); + buf[offset + length - 1] = (byte) ' '; + buf[offset + length - 2] = 0; + return offset + length; + } + + /** + * Parse an octal long integer from a header buffer. + * + * @param value + * @param buf + * The header buffer from which to parse. + * @param offset + * The offset into the buffer from which to parse. + * @param length + * The number of header bytes to parse. + * + * @return The long value of the octal bytes. + */ + public static int getLongOctalBytes(long value, byte[] buf, int offset, int length) { + byte[] temp = new byte[length + 1]; + getOctalBytes( value, temp, 0, length + 1 ); + System.arraycopy( temp, 0, buf, offset, length ); + return offset + length; + } + +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarConstants.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarConstants.java new file mode 100755 index 0000000000..4611e20eaa --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarConstants.java @@ -0,0 +1,28 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +/** + * @author Kamran Zafar + * + */ +public class TarConstants { + public static final int EOF_BLOCK = 1024; + public static final int DATA_BLOCK = 512; + public static final int HEADER_BLOCK = 512; +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarEntry.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarEntry.java new file mode 100755 index 0000000000..fe01db463a --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarEntry.java @@ -0,0 +1,284 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +import java.io.File; +import java.util.Date; + +/** + * @author Kamran Zafar + * + */ +public class TarEntry { + protected File file; + protected TarHeader header; + + private TarEntry() { + this.file = null; + header = new TarHeader(); + } + + public TarEntry(File file, String entryName) { + this(); + this.file = file; + this.extractTarHeader(entryName); + } + + public TarEntry(byte[] headerBuf) { + this(); + this.parseTarHeader(headerBuf); + } + + /** + * Constructor to create an entry from an existing TarHeader object. + * + * This method is useful to add new entries programmatically (e.g. for + * adding files or directories that do not exist in the file system). + * + * @param header + * + */ + public TarEntry(TarHeader header) { + this.file = null; + this.header = header; + } + + public boolean equals(TarEntry it) { + return header.name.toString().equals(it.header.name.toString()); + } + + public boolean isDescendent(TarEntry desc) { + return desc.header.name.toString().startsWith(header.name.toString()); + } + + public TarHeader getHeader() { + return header; + } + + public String getName() { + String name = header.name.toString(); + if (header.namePrefix != null && !header.namePrefix.toString().equals("")) { + name = header.namePrefix.toString() + "/" + name; + } + + return name; + } + + public void setName(String name) { + header.name = new StringBuffer(name); + } + + public int getUserId() { + return header.userId; + } + + public void setUserId(int userId) { + header.userId = userId; + } + + public int getGroupId() { + return header.groupId; + } + + public void setGroupId(int groupId) { + header.groupId = groupId; + } + + public String getUserName() { + return header.userName.toString(); + } + + public void setUserName(String userName) { + header.userName = new StringBuffer(userName); + } + + public String getGroupName() { + return header.groupName.toString(); + } + + public void setGroupName(String groupName) { + header.groupName = new StringBuffer(groupName); + } + + public void setIds(int userId, int groupId) { + this.setUserId(userId); + this.setGroupId(groupId); + } + + public void setModTime(long time) { + header.modTime = time / 1000; + } + + public void setModTime(Date time) { + header.modTime = time.getTime() / 1000; + } + + public Date getModTime() { + return new Date(header.modTime * 1000); + } + + public File getFile() { + return this.file; + } + + public long getSize() { + return header.size; + } + + public void setSize(long size) { + header.size = size; + } + + /** + * Checks if the org.kamrazafar.jtar entry is a directory + * + * @return + */ + public boolean isDirectory() { + if (this.file != null) + return this.file.isDirectory(); + + if (header != null) { + if (header.linkFlag == TarHeader.LF_DIR) + return true; + + if (header.name.toString().endsWith("/")) + return true; + } + + return false; + } + + /** + * Extract header from File + * + * @param entryName + */ + public void extractTarHeader(String entryName) { + header = TarHeader.createHeader(entryName, file.length(), file.lastModified() / 1000, file.isDirectory()); + } + + /** + * Calculate checksum + * + * @param buf + * @return + */ + public long computeCheckSum(byte[] buf) { + long sum = 0; + + for (int i = 0; i < buf.length; ++i) { + sum += 255 & buf[i]; + } + + return sum; + } + + /** + * Writes the header to the byte buffer + * + * @param outbuf + */ + public void writeEntryHeader(byte[] outbuf) { + int offset = 0; + + offset = TarHeader.getNameBytes(header.name, outbuf, offset, TarHeader.NAMELEN); + offset = Octal.getOctalBytes(header.mode, outbuf, offset, TarHeader.MODELEN); + offset = Octal.getOctalBytes(header.userId, outbuf, offset, TarHeader.UIDLEN); + offset = Octal.getOctalBytes(header.groupId, outbuf, offset, TarHeader.GIDLEN); + + long size = header.size; + + offset = Octal.getLongOctalBytes(size, outbuf, offset, TarHeader.SIZELEN); + offset = Octal.getLongOctalBytes(header.modTime, outbuf, offset, TarHeader.MODTIMELEN); + + int csOffset = offset; + for (int c = 0; c < TarHeader.CHKSUMLEN; ++c) + outbuf[offset++] = (byte) ' '; + + outbuf[offset++] = header.linkFlag; + + offset = TarHeader.getNameBytes(header.linkName, outbuf, offset, TarHeader.NAMELEN); + offset = TarHeader.getNameBytes(header.magic, outbuf, offset, TarHeader.USTAR_MAGICLEN); + offset = TarHeader.getNameBytes(header.userName, outbuf, offset, TarHeader.USTAR_USER_NAMELEN); + offset = TarHeader.getNameBytes(header.groupName, outbuf, offset, TarHeader.USTAR_GROUP_NAMELEN); + offset = Octal.getOctalBytes(header.devMajor, outbuf, offset, TarHeader.USTAR_DEVLEN); + offset = Octal.getOctalBytes(header.devMinor, outbuf, offset, TarHeader.USTAR_DEVLEN); + offset = TarHeader.getNameBytes(header.namePrefix, outbuf, offset, TarHeader.USTAR_FILENAME_PREFIX); + + for (; offset < outbuf.length;) + outbuf[offset++] = 0; + + long checkSum = this.computeCheckSum(outbuf); + + Octal.getCheckSumOctalBytes(checkSum, outbuf, csOffset, TarHeader.CHKSUMLEN); + } + + /** + * Parses the tar header to the byte buffer + * + * @param header + * @param bh + */ + public void parseTarHeader(byte[] bh) { + int offset = 0; + + header.name = TarHeader.parseName(bh, offset, TarHeader.NAMELEN); + offset += TarHeader.NAMELEN; + + header.mode = (int) Octal.parseOctal(bh, offset, TarHeader.MODELEN); + offset += TarHeader.MODELEN; + + header.userId = (int) Octal.parseOctal(bh, offset, TarHeader.UIDLEN); + offset += TarHeader.UIDLEN; + + header.groupId = (int) Octal.parseOctal(bh, offset, TarHeader.GIDLEN); + offset += TarHeader.GIDLEN; + + header.size = Octal.parseOctal(bh, offset, TarHeader.SIZELEN); + offset += TarHeader.SIZELEN; + + header.modTime = Octal.parseOctal(bh, offset, TarHeader.MODTIMELEN); + offset += TarHeader.MODTIMELEN; + + header.checkSum = (int) Octal.parseOctal(bh, offset, TarHeader.CHKSUMLEN); + offset += TarHeader.CHKSUMLEN; + + header.linkFlag = bh[offset++]; + + header.linkName = TarHeader.parseName(bh, offset, TarHeader.NAMELEN); + offset += TarHeader.NAMELEN; + + header.magic = TarHeader.parseName(bh, offset, TarHeader.USTAR_MAGICLEN); + offset += TarHeader.USTAR_MAGICLEN; + + header.userName = TarHeader.parseName(bh, offset, TarHeader.USTAR_USER_NAMELEN); + offset += TarHeader.USTAR_USER_NAMELEN; + + header.groupName = TarHeader.parseName(bh, offset, TarHeader.USTAR_GROUP_NAMELEN); + offset += TarHeader.USTAR_GROUP_NAMELEN; + + header.devMajor = (int) Octal.parseOctal(bh, offset, TarHeader.USTAR_DEVLEN); + offset += TarHeader.USTAR_DEVLEN; + + header.devMinor = (int) Octal.parseOctal(bh, offset, TarHeader.USTAR_DEVLEN); + offset += TarHeader.USTAR_DEVLEN; + + header.namePrefix = TarHeader.parseName(bh, offset, TarHeader.USTAR_FILENAME_PREFIX); + } +} \ No newline at end of file diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarHeader.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarHeader.java new file mode 100755 index 0000000000..b9d3a86bef --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarHeader.java @@ -0,0 +1,243 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +import java.io.File; + +/** + * Header + * + *
    + * Offset  Size     Field
    + * 0       100      File name
    + * 100     8        File mode
    + * 108     8        Owner's numeric user ID
    + * 116     8        Group's numeric user ID
    + * 124     12       File size in bytes
    + * 136     12       Last modification time in numeric Unix time format
    + * 148     8        Checksum for header block
    + * 156     1        Link indicator (file type)
    + * 157     100      Name of linked file
    + * 
    + * + * + * File Types + * + *
    + * Value        Meaning
    + * '0'          Normal file
    + * (ASCII NUL)  Normal file (now obsolete)
    + * '1'          Hard link
    + * '2'          Symbolic link
    + * '3'          Character special
    + * '4'          Block special
    + * '5'          Directory
    + * '6'          FIFO
    + * '7'          Contigous
    + * 
    + * + * + * + * Ustar header + * + *
    + * Offset  Size    Field
    + * 257     6       UStar indicator "ustar"
    + * 263     2       UStar version "00"
    + * 265     32      Owner user name
    + * 297     32      Owner group name
    + * 329     8       Device major number
    + * 337     8       Device minor number
    + * 345     155     Filename prefix
    + * 
    + */ + +public class TarHeader { + + /* + * Header + */ + public static final int NAMELEN = 100; + public static final int MODELEN = 8; + public static final int UIDLEN = 8; + public static final int GIDLEN = 8; + public static final int SIZELEN = 12; + public static final int MODTIMELEN = 12; + public static final int CHKSUMLEN = 8; + public static final byte LF_OLDNORM = 0; + + /* + * File Types + */ + public static final byte LF_NORMAL = (byte) '0'; + public static final byte LF_LINK = (byte) '1'; + public static final byte LF_SYMLINK = (byte) '2'; + public static final byte LF_CHR = (byte) '3'; + public static final byte LF_BLK = (byte) '4'; + public static final byte LF_DIR = (byte) '5'; + public static final byte LF_FIFO = (byte) '6'; + public static final byte LF_CONTIG = (byte) '7'; + + /* + * Ustar header + */ + + public static final String USTAR_MAGIC = "ustar"; // POSIX + + public static final int USTAR_MAGICLEN = 8; + public static final int USTAR_USER_NAMELEN = 32; + public static final int USTAR_GROUP_NAMELEN = 32; + public static final int USTAR_DEVLEN = 8; + public static final int USTAR_FILENAME_PREFIX = 155; + + // Header values + public StringBuffer name; + public int mode; + public int userId; + public int groupId; + public long size; + public long modTime; + public int checkSum; + public byte linkFlag; + public StringBuffer linkName; + public StringBuffer magic; // ustar indicator and version + public StringBuffer userName; + public StringBuffer groupName; + public int devMajor; + public int devMinor; + public StringBuffer namePrefix; + + public TarHeader() { + this.magic = new StringBuffer(TarHeader.USTAR_MAGIC); + + this.name = new StringBuffer(); + this.linkName = new StringBuffer(); + + String user = System.getProperty("user.name", ""); + + if (user.length() > 31) + user = user.substring(0, 31); + + this.userId = 0; + this.groupId = 0; + this.userName = new StringBuffer(user); + this.groupName = new StringBuffer(""); + this.namePrefix = new StringBuffer(); + } + + /** + * Parse an entry name from a header buffer. + * + * @param name + * @param header + * The header buffer from which to parse. + * @param offset + * The offset into the buffer from which to parse. + * @param length + * The number of header bytes to parse. + * @return The header's entry name. + */ + public static StringBuffer parseName(byte[] header, int offset, int length) { + StringBuffer result = new StringBuffer(length); + + int end = offset + length; + for (int i = offset; i < end; ++i) { + if (header[i] == 0) + break; + result.append((char) header[i]); + } + + return result; + } + + /** + * Determine the number of bytes in an entry name. + * + * @param name + * @param header + * The header buffer from which to parse. + * @param offset + * The offset into the buffer from which to parse. + * @param length + * The number of header bytes to parse. + * @return The number of bytes in a header's entry name. + */ + public static int getNameBytes(StringBuffer name, byte[] buf, int offset, int length) { + int i; + + for (i = 0; i < length && i < name.length(); ++i) { + buf[offset + i] = (byte) name.charAt(i); + } + + for (; i < length; ++i) { + buf[offset + i] = 0; + } + + return offset + length; + } + + /** + * Creates a new header for a file/directory entry. + * + * + * @param name + * File name + * @param size + * File size in bytes + * @param modTime + * Last modification time in numeric Unix time format + * @param dir + * Is directory + * + * @return + */ + public static TarHeader createHeader(String entryName, long size, long modTime, boolean dir) { + String name = entryName; + name = TarUtils.trim(name.replace(File.separatorChar, '/'), '/'); + + TarHeader header = new TarHeader(); + header.linkName = new StringBuffer(""); + + if (name.length() > 100) { + header.namePrefix = new StringBuffer(name.substring(0, name.lastIndexOf('/'))); + header.name = new StringBuffer(name.substring(name.lastIndexOf('/') + 1)); + } else { + header.name = new StringBuffer(name); + } + + if (dir) { + header.mode = 040755; + header.linkFlag = TarHeader.LF_DIR; + if (header.name.charAt(header.name.length() - 1) != '/') { + header.name.append("/"); + } + header.size = 0; + } else { + header.mode = 0100644; + header.linkFlag = TarHeader.LF_NORMAL; + header.size = size; + } + + header.modTime = modTime; + header.checkSum = 0; + header.devMajor = 0; + header.devMinor = 0; + + return header; + } +} \ No newline at end of file diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarInputStream.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarInputStream.java new file mode 100755 index 0000000000..ec50a1b688 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarInputStream.java @@ -0,0 +1,249 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * @author Kamran Zafar + * + */ +public class TarInputStream extends FilterInputStream { + + private static final int SKIP_BUFFER_SIZE = 2048; + private TarEntry currentEntry; + private long currentFileSize; + private long bytesRead; + private boolean defaultSkip = false; + + public TarInputStream(InputStream in) { + super(in); + currentFileSize = 0; + bytesRead = 0; + } + + @Override + public boolean markSupported() { + return false; + } + + /** + * Not supported + * + */ + @Override + public synchronized void mark(int readlimit) { + } + + /** + * Not supported + * + */ + @Override + public synchronized void reset() throws IOException { + throw new IOException("mark/reset not supported"); + } + + /** + * Read a byte + * + * @see java.io.FilterInputStream#read() + */ + @Override + public int read() throws IOException { + byte[] buf = new byte[1]; + + int res = this.read(buf, 0, 1); + + if (res != -1) { + return 0xFF & buf[0]; + } + + return res; + } + + /** + * Checks if the bytes being read exceed the entry size and adjusts the byte + * array length. Updates the byte counters + * + * + * @see java.io.FilterInputStream#read(byte[], int, int) + */ + @Override + public int read(byte[] b, int off, int len) throws IOException { + if (currentEntry != null) { + if (currentFileSize == currentEntry.getSize()) { + return -1; + } else if ((currentEntry.getSize() - currentFileSize) < len) { + len = (int) (currentEntry.getSize() - currentFileSize); + } + } + + int br = super.read(b, off, len); + + if (br != -1) { + if (currentEntry != null) { + currentFileSize += br; + } + + bytesRead += br; + } + + return br; + } + + /** + * Returns the next entry in the tar file + * + * @return TarEntry + * @throws IOException + */ + public TarEntry getNextEntry() throws IOException { + closeCurrentEntry(); + + byte[] header = new byte[TarConstants.HEADER_BLOCK]; + byte[] theader = new byte[TarConstants.HEADER_BLOCK]; + int tr = 0; + + // Read full header + while (tr < TarConstants.HEADER_BLOCK) { + int res = read(theader, 0, TarConstants.HEADER_BLOCK - tr); + + if (res < 0) { + break; + } + + System.arraycopy(theader, 0, header, tr, res); + tr += res; + } + + // Check if record is null + boolean eof = true; + for (byte b : header) { + if (b != 0) { + eof = false; + break; + } + } + + if (!eof) { + currentEntry = new TarEntry(header); + } + + return currentEntry; + } + + /** + * Returns the current offset (in bytes) from the beginning of the stream. + * This can be used to find out at which point in a tar file an entry's content begins, for instance. + */ + public long getCurrentOffset() { + return bytesRead; + } + + /** + * Closes the current tar entry + * + * @throws IOException + */ + protected void closeCurrentEntry() throws IOException { + if (currentEntry != null) { + if (currentEntry.getSize() > currentFileSize) { + // Not fully read, skip rest of the bytes + long bs = 0; + while (bs < currentEntry.getSize() - currentFileSize) { + long res = skip(currentEntry.getSize() - currentFileSize - bs); + + if (res == 0 && currentEntry.getSize() - currentFileSize > 0) { + // I suspect file corruption + throw new IOException("Possible tar file corruption"); + } + + bs += res; + } + } + + currentEntry = null; + currentFileSize = 0L; + skipPad(); + } + } + + /** + * Skips the pad at the end of each tar entry file content + * + * @throws IOException + */ + protected void skipPad() throws IOException { + if (bytesRead > 0) { + int extra = (int) (bytesRead % TarConstants.DATA_BLOCK); + + if (extra > 0) { + long bs = 0; + while (bs < TarConstants.DATA_BLOCK - extra) { + long res = skip(TarConstants.DATA_BLOCK - extra - bs); + bs += res; + } + } + } + } + + /** + * Skips 'n' bytes on the InputStream
    + * Overrides default implementation of skip + * + */ + @Override + public long skip(long n) throws IOException { + if (defaultSkip) { + // use skip method of parent stream + // may not work if skip not implemented by parent + long bs = super.skip(n); + bytesRead += bs; + + return bs; + } + + if (n <= 0) { + return 0; + } + + long left = n; + byte[] sBuff = new byte[SKIP_BUFFER_SIZE]; + + while (left > 0) { + int res = read(sBuff, 0, (int) (left < SKIP_BUFFER_SIZE ? left : SKIP_BUFFER_SIZE)); + if (res < 0) { + break; + } + left -= res; + } + + return n - left; + } + + public boolean isDefaultSkip() { + return defaultSkip; + } + + public void setDefaultSkip(boolean defaultSkip) { + this.defaultSkip = defaultSkip; + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarOutputStream.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarOutputStream.java new file mode 100755 index 0000000000..ffdfe87564 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarOutputStream.java @@ -0,0 +1,163 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.RandomAccessFile; + +/** + * @author Kamran Zafar + * + */ +public class TarOutputStream extends OutputStream { + private final OutputStream out; + private long bytesWritten; + private long currentFileSize; + private TarEntry currentEntry; + + public TarOutputStream(OutputStream out) { + this.out = out; + bytesWritten = 0; + currentFileSize = 0; + } + + public TarOutputStream(final File fout) throws FileNotFoundException { + this.out = new BufferedOutputStream(new FileOutputStream(fout)); + bytesWritten = 0; + currentFileSize = 0; + } + + /** + * Opens a file for writing. + */ + public TarOutputStream(final File fout, final boolean append) throws IOException { + @SuppressWarnings("resource") + RandomAccessFile raf = new RandomAccessFile(fout, "rw"); + final long fileSize = fout.length(); + if (append && fileSize > TarConstants.EOF_BLOCK) { + raf.seek(fileSize - TarConstants.EOF_BLOCK); + } + out = new BufferedOutputStream(new FileOutputStream(raf.getFD())); + } + + /** + * Appends the EOF record and closes the stream + * + * @see java.io.FilterOutputStream#close() + */ + @Override + public void close() throws IOException { + closeCurrentEntry(); + write( new byte[TarConstants.EOF_BLOCK] ); + out.close(); + } + /** + * Writes a byte to the stream and updates byte counters + * + * @see java.io.FilterOutputStream#write(int) + */ + @Override + public void write(int b) throws IOException { + out.write( b ); + bytesWritten += 1; + + if (currentEntry != null) { + currentFileSize += 1; + } + } + + /** + * Checks if the bytes being written exceed the current entry size. + * + * @see java.io.FilterOutputStream#write(byte[], int, int) + */ + @Override + public void write(byte[] b, int off, int len) throws IOException { + if (currentEntry != null && !currentEntry.isDirectory()) { + if (currentEntry.getSize() < currentFileSize + len) { + throw new IOException( "The current entry[" + currentEntry.getName() + "] size[" + + currentEntry.getSize() + "] is smaller than the bytes[" + ( currentFileSize + len ) + + "] being written." ); + } + } + + out.write( b, off, len ); + + bytesWritten += len; + + if (currentEntry != null) { + currentFileSize += len; + } + } + + /** + * Writes the next tar entry header on the stream + * + * @param entry + * @throws IOException + */ + public void putNextEntry(TarEntry entry) throws IOException { + closeCurrentEntry(); + + byte[] header = new byte[TarConstants.HEADER_BLOCK]; + entry.writeEntryHeader( header ); + + write( header ); + + currentEntry = entry; + } + + /** + * Closes the current tar entry + * + * @throws IOException + */ + protected void closeCurrentEntry() throws IOException { + if (currentEntry != null) { + if (currentEntry.getSize() > currentFileSize) { + throw new IOException( "The current entry[" + currentEntry.getName() + "] of size[" + + currentEntry.getSize() + "] has not been fully written." ); + } + + currentEntry = null; + currentFileSize = 0; + + pad(); + } + } + + /** + * Pads the last content block + * + * @throws IOException + */ + protected void pad() throws IOException { + if (bytesWritten > 0) { + int extra = (int) ( bytesWritten % TarConstants.DATA_BLOCK ); + + if (extra > 0) { + write( new byte[TarConstants.DATA_BLOCK - extra] ); + } + } + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarUtils.java b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarUtils.java new file mode 100755 index 0000000000..50165765c0 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kamranzafar/jtar/TarUtils.java @@ -0,0 +1,96 @@ +/** + * Copyright 2012 Kamran Zafar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.kamranzafar.jtar; + +import java.io.File; + +/** + * @author Kamran + * + */ +public class TarUtils { + /** + * Determines the tar file size of the given folder/file path + * + * @param path + * @return + */ + public static long calculateTarSize(File path) { + return tarSize(path) + TarConstants.EOF_BLOCK; + } + + private static long tarSize(File dir) { + long size = 0; + + if (dir.isFile()) { + return entrySize(dir.length()); + } else { + File[] subFiles = dir.listFiles(); + + if (subFiles != null && subFiles.length > 0) { + for (File file : subFiles) { + if (file.isFile()) { + size += entrySize(file.length()); + } else { + size += tarSize(file); + } + } + } else { + // Empty folder header + return TarConstants.HEADER_BLOCK; + } + } + + return size; + } + + private static long entrySize(long fileSize) { + long size = 0; + size += TarConstants.HEADER_BLOCK; // Header + size += fileSize; // File size + + long extra = size % TarConstants.DATA_BLOCK; + + if (extra > 0) { + size += (TarConstants.DATA_BLOCK - extra); // pad + } + + return size; + } + + public static String trim(String s, char c) { + StringBuffer tmp = new StringBuffer(s); + for (int i = 0; i < tmp.length(); i++) { + if (tmp.charAt(i) != c) { + break; + } else { + tmp.deleteCharAt(i); + } + } + + for (int i = tmp.length() - 1; i >= 0; i--) { + if (tmp.charAt(i) != c) { + break; + } else { + tmp.deleteCharAt(i); + } + } + + return tmp.toString(); + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiver.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiver.java new file mode 100644 index 0000000000..58a1c5edf8 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiver.java @@ -0,0 +1,19 @@ +package org.kivy.android; + +import android.content.BroadcastReceiver; +import android.content.Intent; +import android.content.Context; + +public class GenericBroadcastReceiver extends BroadcastReceiver { + + GenericBroadcastReceiverCallback listener; + + public GenericBroadcastReceiver(GenericBroadcastReceiverCallback listener) { + super(); + this.listener = listener; + } + + public void onReceive(Context context, Intent intent) { + this.listener.onReceive(context, intent); + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiverCallback.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiverCallback.java new file mode 100644 index 0000000000..1a87c98b2d --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/GenericBroadcastReceiverCallback.java @@ -0,0 +1,8 @@ +package org.kivy.android; + +import android.content.Intent; +import android.content.Context; + +public interface GenericBroadcastReceiverCallback { + void onReceive(Context context, Intent intent); +}; diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java new file mode 100644 index 0000000000..18de5dbad0 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java @@ -0,0 +1,357 @@ + +package org.kivy.android; + +import java.io.InputStream; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.File; +import java.io.IOException; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.ArrayList; + +import android.view.ViewGroup; +import android.view.SurfaceView; +import android.app.Activity; +import android.content.Intent; +import android.util.Log; +import android.widget.Toast; +import android.os.Bundle; +import android.os.PowerManager; +import android.graphics.PixelFormat; +import android.view.SurfaceHolder; +import android.content.Context; +import android.content.pm.PackageManager; +import android.content.pm.ApplicationInfo; +import android.content.Intent; +import android.widget.ImageView; +import java.io.InputStream; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +import org.libsdl.app.SDLActivity; + +import org.kivy.android.PythonUtil; + +import org.renpy.android.ResourceManager; +import org.renpy.android.AssetExtract; + + +public class PythonActivity extends SDLActivity { + private static final String TAG = "PythonActivity"; + + public static PythonActivity mActivity = null; + + private ResourceManager resourceManager = null; + private Bundle mMetaData = null; + private PowerManager.WakeLock mWakeLock = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + Log.v(TAG, "My oncreate running"); + resourceManager = new ResourceManager(this); + // this.showLoadingScreen(); + // this.removeLoadingScreen(); + + Log.v(TAG, "Ready to unpack"); + unpackData("private", getFilesDir()); + + Log.v(TAG, "About to do super onCreate"); + super.onCreate(savedInstanceState); + Log.v(TAG, "Did super onCreate"); + + // this.showLoadingScreen(); + this.mActivity = this; + + String mFilesDirectory = mActivity.getFilesDir().getAbsolutePath(); + Log.v(TAG, "Setting env vars for start.c and Python to use"); + SDLActivity.nativeSetEnv("ANDROID_PRIVATE", mFilesDirectory); + SDLActivity.nativeSetEnv("ANDROID_ARGUMENT", mFilesDirectory); + SDLActivity.nativeSetEnv("ANDROID_APP_PATH", mFilesDirectory); + SDLActivity.nativeSetEnv("ANDROID_ENTRYPOINT", "main.pyo"); + SDLActivity.nativeSetEnv("PYTHONHOME", mFilesDirectory); + SDLActivity.nativeSetEnv("PYTHONPATH", mFilesDirectory + ":" + mFilesDirectory + "/lib"); + + try { + Log.v(TAG, "Access to our meta-data..."); + this.mMetaData = this.mActivity.getPackageManager().getApplicationInfo( + this.mActivity.getPackageName(), PackageManager.GET_META_DATA).metaData; + + PowerManager pm = (PowerManager) this.mActivity.getSystemService(Context.POWER_SERVICE); + if ( this.mMetaData.getInt("wakelock") == 1 ) { + this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "Screen On"); + } + if ( this.mMetaData.getInt("surface.transparent") != 0 ) { + Log.v(TAG, "Surface will be transparent."); + getSurface().setZOrderOnTop(true); + getSurface().getHolder().setFormat(PixelFormat.TRANSPARENT); + } else { + Log.i(TAG, "Surface will NOT be transparent"); + } + } catch (PackageManager.NameNotFoundException e) { + } + } + + public void loadLibraries() { + PythonUtil.loadLibraries(getFilesDir()); + } + + public void recursiveDelete(File f) { + if (f.isDirectory()) { + for (File r : f.listFiles()) { + recursiveDelete(r); + } + } + f.delete(); + } + + /** + * Show an error using a toast. (Only makes sense from non-UI + * threads.) + */ + public void toastError(final String msg) { + + final Activity thisActivity = this; + + runOnUiThread(new Runnable () { + public void run() { + Toast.makeText(thisActivity, msg, Toast.LENGTH_LONG).show(); + } + }); + + // Wait to show the error. + synchronized (this) { + try { + this.wait(1000); + } catch (InterruptedException e) { + } + } + } + + public void unpackData(final String resource, File target) { + + Log.v(TAG, "UNPACKING!!! " + resource + " " + target.getName()); + + // The version of data in memory and on disk. + String data_version = resourceManager.getString(resource + "_version"); + String disk_version = null; + + Log.v(TAG, "Data version is " + data_version); + + // If no version, no unpacking is necessary. + if (data_version == null) { + return; + } + + // Check the current disk version, if any. + String filesDir = target.getAbsolutePath(); + String disk_version_fn = filesDir + "/" + resource + ".version"; + + try { + byte buf[] = new byte[64]; + InputStream is = new FileInputStream(disk_version_fn); + int len = is.read(buf); + disk_version = new String(buf, 0, len); + is.close(); + } catch (Exception e) { + disk_version = ""; + } + + // If the disk data is out of date, extract it and write the + // version file. + // if (! data_version.equals(disk_version)) { + if (! data_version.equals(disk_version)) { + Log.v(TAG, "Extracting " + resource + " assets."); + + recursiveDelete(target); + target.mkdirs(); + + AssetExtract ae = new AssetExtract(this); + if (!ae.extractTar(resource + ".mp3", target.getAbsolutePath())) { + toastError("Could not extract " + resource + " data."); + } + + try { + // Write .nomedia. + new File(target, ".nomedia").createNewFile(); + + // Write version file. + FileOutputStream os = new FileOutputStream(disk_version_fn); + os.write(data_version.getBytes()); + os.close(); + } catch (Exception e) { + Log.w("python", e); + } + } + } + + public static ViewGroup getLayout() { + return mLayout; + } + + public static SurfaceView getSurface() { + return mSurface; + } + + //---------------------------------------------------------------------------- + // Listener interface for onNewIntent + // + + public interface NewIntentListener { + void onNewIntent(Intent intent); + } + + private List newIntentListeners = null; + + public void registerNewIntentListener(NewIntentListener listener) { + if ( this.newIntentListeners == null ) + this.newIntentListeners = Collections.synchronizedList(new ArrayList()); + this.newIntentListeners.add(listener); + } + + public void unregisterNewIntentListener(NewIntentListener listener) { + if ( this.newIntentListeners == null ) + return; + this.newIntentListeners.remove(listener); + } + + @Override + protected void onNewIntent(Intent intent) { + if ( this.newIntentListeners == null ) + return; + this.onResume(); + synchronized ( this.newIntentListeners ) { + Iterator iterator = this.newIntentListeners.iterator(); + while ( iterator.hasNext() ) { + (iterator.next()).onNewIntent(intent); + } + } + } + + //---------------------------------------------------------------------------- + // Listener interface for onActivityResult + // + + public interface ActivityResultListener { + void onActivityResult(int requestCode, int resultCode, Intent data); + } + + private List activityResultListeners = null; + + public void registerActivityResultListener(ActivityResultListener listener) { + if ( this.activityResultListeners == null ) + this.activityResultListeners = Collections.synchronizedList(new ArrayList()); + this.activityResultListeners.add(listener); + } + + public void unregisterActivityResultListener(ActivityResultListener listener) { + if ( this.activityResultListeners == null ) + return; + this.activityResultListeners.remove(listener); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent intent) { + if ( this.activityResultListeners == null ) + return; + this.onResume(); + synchronized ( this.activityResultListeners ) { + Iterator iterator = this.activityResultListeners.iterator(); + while ( iterator.hasNext() ) + (iterator.next()).onActivityResult(requestCode, resultCode, intent); + } + } + + public static void start_service(String serviceTitle, String serviceDescription, + String pythonServiceArgument) { + Intent serviceIntent = new Intent(PythonActivity.mActivity, PythonService.class); + String argument = PythonActivity.mActivity.getFilesDir().getAbsolutePath(); + String filesDirectory = argument; + serviceIntent.putExtra("androidPrivate", argument); + serviceIntent.putExtra("androidArgument", argument); + serviceIntent.putExtra("serviceEntrypoint", "service/main.pyo"); + serviceIntent.putExtra("pythonHome", argument); + serviceIntent.putExtra("pythonPath", argument + ":" + filesDirectory + "/lib"); + serviceIntent.putExtra("serviceTitle", serviceTitle); + serviceIntent.putExtra("serviceDescription", serviceDescription); + serviceIntent.putExtra("pythonServiceArgument", pythonServiceArgument); + PythonActivity.mActivity.startService(serviceIntent); + } + + public static void stop_service() { + Intent serviceIntent = new Intent(PythonActivity.mActivity, PythonService.class); + PythonActivity.mActivity.stopService(serviceIntent); + } + + /** Loading screen implementation + * keepActive() is a method plugged in pollInputDevices in SDLActivity. + * Once it's called twice, the loading screen will be removed. + * The first call happen as soon as the window is created, but no image has been + * displayed first. My tests showed that we can wait one more. This might delay + * the real available of few hundred milliseconds. + * The real deal is to know if a rendering has already happen. The previous + * python-for-android and kivy was having something for that, but this new version + * is not compatible, and would require a new kivy version. + * In case of, the method PythonActivty.mActivity.removeLoadingScreen() can be called. + */ + public static ImageView mImageView = null; + int mLoadingCount = 2; + + @Override + public void keepActive() { + if (this.mLoadingCount > 0) { + this.mLoadingCount -= 1; + if (this.mLoadingCount == 0) { + this.removeLoadingScreen(); + } + } + } + + public void removeLoadingScreen() { + runOnUiThread(new Runnable() { + public void run() { + if (PythonActivity.mImageView != null) { + ((ViewGroup)PythonActivity.mImageView.getParent()).removeView( + PythonActivity.mImageView); + PythonActivity.mImageView = null; + } + } + }); + } + + protected void showLoadingScreen() { + // load the bitmap + // 1. if the image is valid and we don't have layout yet, assign this bitmap + // as main view. + // 2. if we have a layout, just set it in the layout. + if (mImageView == null) { + int presplashId = this.resourceManager.getIdentifier("presplash", "drawable"); + InputStream is = this.getResources().openRawResource(presplashId); + Bitmap bitmap = null; + try { + bitmap = BitmapFactory.decodeStream(is); + } finally { + try { + is.close(); + } catch (IOException e) {}; + } + + mImageView = new ImageView(this); + mImageView.setImageBitmap(bitmap); + mImageView.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.FILL_PARENT, + ViewGroup.LayoutParams.FILL_PARENT)); + mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER); + } + + if (mLayout == null) { + setContentView(mImageView); + } else { + mLayout.addView(mImageView); + } + } + + +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonService.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonService.java new file mode 100644 index 0000000000..f8dde3e0d2 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonService.java @@ -0,0 +1,129 @@ +package org.kivy.android; + +import android.app.Service; +import android.os.IBinder; +import android.os.Bundle; +import android.content.Intent; +import android.content.Context; +import android.util.Log; +import android.app.Notification; +import android.app.PendingIntent; +import android.os.Process; + +import org.kivy.android.PythonUtil; + +import org.renpy.android.Hardware; + + +public class PythonService extends Service implements Runnable { + + // Thread for Python code + private Thread pythonThread = null; + + // Python environment variables + private String androidPrivate; + private String androidArgument; + private String pythonName; + private String pythonHome; + private String pythonPath; + private String serviceEntrypoint; + // Argument to pass to Python code, + private String pythonServiceArgument; + public static PythonService mService = null; + private Intent startIntent = null; + + private boolean autoRestartService = false; + + public void setAutoRestartService(boolean restart) { + autoRestartService = restart; + } + + public boolean canDisplayNotification() { + return true; + } + + public int startType() { + return START_NOT_STICKY; + } + + @Override + public IBinder onBind(Intent arg0) { + return null; + } + + @Override + public void onCreate() { + super.onCreate(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + if (pythonThread != null) { + Log.v("python service", "service exists, do not start again"); + return START_NOT_STICKY; + } + + startIntent = intent; + Bundle extras = intent.getExtras(); + androidPrivate = extras.getString("androidPrivate"); + androidArgument = extras.getString("androidArgument"); + serviceEntrypoint = extras.getString("serviceEntrypoint"); + pythonName = extras.getString("pythonName"); + pythonHome = extras.getString("pythonHome"); + pythonPath = extras.getString("pythonPath"); + pythonServiceArgument = extras.getString("pythonServiceArgument"); + + pythonThread = new Thread(this); + pythonThread.start(); + + if (canDisplayNotification()) { + doStartForeground(extras); + } + + return startType(); + } + + protected void doStartForeground(Bundle extras) { + String serviceTitle = extras.getString("serviceTitle"); + String serviceDescription = extras.getString("serviceDescription"); + + Context context = getApplicationContext(); + Notification notification = new Notification(context.getApplicationInfo().icon, + serviceTitle, System.currentTimeMillis()); + Intent contextIntent = new Intent(context, PythonActivity.class); + PendingIntent pIntent = PendingIntent.getActivity(context, 0, contextIntent, + PendingIntent.FLAG_UPDATE_CURRENT); + notification.setLatestEventInfo(context, serviceTitle, serviceDescription, pIntent); + startForeground(1, notification); + } + + @Override + public void onDestroy() { + super.onDestroy(); + pythonThread = null; + if (autoRestartService && startIntent != null) { + Log.v("python service", "service restart requested"); + startService(startIntent); + } + Process.killProcess(Process.myPid()); + } + + @Override + public void run(){ + PythonUtil.loadLibraries(getFilesDir()); + this.mService = this; + nativeStart( + androidPrivate, androidArgument, + serviceEntrypoint, pythonName, + pythonHome, pythonPath, + pythonServiceArgument); + stopSelf(); + } + + // Native part + public static native void nativeStart( + String androidPrivate, String androidArgument, + String serviceEntrypoint, String pythonName, + String pythonHome, String pythonPath, + String pythonServiceArgument); +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonUtil.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonUtil.java new file mode 100644 index 0000000000..a488a1b878 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonUtil.java @@ -0,0 +1,56 @@ +package org.kivy.android; + +import java.io.File; + +import android.util.Log; + + +public class PythonUtil { + private static final String TAG = "PythonUtil"; + + protected static String[] getLibraries() { + return new String[] { + "SDL2", + "SDL2_image", + "SDL2_mixer", + "SDL2_ttf", + "python2.7", + "python3.5m", + "main" + }; + } + + public static void loadLibraries(File filesDir) { + + String filesDirPath = filesDir.getAbsolutePath(); + boolean skippedPython = false; + + for (String lib : getLibraries()) { + try { + System.loadLibrary(lib); + } catch(UnsatisfiedLinkError e) { + if (lib.startsWith("python") && !skippedPython) { + skippedPython = true; + continue; + } + throw e; + } + } + + try { + System.load(filesDirPath + "/lib/python2.7/lib-dynload/_io.so"); + System.load(filesDirPath + "/lib/python2.7/lib-dynload/unicodedata.so"); + } catch(UnsatisfiedLinkError e) { + Log.v(TAG, "Failed to load _io.so or unicodedata.so...but that's okay."); + } + + try { + // System.loadLibrary("ctypes"); + System.load(filesDirPath + "/lib/python2.7/lib-dynload/_ctypes.so"); + } catch(UnsatisfiedLinkError e) { + Log.v(TAG, "Unsatisfied linker when loading ctypes"); + } + + Log.v(TAG, "Loaded everything!"); + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonEvent.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonEvent.java new file mode 100644 index 0000000000..9911356ba0 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonEvent.java @@ -0,0 +1,45 @@ +package org.kivy.android.concurrency; + +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by ryan on 3/28/14. + */ +public class PythonEvent { + private final Lock lock = new ReentrantLock(); + private final Condition cond = lock.newCondition(); + private boolean flag = false; + + public void set() { + lock.lock(); + try { + flag = true; + cond.signalAll(); + } finally { + lock.unlock(); + } + } + + public void wait_() throws InterruptedException { + lock.lock(); + try { + while (!flag) { + cond.await(); + } + } finally { + lock.unlock(); + } + } + + public void clear() { + lock.lock(); + try { + flag = false; + cond.signalAll(); + } finally { + lock.unlock(); + } + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonLock.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonLock.java new file mode 100644 index 0000000000..22f9d903e1 --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/concurrency/PythonLock.java @@ -0,0 +1,19 @@ +package org.kivy.android.concurrency; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by ryan on 3/28/14. + */ +public class PythonLock { + private final Lock lock = new ReentrantLock(); + + public void acquire() { + lock.lock(); + } + + public void release() { + lock.unlock(); + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/libsdl/app/SDLActivity.java b/pythonforandroid/bootstraps/webview/build/src/org/libsdl/app/SDLActivity.java new file mode 100644 index 0000000000..68b7e7b6df --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/libsdl/app/SDLActivity.java @@ -0,0 +1,1596 @@ +package org.libsdl.app; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.lang.reflect.Method; + +import android.app.*; +import android.content.*; +import android.view.*; +import android.view.inputmethod.BaseInputConnection; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; +import android.view.inputmethod.InputMethodManager; +import android.widget.AbsoluteLayout; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.os.*; +import android.util.Log; +import android.util.SparseArray; +import android.graphics.*; +import android.graphics.drawable.Drawable; +import android.media.*; +import android.hardware.*; + +import android.view.ViewGroup.LayoutParams; +import android.webkit.WebViewClient; + +import android.webkit.WebView; + +/** + SDL Activity +*/ +public class SDLActivity extends Activity { + private static final String TAG = "SDL"; + + // Keep track of the paused state + public static boolean mIsPaused, mIsSurfaceReady, mHasFocus; + public static boolean mExitCalledFromJava; + + /** If shared libraries (e.g. SDL or the native application) could not be loaded. */ + public static boolean mBrokenLibraries; + + // If we want to separate mouse and touch events. + // This is only toggled in native code when a hint is set! + public static boolean mSeparateMouseAndTouch; + + // Main components + protected static SDLActivity mSingleton; + protected static SDLSurface mSurface; + protected static View mTextEdit; + protected static ViewGroup mLayout; + protected static SDLJoystickHandler mJoystickHandler; + + protected static WebView mWebView; + + // This is what SDL runs in. It invokes SDL_main(), eventually + protected static Thread mSDLThread; + + // Audio + protected static AudioTrack mAudioTrack; + + /** + * This method is called by SDL before loading the native shared libraries. + * It can be overridden to provide names of shared libraries to be loaded. + * The default implementation returns the defaults. It never returns null. + * An array returned by a new implementation must at least contain "SDL2". + * Also keep in mind that the order the libraries are loaded may matter. + * @return names of shared libraries to be loaded (e.g. "SDL2", "main"). + */ + protected String[] getLibraries() { + return new String[] { + "SDL2", + // "SDL2_image", + // "SDL2_mixer", + // "SDL2_net", + // "SDL2_ttf", + "main" + }; + } + + // Load the .so + public void loadLibraries() { + for (String lib : getLibraries()) { + System.loadLibrary(lib); + } + } + + /** + * This method is called by SDL before starting the native application thread. + * It can be overridden to provide the arguments after the application name. + * The default implementation returns an empty array. It never returns null. + * @return arguments for the native application. + */ + protected String[] getArguments() { + return new String[0]; + } + + public static void initialize() { + // The static nature of the singleton and Android quirkyness force us to initialize everything here + // Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values + mSingleton = null; + mSurface = null; + mWebView = null; + mTextEdit = null; + mLayout = null; + mJoystickHandler = null; + mSDLThread = null; + mAudioTrack = null; + mExitCalledFromJava = false; + mBrokenLibraries = false; + mIsPaused = false; + mIsSurfaceReady = false; + mHasFocus = true; + } + + // Setup + @Override + protected void onCreate(Bundle savedInstanceState) { + Log.v("SDL", "Device: " + android.os.Build.DEVICE); + Log.v("SDL", "Model: " + android.os.Build.MODEL); + Log.v("SDL", "onCreate():" + mSingleton); + super.onCreate(savedInstanceState); + + SDLActivity.initialize(); + // So we can call stuff from static callbacks + mSingleton = this; + + // Load shared libraries + String errorMsgBrokenLib = ""; + try { + loadLibraries(); + } catch(UnsatisfiedLinkError e) { + System.err.println(e.getMessage()); + mBrokenLibraries = true; + errorMsgBrokenLib = e.getMessage(); + } catch(Exception e) { + System.err.println(e.getMessage()); + mBrokenLibraries = true; + errorMsgBrokenLib = e.getMessage(); + } + + if (mBrokenLibraries) + { + AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); + dlgAlert.setMessage("An error occurred while trying to start the application. Please try again and/or reinstall." + + System.getProperty("line.separator") + + System.getProperty("line.separator") + + "Error: " + errorMsgBrokenLib); + dlgAlert.setTitle("SDL Error"); + dlgAlert.setPositiveButton("Exit", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog,int id) { + // if this button is clicked, close current activity + SDLActivity.mSingleton.finish(); + } + }); + dlgAlert.setCancelable(false); + dlgAlert.create().show(); + + return; + } + + // Set up the surface + mSurface = new SDLSurface(getApplication()); + mWebView = new WebView(this); + mWebView.getSettings().setJavaScriptEnabled(true); + // mWebView.loadUrl("http://localhost:5000"); + mWebView.loadUrl("file:///data/data/net.inclem.flasktest/files/load.html"); + // mWebView.loadUrl("file:///"+getFilesDir()+"/"+fileName) + + if(Build.VERSION.SDK_INT >= 12) { + mJoystickHandler = new SDLJoystickHandler_API12(); + } + else { + mJoystickHandler = new SDLJoystickHandler(); + } + + mWebView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + mWebView.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + view.loadUrl(url); + return false; + } + }); + + mLayout = new AbsoluteLayout(this); + mLayout.addView(mSurface); + mLayout.addView(mWebView); + + setContentView(mLayout); + } + + // Events + @Override + protected void onPause() { + Log.v("SDL", "onPause()"); + super.onPause(); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.handlePause(); + } + + @Override + protected void onResume() { + Log.v("SDL", "onResume()"); + super.onResume(); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.handleResume(); + } + + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + Log.v("SDL", "onWindowFocusChanged(): " + hasFocus); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.mHasFocus = hasFocus; + if (hasFocus) { + SDLActivity.handleResume(); + } + } + + @Override + public void onLowMemory() { + Log.v("SDL", "onLowMemory()"); + super.onLowMemory(); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.nativeLowMemory(); + } + + @Override + protected void onDestroy() { + Log.v("SDL", "onDestroy()"); + + if (SDLActivity.mBrokenLibraries) { + super.onDestroy(); + // Reset everything in case the user re opens the app + SDLActivity.initialize(); + return; + } + + // Send a quit message to the application + SDLActivity.mExitCalledFromJava = true; + SDLActivity.nativeQuit(); + + // Now wait for the SDL thread to quit + if (SDLActivity.mSDLThread != null) { + try { + SDLActivity.mSDLThread.join(); + } catch(Exception e) { + Log.v("SDL", "Problem stopping thread: " + e); + } + SDLActivity.mSDLThread = null; + + //Log.v("SDL", "Finished waiting for SDL thread"); + } + + super.onDestroy(); + // Reset everything in case the user re opens the app + SDLActivity.initialize(); + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + + if (SDLActivity.mBrokenLibraries) { + return false; + } + + int keyCode = event.getKeyCode(); + // Ignore certain special keys so they're handled by Android + if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || + keyCode == KeyEvent.KEYCODE_VOLUME_UP || + keyCode == KeyEvent.KEYCODE_CAMERA || + keyCode == 168 || /* API 11: KeyEvent.KEYCODE_ZOOM_IN */ + keyCode == 169 /* API 11: KeyEvent.KEYCODE_ZOOM_OUT */ + ) { + return false; + } + return super.dispatchKeyEvent(event); + } + + /** Called by onPause or surfaceDestroyed. Even if surfaceDestroyed + * is the first to be called, mIsSurfaceReady should still be set + * to 'true' during the call to onPause (in a usual scenario). + */ + public static void handlePause() { + if (!SDLActivity.mIsPaused && SDLActivity.mIsSurfaceReady) { + SDLActivity.mIsPaused = true; + SDLActivity.nativePause(); + mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, false); + } + } + + /** Called by onResume or surfaceCreated. An actual resume should be done only when the surface is ready. + * Note: Some Android variants may send multiple surfaceChanged events, so we don't need to resume + * every time we get one of those events, only if it comes after surfaceDestroyed + */ + public static void handleResume() { + if (SDLActivity.mIsPaused && SDLActivity.mIsSurfaceReady && SDLActivity.mHasFocus) { + SDLActivity.mIsPaused = false; + SDLActivity.nativeResume(); + mSurface.handleResume(); + mWebView.loadUrl("http://localhost:5000"); + } + } + + /* The native thread has finished */ + public static void handleNativeExit() { + SDLActivity.mSDLThread = null; + mSingleton.finish(); + } + + + // Messages from the SDLMain thread + static final int COMMAND_CHANGE_TITLE = 1; + static final int COMMAND_UNUSED = 2; + static final int COMMAND_TEXTEDIT_HIDE = 3; + static final int COMMAND_SET_KEEP_SCREEN_ON = 5; + + protected static final int COMMAND_USER = 0x8000; + + /** + * This method is called by SDL if SDL did not handle a message itself. + * This happens if a received message contains an unsupported command. + * Method can be overwritten to handle Messages in a different class. + * @param command the command of the message. + * @param param the parameter of the message. May be null. + * @return if the message was handled in overridden method. + */ + protected boolean onUnhandledMessage(int command, Object param) { + return false; + } + + /** + * A Handler class for Messages from native SDL applications. + * It uses current Activities as target (e.g. for the title). + * static to prevent implicit references to enclosing object. + */ + protected static class SDLCommandHandler extends Handler { + @Override + public void handleMessage(Message msg) { + Context context = getContext(); + if (context == null) { + Log.e(TAG, "error handling message, getContext() returned null"); + return; + } + switch (msg.arg1) { + case COMMAND_CHANGE_TITLE: + if (context instanceof Activity) { + ((Activity) context).setTitle((String)msg.obj); + } else { + Log.e(TAG, "error handling message, getContext() returned no Activity"); + } + break; + case COMMAND_TEXTEDIT_HIDE: + if (mTextEdit != null) { + mTextEdit.setVisibility(View.GONE); + + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0); + } + break; + case COMMAND_SET_KEEP_SCREEN_ON: + { + Window window = ((Activity) context).getWindow(); + if (window != null) { + if ((msg.obj instanceof Integer) && (((Integer) msg.obj).intValue() != 0)) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + break; + } + default: + if ((context instanceof SDLActivity) && !((SDLActivity) context).onUnhandledMessage(msg.arg1, msg.obj)) { + Log.e(TAG, "error handling message, command is " + msg.arg1); + } + } + } + } + + // Handler for the messages + Handler commandHandler = new SDLCommandHandler(); + + // Send a message from the SDLMain thread + boolean sendCommand(int command, Object data) { + Message msg = commandHandler.obtainMessage(); + msg.arg1 = command; + msg.obj = data; + return commandHandler.sendMessage(msg); + } + + // C functions we call + public static native int nativeInit(Object arguments); + public static native void nativeLowMemory(); + public static native void nativeQuit(); + public static native void nativePause(); + public static native void nativeResume(); + public static native void onNativeResize(int x, int y, int format, float rate); + public static native int onNativePadDown(int device_id, int keycode); + public static native int onNativePadUp(int device_id, int keycode); + public static native void onNativeJoy(int device_id, int axis, + float value); + public static native void onNativeHat(int device_id, int hat_id, + int x, int y); + public static native void nativeSetEnv(String j_name, String j_value); + public static native void onNativeKeyDown(int keycode); + public static native void onNativeKeyUp(int keycode); + public static native void onNativeKeyboardFocusLost(); + public static native void onNativeMouse(int button, int action, float x, float y); + public static native void onNativeTouch(int touchDevId, int pointerFingerId, + int action, float x, + float y, float p); + public static native void onNativeAccel(float x, float y, float z); + public static native void onNativeSurfaceChanged(); + public static native void onNativeSurfaceDestroyed(); + public static native void nativeFlipBuffers(); + public static native int nativeAddJoystick(int device_id, String name, + int is_accelerometer, int nbuttons, + int naxes, int nhats, int nballs); + public static native int nativeRemoveJoystick(int device_id); + public static native String nativeGetHint(String name); + + /** + * This method is called by SDL using JNI. + */ + public static void flipBuffers() { + SDLActivity.nativeFlipBuffers(); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean setActivityTitle(String title) { + // Called from SDLMain() thread and can't directly affect the view + return mSingleton.sendCommand(COMMAND_CHANGE_TITLE, title); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean sendMessage(int command, int param) { + return mSingleton.sendCommand(command, Integer.valueOf(param)); + } + + /** + * This method is called by SDL using JNI. + */ + public static Context getContext() { + return mSingleton; + } + + /** + * This method is called by SDL using JNI. + * @return result of getSystemService(name) but executed on UI thread. + */ + public Object getSystemServiceFromUiThread(final String name) { + final Object lock = new Object(); + final Object[] results = new Object[2]; // array for writable variables + synchronized (lock) { + runOnUiThread(new Runnable() { + @Override + public void run() { + synchronized (lock) { + results[0] = getSystemService(name); + results[1] = Boolean.TRUE; + lock.notify(); + } + } + }); + if (results[1] == null) { + try { + lock.wait(); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + } + return results[0]; + } + + static class ShowTextInputTask implements Runnable { + /* + * This is used to regulate the pan&scan method to have some offset from + * the bottom edge of the input region and the top edge of an input + * method (soft keyboard) + */ + static final int HEIGHT_PADDING = 15; + + public int x, y, w, h; + + public ShowTextInputTask(int x, int y, int w, int h) { + this.x = x; + this.y = y; + this.w = w; + this.h = h; + } + + @Override + public void run() { + AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams( + w, h + HEIGHT_PADDING, x, y); + + if (mTextEdit == null) { + mTextEdit = new DummyEdit(getContext()); + + mLayout.addView(mTextEdit, params); + } else { + mTextEdit.setLayoutParams(params); + } + + mTextEdit.setVisibility(View.VISIBLE); + mTextEdit.requestFocus(); + + InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.showSoftInput(mTextEdit, 0); + } + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean showTextInput(int x, int y, int w, int h) { + // Transfer the task to the main thread as a Runnable + return mSingleton.commandHandler.post(new ShowTextInputTask(x, y, w, h)); + } + + /** + * This method is called by SDL using JNI. + */ + public static Surface getNativeSurface() { + return SDLActivity.mSurface.getNativeSurface(); + } + + // Audio + + /** + * This method is called by SDL using JNI. + */ + public static int audioInit(int sampleRate, boolean is16Bit, boolean isStereo, int desiredFrames) { + int channelConfig = isStereo ? AudioFormat.CHANNEL_CONFIGURATION_STEREO : AudioFormat.CHANNEL_CONFIGURATION_MONO; + int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT; + int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1); + + Log.v("SDL", "SDL audio: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + (sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer"); + + // Let the user pick a larger buffer if they really want -- but ye + // gods they probably shouldn't, the minimums are horrifyingly high + // latency already + desiredFrames = Math.max(desiredFrames, (AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize); + + if (mAudioTrack == null) { + mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, + channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM); + + // Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid + // Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java + // Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState() + + if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) { + Log.e("SDL", "Failed during initialization of Audio Track"); + mAudioTrack = null; + return -1; + } + + mAudioTrack.play(); + } + + Log.v("SDL", "SDL audio: got " + ((mAudioTrack.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioTrack.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + (mAudioTrack.getSampleRate() / 1000f) + "kHz, " + desiredFrames + " frames buffer"); + + return 0; + } + + /** + * This method is called by SDL using JNI. + */ + public static void audioWriteShortBuffer(short[] buffer) { + for (int i = 0; i < buffer.length; ) { + int result = mAudioTrack.write(buffer, i, buffer.length - i); + if (result > 0) { + i += result; + } else if (result == 0) { + try { + Thread.sleep(1); + } catch(InterruptedException e) { + // Nom nom + } + } else { + Log.w("SDL", "SDL audio: error return from write(short)"); + return; + } + } + } + + /** + * This method is called by SDL using JNI. + */ + public static void audioWriteByteBuffer(byte[] buffer) { + for (int i = 0; i < buffer.length; ) { + int result = mAudioTrack.write(buffer, i, buffer.length - i); + if (result > 0) { + i += result; + } else if (result == 0) { + try { + Thread.sleep(1); + } catch(InterruptedException e) { + // Nom nom + } + } else { + Log.w("SDL", "SDL audio: error return from write(byte)"); + return; + } + } + } + + /** + * This method is called by SDL using JNI. + */ + public static void audioQuit() { + if (mAudioTrack != null) { + mAudioTrack.stop(); + mAudioTrack = null; + } + } + + // Input + + /** + * This method is called by SDL using JNI. + * @return an array which may be empty but is never null. + */ + public static int[] inputGetInputDeviceIds(int sources) { + int[] ids = InputDevice.getDeviceIds(); + int[] filtered = new int[ids.length]; + int used = 0; + for (int i = 0; i < ids.length; ++i) { + InputDevice device = InputDevice.getDevice(ids[i]); + if ((device != null) && ((device.getSources() & sources) != 0)) { + filtered[used++] = device.getId(); + } + } + return Arrays.copyOf(filtered, used); + } + + // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance + public static boolean handleJoystickMotionEvent(MotionEvent event) { + return mJoystickHandler.handleMotionEvent(event); + } + + /** + * This method is called by SDL using JNI. + */ + public static void pollInputDevices() { + if (SDLActivity.mSDLThread != null) { + mJoystickHandler.pollInputDevices(); + SDLActivity.mSingleton.keepActive(); + } + } + + /** + * Trick needed for loading screen + */ + public void keepActive() { + } + + // APK extension files support + + /** com.android.vending.expansion.zipfile.ZipResourceFile object or null. */ + private Object expansionFile; + + /** com.android.vending.expansion.zipfile.ZipResourceFile's getInputStream() or null. */ + private Method expansionFileMethod; + + /** + * This method is called by SDL using JNI. + */ + public InputStream openAPKExtensionInputStream(String fileName) throws IOException { + // Get a ZipResourceFile representing a merger of both the main and patch files + if (expansionFile == null) { + Integer mainVersion = Integer.valueOf(nativeGetHint("SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION")); + Integer patchVersion = Integer.valueOf(nativeGetHint("SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION")); + + try { + // To avoid direct dependency on Google APK extension library that is + // not a part of Android SDK we access it using reflection + expansionFile = Class.forName("com.android.vending.expansion.zipfile.APKExpansionSupport") + .getMethod("getAPKExpansionZipFile", Context.class, int.class, int.class) + .invoke(null, this, mainVersion, patchVersion); + + expansionFileMethod = expansionFile.getClass() + .getMethod("getInputStream", String.class); + } catch (Exception ex) { + ex.printStackTrace(); + expansionFile = null; + expansionFileMethod = null; + } + } + + // Get an input stream for a known file inside the expansion file ZIPs + InputStream fileStream; + try { + fileStream = (InputStream)expansionFileMethod.invoke(expansionFile, fileName); + } catch (Exception ex) { + ex.printStackTrace(); + fileStream = null; + } + + if (fileStream == null) { + throw new IOException(); + } + + return fileStream; + } + + // Messagebox + + /** Result of current messagebox. Also used for blocking the calling thread. */ + protected final int[] messageboxSelection = new int[1]; + + /** Id of current dialog. */ + protected int dialogs = 0; + + /** + * This method is called by SDL using JNI. + * Shows the messagebox from UI thread and block calling thread. + * buttonFlags, buttonIds and buttonTexts must have same length. + * @param buttonFlags array containing flags for every button. + * @param buttonIds array containing id for every button. + * @param buttonTexts array containing text for every button. + * @param colors null for default or array of length 5 containing colors. + * @return button id or -1. + */ + public int messageboxShowMessageBox( + final int flags, + final String title, + final String message, + final int[] buttonFlags, + final int[] buttonIds, + final String[] buttonTexts, + final int[] colors) { + + messageboxSelection[0] = -1; + + // sanity checks + + if ((buttonFlags.length != buttonIds.length) && (buttonIds.length != buttonTexts.length)) { + return -1; // implementation broken + } + + // collect arguments for Dialog + + final Bundle args = new Bundle(); + args.putInt("flags", flags); + args.putString("title", title); + args.putString("message", message); + args.putIntArray("buttonFlags", buttonFlags); + args.putIntArray("buttonIds", buttonIds); + args.putStringArray("buttonTexts", buttonTexts); + args.putIntArray("colors", colors); + + // trigger Dialog creation on UI thread + + runOnUiThread(new Runnable() { + @Override + public void run() { + showDialog(dialogs++, args); + } + }); + + // block the calling thread + + synchronized (messageboxSelection) { + try { + messageboxSelection.wait(); + } catch (InterruptedException ex) { + ex.printStackTrace(); + return -1; + } + } + + // return selected value + + return messageboxSelection[0]; + } + + @Override + protected Dialog onCreateDialog(int ignore, Bundle args) { + + // TODO set values from "flags" to messagebox dialog + + // get colors + + int[] colors = args.getIntArray("colors"); + int backgroundColor; + int textColor; + int buttonBorderColor; + int buttonBackgroundColor; + int buttonSelectedColor; + if (colors != null) { + int i = -1; + backgroundColor = colors[++i]; + textColor = colors[++i]; + buttonBorderColor = colors[++i]; + buttonBackgroundColor = colors[++i]; + buttonSelectedColor = colors[++i]; + } else { + backgroundColor = Color.TRANSPARENT; + textColor = Color.TRANSPARENT; + buttonBorderColor = Color.TRANSPARENT; + buttonBackgroundColor = Color.TRANSPARENT; + buttonSelectedColor = Color.TRANSPARENT; + } + + // create dialog with title and a listener to wake up calling thread + + final Dialog dialog = new Dialog(this); + dialog.setTitle(args.getString("title")); + dialog.setCancelable(false); + dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface unused) { + synchronized (messageboxSelection) { + messageboxSelection.notify(); + } + } + }); + + // create text + + TextView message = new TextView(this); + message.setGravity(Gravity.CENTER); + message.setText(args.getString("message")); + if (textColor != Color.TRANSPARENT) { + message.setTextColor(textColor); + } + + // create buttons + + int[] buttonFlags = args.getIntArray("buttonFlags"); + int[] buttonIds = args.getIntArray("buttonIds"); + String[] buttonTexts = args.getStringArray("buttonTexts"); + + final SparseArray + + + + + {% endblock %} From 38b097035bf66422cae1515e98ceda77f22312e9 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sun, 1 May 2016 15:30:29 +0100 Subject: [PATCH 18/30] Added orientation buttons to flask testapp --- testapps/testapp_flask/main.py | 35 ++++++++++++++------- testapps/testapp_flask/templates/index.html | 30 ++++++++++++++---- 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/testapps/testapp_flask/main.py b/testapps/testapp_flask/main.py index 92d15ddd32..cf0c69c83f 100644 --- a/testapps/testapp_flask/main.py +++ b/testapps/testapp_flask/main.py @@ -33,7 +33,15 @@ print('imported flask etc') print('importing pyjnius') + from jnius import autoclass +Context = autoclass('android.content.Context') +PythonActivity = autoclass('org.kivy.android.PythonActivity') +activity = PythonActivity.mActivity + +vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE) + +ActivityInfo = autoclass('android.content.pm.ActivityInfo') @app.route('/') def page1(): @@ -50,20 +58,25 @@ def vibrate(): print('ERROR: asked to vibrate but without time argument') print('asked to vibrate', args['time']) - from jnius import autoclass - print('imported autoclass') - Context = autoclass('android.content.Context') - print('autoclassed context') - PythonActivity = autoclass('org.kivy.android.PythonActivity') - print('autoclassed pythonactivity') - activity = PythonActivity.mActivity - print('got activity') - vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE) - print('got vibrator') - vibrator.vibrate(float(args['time']) * 1000) print('vibrated') +@app.route('/orientation') +def orientation(): + args = request.args + if 'dir' not in args: + print('ERROR: asked to orient but no dir specified') + direction = args['dir'] + if direction not in ('horizontal', 'vertical'): + print('ERROR: asked to orient to neither horizontal nor vertical') + + if direction == 'horizontal': + activity.setRequestedOrientation( + ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) + else: + activity.setRequestedOrientation( + ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) + from os import curdir from os.path import realpath diff --git a/testapps/testapp_flask/templates/index.html b/testapps/testapp_flask/templates/index.html index 6a05d3a048..08750f6154 100644 --- a/testapps/testapp_flask/templates/index.html +++ b/testapps/testapp_flask/templates/index.html @@ -12,20 +12,38 @@

    Page one

    - + + + + + + {% endblock %} From 33be3be46ff8072765d83b085aa53af2e5a83cc5 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sun, 1 May 2016 17:10:53 +0100 Subject: [PATCH 19/30] Removed sdl2 images from webview --- .../build/res/drawable-hdpi/ic_launcher.png | Bin 2683 -> 0 bytes .../build/res/drawable-mdpi/ic_launcher.png | Bin 1698 -> 0 bytes .../build/res/drawable-xhdpi/ic_launcher.png | Bin 3872 -> 0 bytes .../build/res/drawable-xxhdpi/ic_launcher.png | Bin 6874 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-hdpi/ic_launcher.png delete mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-mdpi/ic_launcher.png delete mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-xhdpi/ic_launcher.png delete mode 100644 pythonforandroid/bootstraps/webview/build/res/drawable-xxhdpi/ic_launcher.png diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable-hdpi/ic_launcher.png b/pythonforandroid/bootstraps/webview/build/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index d50bdaae06ee5a8d3f39911f81715abd3bf7b24d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2683 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 diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable-mdpi/ic_launcher.png b/pythonforandroid/bootstraps/webview/build/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 0a299eb3cc0273ad1fc260cf0b4a2c35f5d373f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1698 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 diff --git a/pythonforandroid/bootstraps/webview/build/res/drawable-xxhdpi/ic_launcher.png b/pythonforandroid/bootstraps/webview/build/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index d423dac2624cf0b5dc90821a15362bc29e5a1e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6874 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 From 91fee21e2ca2865d3dbac3980407f7621156779e Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sun, 1 May 2016 23:02:15 +0100 Subject: [PATCH 20/30] Changed flask version to 0.10.1 --- pythonforandroid/recipes/flask/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pythonforandroid/recipes/flask/__init__.py b/pythonforandroid/recipes/flask/__init__.py index 5ba5425702..d1cf069017 100644 --- a/pythonforandroid/recipes/flask/__init__.py +++ b/pythonforandroid/recipes/flask/__init__.py @@ -4,7 +4,9 @@ class FlaskRecipe(PythonRecipe): - version = 'master' + version = '0.10.1' # The webserver of 'master' seems to fail + # after a little while on Android, so use + # 0.10.1 at least for now url = 'https://github.com/pallets/flask/archive/{version}.zip' depends = [('python2', 'python3'), 'setuptools'] From 331b6b688374faa6d7b49b1c8fcef17dcc87af49 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Fri, 6 May 2016 21:53:09 +0100 Subject: [PATCH 21/30] Added pyjnius code for webview bootstrap --- .../webview/build/jni/src/Android.mk | 2 +- .../webview/build/jni/src/pyjniusjni.c | 103 ++++++++++++++++++ .../src/org/kivy/android/WebViewLoader.java | 67 ++++++++++++ 3 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c create mode 100644 pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java diff --git a/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk b/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk index 6b8fb71eda..b431059f12 100644 --- a/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk +++ b/pythonforandroid/bootstraps/webview/build/jni/src/Android.mk @@ -7,7 +7,7 @@ LOCAL_MODULE := main # LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include # Add your application source files here... -LOCAL_SRC_FILES := start.c +LOCAL_SRC_FILES := start.c pyjniusjni.c LOCAL_CFLAGS += -I$(LOCAL_PATH)/../../../../other_builds/$(PYTHON2_NAME)/$(ARCH)/python2/python-install/include/python2.7 $(EXTRA_CFLAGS) diff --git a/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c b/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c new file mode 100644 index 0000000000..c5936edb1c --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c @@ -0,0 +1,103 @@ + +#include +#include + +#define LOGI(...) do {} while (0) +#define LOGE(...) do {} while (0) + +#include "android/log.h" + +/* These JNI management functions are taken from SDL2 */ + +/* #define LOG(n, x) __android_log_write(ANDROID_LOG_INFO, (n), (x)) */ +/* #define LOGP(x) LOG("python", (x)) */ +#define LOG_TAG "Python_android" +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) + + +/* Function headers */ +JNIEnv* Android_JNI_GetEnv(void); +static void Android_JNI_ThreadDestroyed(void*); + +static pthread_key_t mThreadKey; +static JavaVM* mJavaVM; + +int Android_JNI_SetupThread(void) +{ + Android_JNI_GetEnv(); + return 1; +} + +/* Library init */ +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) +{ + JNIEnv *env; + mJavaVM = vm; + LOGI("JNI_OnLoad called"); + if ((*mJavaVM)->GetEnv(mJavaVM, (void**) &env, JNI_VERSION_1_4) != JNI_OK) { + LOGE("Failed to get the environment using GetEnv()"); + return -1; + } + /* + * Create mThreadKey so we can keep track of the JNIEnv assigned to each thread + * Refer to http://developer.android.com/guide/practices/design/jni.html for the rationale behind this + */ + if (pthread_key_create(&mThreadKey, Android_JNI_ThreadDestroyed) != 0) { + + __android_log_print(ANDROID_LOG_ERROR, "SDL", "Error initializing pthread key"); + } + Android_JNI_SetupThread(); + + return JNI_VERSION_1_4; +} + +JNIEnv* Android_JNI_GetEnv(void) +{ + /* From http://developer.android.com/guide/practices/jni.html + * All threads are Linux threads, scheduled by the kernel. + * They're usually started from managed code (using Thread.start), but they can also be created elsewhere and then + * attached to the JavaVM. For example, a thread started with pthread_create can be attached with the + * JNI AttachCurrentThread or AttachCurrentThreadAsDaemon functions. Until a thread is attached, it has no JNIEnv, + * and cannot make JNI calls. + * Attaching a natively-created thread causes a java.lang.Thread object to be constructed and added to the "main" + * ThreadGroup, making it visible to the debugger. Calling AttachCurrentThread on an already-attached thread + * is a no-op. + * Note: You can call this function any number of times for the same thread, there's no harm in it + */ + + JNIEnv *env; + int status = (*mJavaVM)->AttachCurrentThread(mJavaVM, &env, NULL); + if(status < 0) { + LOGE("failed to attach current thread"); + return 0; + } + + /* From http://developer.android.com/guide/practices/jni.html + * Threads attached through JNI must call DetachCurrentThread before they exit. If coding this directly is awkward, + * in Android 2.0 (Eclair) and higher you can use pthread_key_create to define a destructor function that will be + * called before the thread exits, and call DetachCurrentThread from there. (Use that key with pthread_setspecific + * to store the JNIEnv in thread-local-storage; that way it'll be passed into your destructor as the argument.) + * Note: The destructor is not called unless the stored value is != NULL + * Note: You can call this function any number of times for the same thread, there's no harm in it + * (except for some lost CPU cycles) + */ + pthread_setspecific(mThreadKey, (void*) env); + + return env; +} + +static void Android_JNI_ThreadDestroyed(void* value) +{ + /* The thread is being destroyed, detach it from the Java VM and set the mThreadKey value to NULL as required */ + JNIEnv *env = (JNIEnv*) value; + if (env != NULL) { + (*mJavaVM)->DetachCurrentThread(mJavaVM); + pthread_setspecific(mThreadKey, NULL); + } +} + +void *SDL_AndroidGetJNIEnv() +{ + return Android_JNI_GetEnv(); +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java new file mode 100644 index 0000000000..742029fbdd --- /dev/null +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java @@ -0,0 +1,67 @@ +package org.kivy.android; + +import android.util.Log; + +import java.io.IOException; +import java.net.Socket; +import java.net.InetSocketAddress; + +import android.os.SystemClock; + +import android.os.Handler; + +import org.kivy.android.PythonActivity; + +public class WebViewLoader { + private static final String TAG = "WebViewLoader"; + + public static void testConnection() { + + while (true) { + if (WebViewLoader.pingHost("localhost", 5000, 100)) { + Log.v(TAG, "successfully pinged localhost"); + // PythonActivity.mWebView.loadUrl("http://localhost:5000"); + // PythonActivity.mWebView.loadUrl("http://www.google.com"); + + Handler mainHandler = new Handler(PythonActivity.mActivity.getMainLooper()); + + Runnable myRunnable = new Runnable() { + @Override + public void run() { + // PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:5000/"); + // PythonActivity.mActivity.mWebView.loadUrl("http://www.google.com"); + PythonActivity.mActivity.mWebView.loadUrl("file:///" + PythonActivity.mActivity.getFilesDir().getAbsolutePath() + "/load_immediate.html"); + // PythonActivity.mActivity.mWebView.loadUrl("file:///" + PythonActivity.mActivity.getFilesDir().getAbsolutePath() + "/_load2.html"); + Log.v(TAG, "did webview load!"); + } + // public void run() {PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:5000");} + }; + mainHandler.post(myRunnable); + break; + + } else { + Log.v(TAG, "could not ping localhost"); + try { + Thread.sleep(100); + } catch(InterruptedException e) { + Log.v(TAG, "InterruptedException occurred when sleeping"); + } + } + } + + Log.v(TAG, "testConnection finished"); + + } + + public static boolean pingHost(String host, int port, int timeout) { + Socket socket = new Socket(); + try { + socket.connect(new InetSocketAddress(host, port), timeout); + return true; + } catch (IOException e) { + return false; // Either timeout or unreachable or failed DNS lookup. + } + } +} + + From fa8c37141b8f91ba2e30473e434a35ff6d7307b0 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:08:51 +0100 Subject: [PATCH 22/30] Added java loader for python webserver --- .../src/org/kivy/android/PythonActivity.java | 26 ++++++++++++++++--- .../src/org/kivy/android/WebViewLoader.java | 17 +++++------- .../webview/build/webview_includes/_load.html | 2 +- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java index d3484b127d..414b3d1e88 100644 --- a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java @@ -1,6 +1,11 @@ package org.kivy.android; +import java.net.Socket; +import java.net.InetSocketAddress; + +import android.os.SystemClock; + import java.io.InputStream; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -42,10 +47,11 @@ import org.kivy.android.PythonUtil; +import org.kivy.android.WebViewLoader; + import org.renpy.android.ResourceManager; import org.renpy.android.AssetExtract; - public class PythonActivity extends Activity { // This activity is modified from a mixture of the SDLActivity and // PythonActivity in the SDL2 bootstrap, but removing all the SDL2 @@ -130,7 +136,9 @@ public void onClick(DialogInterface dialog,int id) { // Set up the webview mWebView = new WebView(this); mWebView.getSettings().setJavaScriptEnabled(true); + mWebView.getSettings().setDomStorageEnabled(true); mWebView.loadUrl("file:///" + mActivity.getFilesDir().getAbsolutePath() + "/_load.html"); + // mWebView.loadUrl("http://localhost:5000/"); mWebView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); mWebView.setWebViewClient(new WebViewClient() { @@ -154,7 +162,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { PythonActivity.nativeSetEnv("ANDROID_ENTRYPOINT", "main.pyo"); PythonActivity.nativeSetEnv("PYTHONHOME", mFilesDirectory); PythonActivity.nativeSetEnv("PYTHONPATH", mFilesDirectory + ":" + mFilesDirectory + "/lib"); - + try { Log.v(TAG, "Access to our meta-data..."); this.mMetaData = this.mActivity.getPackageManager().getApplicationInfo( @@ -170,9 +178,12 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { final Thread pythonThread = new Thread(new PythonMain(), "PythonThread"); PythonActivity.mPythonThread = pythonThread; pythonThread.start(); - - } + final Thread wvThread = new Thread(new TestMain(), "WvThread"); + wvThread.start(); + + } + public void loadLibraries() { PythonUtil.loadLibraries(getFilesDir()); } @@ -374,3 +385,10 @@ public void run() { PythonActivity.nativeInit(new String[0]); } } + +class TestMain implements Runnable { + @Override + public void run() { + WebViewLoader.testConnection(); + } +} diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java index 742029fbdd..9c9deee05b 100644 --- a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java @@ -19,28 +19,21 @@ public static void testConnection() { while (true) { if (WebViewLoader.pingHost("localhost", 5000, 100)) { - Log.v(TAG, "successfully pinged localhost"); - // PythonActivity.mWebView.loadUrl("http://localhost:5000"); - // PythonActivity.mWebView.loadUrl("http://www.google.com"); - + Log.v(TAG, "Cuccessfully pinged localhost:5000"); Handler mainHandler = new Handler(PythonActivity.mActivity.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { - // PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:5000/"); - // PythonActivity.mActivity.mWebView.loadUrl("http://www.google.com"); - PythonActivity.mActivity.mWebView.loadUrl("file:///" + PythonActivity.mActivity.getFilesDir().getAbsolutePath() + "/load_immediate.html"); - // PythonActivity.mActivity.mWebView.loadUrl("file:///" + PythonActivity.mActivity.getFilesDir().getAbsolutePath() + "/_load2.html"); - Log.v(TAG, "did webview load!"); + PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:5000/"); + Log.v(TAG, "Loaded webserver in webview"); } - // public void run() {PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:5000");} }; mainHandler.post(myRunnable); break; } else { - Log.v(TAG, "could not ping localhost"); + Log.v(TAG, "Could not ping localhost:5000"); try { Thread.sleep(100); } catch(InterruptedException e) { @@ -57,8 +50,10 @@ public static boolean pingHost(String host, int port, int timeout) { Socket socket = new Socket(); try { socket.connect(new InetSocketAddress(host, port), timeout); + socket.close(); return true; } catch (IOException e) { + try {socket.close();} catch (IOException f) {return false;} return false; // Either timeout or unreachable or failed DNS lookup. } } diff --git a/pythonforandroid/bootstraps/webview/build/webview_includes/_load.html b/pythonforandroid/bootstraps/webview/build/webview_includes/_load.html index a5c0b461e2..fbbeda0617 100644 --- a/pythonforandroid/bootstraps/webview/build/webview_includes/_load.html +++ b/pythonforandroid/bootstraps/webview/build/webview_includes/_load.html @@ -52,7 +52,7 @@ } /* window.setInterval(queryFlask, 500); */ - window.setTimeout(function() {location.replace('http://127.0.0.1:5000/')}, 1000) + /* window.setTimeout(function() {location.replace('http://127.0.0.1:5000/')}, 1000) */ From 63c46520e7dfc349a0cc480bae17af9482bbc4b0 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:09:50 +0100 Subject: [PATCH 23/30] Removed load.html from flask testapp --- testapps/testapp_flask/load.html | 63 -------------------------------- 1 file changed, 63 deletions(-) delete mode 100644 testapps/testapp_flask/load.html diff --git a/testapps/testapp_flask/load.html b/testapps/testapp_flask/load.html deleted file mode 100644 index fe00b8597a..0000000000 --- a/testapps/testapp_flask/load.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - Delayed loader - - - - - - -

    - Delayed loader -

    - -
    -
    Loading...
    -
    - -
    -
    - - - - - - From 17e6f45f5809bdf42d91448a706544999b6f0e5f Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:21:46 +0100 Subject: [PATCH 24/30] Moved WebViewLoader to template to set port --- .../WebViewLoader.tmpl.java} | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) rename pythonforandroid/bootstraps/webview/build/{src/org/kivy/android/WebViewLoader.java => templates/WebViewLoader.tmpl.java} (84%) diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java b/pythonforandroid/bootstraps/webview/build/templates/WebViewLoader.tmpl.java similarity index 84% rename from pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java rename to pythonforandroid/bootstraps/webview/build/templates/WebViewLoader.tmpl.java index 9c9deee05b..df6578bdee 100644 --- a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/WebViewLoader.java +++ b/pythonforandroid/bootstraps/webview/build/templates/WebViewLoader.tmpl.java @@ -18,14 +18,14 @@ public class WebViewLoader { public static void testConnection() { while (true) { - if (WebViewLoader.pingHost("localhost", 5000, 100)) { - Log.v(TAG, "Cuccessfully pinged localhost:5000"); + if (WebViewLoader.pingHost("localhost", {{ args.port }}, 100)) { + Log.v(TAG, "Successfully pinged localhost:{{ args.port }}"); Handler mainHandler = new Handler(PythonActivity.mActivity.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { - PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:5000/"); + PythonActivity.mActivity.mWebView.loadUrl("http://127.0.0.1:{{ args.port }}/"); Log.v(TAG, "Loaded webserver in webview"); } }; @@ -33,7 +33,7 @@ public void run() { break; } else { - Log.v(TAG, "Could not ping localhost:5000"); + Log.v(TAG, "Could not ping localhost:{{ args.port }}"); try { Thread.sleep(100); } catch(InterruptedException e) { @@ -41,9 +41,6 @@ public void run() { } } } - - Log.v(TAG, "testConnection finished"); - } public static boolean pingHost(String host, int port, int timeout) { From 4973f8b1dc6b64d23ff1ec61a7d6ecf4247d946f Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:27:01 +0100 Subject: [PATCH 25/30] Changed webview pyjnius patch function names --- .../bootstraps/webview/build/jni/src/pyjniusjni.c | 6 +++--- .../recipes/pyjnius/webviewjni_jnienv_getter.patch | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c b/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c index c5936edb1c..d67972a4db 100644 --- a/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c +++ b/pythonforandroid/bootstraps/webview/build/jni/src/pyjniusjni.c @@ -7,7 +7,7 @@ #include "android/log.h" -/* These JNI management functions are taken from SDL2 */ +/* These JNI management functions are taken from SDL2, but modified to refer to pyjnius */ /* #define LOG(n, x) __android_log_write(ANDROID_LOG_INFO, (n), (x)) */ /* #define LOGP(x) LOG("python", (x)) */ @@ -45,7 +45,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) */ if (pthread_key_create(&mThreadKey, Android_JNI_ThreadDestroyed) != 0) { - __android_log_print(ANDROID_LOG_ERROR, "SDL", "Error initializing pthread key"); + __android_log_print(ANDROID_LOG_ERROR, "pyjniusjni", "Error initializing pthread key"); } Android_JNI_SetupThread(); @@ -97,7 +97,7 @@ static void Android_JNI_ThreadDestroyed(void* value) } } -void *SDL_AndroidGetJNIEnv() +void *WebView_AndroidGetJNIEnv() { return Android_JNI_GetEnv(); } diff --git a/pythonforandroid/recipes/pyjnius/webviewjni_jnienv_getter.patch b/pythonforandroid/recipes/pyjnius/webviewjni_jnienv_getter.patch index a6ec67c26d..50c62cb395 100644 --- a/pythonforandroid/recipes/pyjnius/webviewjni_jnienv_getter.patch +++ b/pythonforandroid/recipes/pyjnius/webviewjni_jnienv_getter.patch @@ -5,11 +5,11 @@ index ac89fec..71daa43 100644 @@ -1,5 +1,5 @@ # on android, rely on SDL to get the JNI env -cdef extern JNIEnv *SDL_ANDROID_GetJNIEnv() -+cdef extern JNIEnv *SDL_AndroidGetJNIEnv() ++cdef extern JNIEnv *WebView_AndroidGetJNIEnv() cdef JNIEnv *get_platform_jnienv(): - return SDL_ANDROID_GetJNIEnv() -+ return SDL_AndroidGetJNIEnv() ++ return WebView_AndroidGetJNIEnv() diff --git a/setup.py b/setup.py index 740510f..0c8e55f 100644 --- a/setup.py From ee24ac45159db7fd8845f1dccc9a1a7b034680f9 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:27:53 +0100 Subject: [PATCH 26/30] Added INTERNET permission for webview by default --- .../bootstraps/webview/build/templates/AndroidManifest.tmpl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml b/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml index 649c0e3b50..079638e0e9 100644 --- a/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml +++ b/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml @@ -19,7 +19,7 @@ - + {% for perm in args.permissions %} {% if '.' in perm %} From ea20745b562fea68a4357954d1a57d4d55385154 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:28:10 +0100 Subject: [PATCH 27/30] Added --port option for webview bootstrap --- pythonforandroid/bootstraps/webview/build/build.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pythonforandroid/bootstraps/webview/build/build.py b/pythonforandroid/bootstraps/webview/build/build.py index 8ba7aef057..20101863c1 100755 --- a/pythonforandroid/bootstraps/webview/build/build.py +++ b/pythonforandroid/bootstraps/webview/build/build.py @@ -351,6 +351,10 @@ def make_package(args): 'custom_rules.xml', args=args) + render('WebViewLoader.tmpl.java', + 'src/org/kivy/android/WebViewLoader.java', + args=args) + with open(join(dirname(__file__), 'res', 'values', 'strings.xml')) as fileh: lines = fileh.read() @@ -444,6 +448,8 @@ def parse_args(args=None): 'NAME:PATH_TO_PY[:foreground]') ap.add_argument('--add-source', dest='extra_source_dirs', action='append', help='Include additional source dirs in Java build') + ap.add_argument('--port', help='The port on localhost that the WebView will access', + default='5000') if args is None: args = sys.argv[1:] From 7df9f4493c25ea8cf52638f58f1046c000e66493 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 00:46:31 +0100 Subject: [PATCH 28/30] Documented --port option for webview bootstrap --- doc/source/buildoptions.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/source/buildoptions.rst b/doc/source/buildoptions.rst index 9b90963e1f..8eeefce3c0 100644 --- a/doc/source/buildoptions.rst +++ b/doc/source/buildoptions.rst @@ -105,6 +105,13 @@ instance, your Python code can start a webserver with a Flask application, and your app will display and allow the user to navigate this website. +This bootstrap will automatically try to load a website on port 5000 +(the default for Flask), or you can specify a different option with +the `--port` command line option. If the webserver is not immediately +present (e.g. during the short Python loading time when first +started), it will instead display a loading screen until the server is +ready. + pygame ~~~~~~ From 0eb8f1b35e4ccc8d10fc80cc92e8266217ba9986 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 01:29:18 +0100 Subject: [PATCH 29/30] Reworded webview doc --- doc/source/buildoptions.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/buildoptions.rst b/doc/source/buildoptions.rst index 8eeefce3c0..92816d5197 100644 --- a/doc/source/buildoptions.rst +++ b/doc/source/buildoptions.rst @@ -100,8 +100,8 @@ You can use this with ``--bootstrap=webview``, or simply include the ``webviewjni`` recipe in your ``--requirements``. The webview bootstrap gui is, per the name, a WebView displaying a -webpage, but this page is hosted on the device with Python. For -instance, your Python code can start a webserver with a Flask +webpage, but this page is hosted on the device via a Python +webserver. For instance, your Python code can start a Flask application, and your app will display and allow the user to navigate this website. From 64ba407b17e67d90e371cc6fab525044aad9a304 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Sat, 7 May 2016 17:34:27 +0100 Subject: [PATCH 30/30] Slightly refactored webview java code --- .../webview/build/src/org/kivy/android/PythonActivity.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java index 414b3d1e88..ba00ab36f2 100644 --- a/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java +++ b/pythonforandroid/bootstraps/webview/build/src/org/kivy/android/PythonActivity.java @@ -138,7 +138,6 @@ public void onClick(DialogInterface dialog,int id) { mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.loadUrl("file:///" + mActivity.getFilesDir().getAbsolutePath() + "/_load.html"); - // mWebView.loadUrl("http://localhost:5000/"); mWebView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); mWebView.setWebViewClient(new WebViewClient() { @@ -179,7 +178,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { PythonActivity.mPythonThread = pythonThread; pythonThread.start(); - final Thread wvThread = new Thread(new TestMain(), "WvThread"); + final Thread wvThread = new Thread(new WebViewLoaderMain(), "WvThread"); wvThread.start(); } @@ -386,7 +385,7 @@ public void run() { } } -class TestMain implements Runnable { +class WebViewLoaderMain implements Runnable { @Override public void run() { WebViewLoader.testConnection();

    |CNXltyqP{S75UhymB zQNGh_Uc?ODuznj(s?g?d#?cbVZ&mYSNn#Dsmh*{hA zasSz^%~1xhy87k=mv*DH7D&rElYUGYmOau{1FBT_U1JaZ&)@6o^PR0T(Zq;cA)9HV z2-JccrsUH$Zc9#(_d>rm(4#x`YO9Z_+U|c$QJ0E>k?1{MC~e(ErDjQGD>1_&vJi4Y z`ut90=eqSEl52oG+w^6CNnBRX(z@kE&gWLJh|DYD5)XmM7O^mrhjU|>F@$|G#jMX4 zo!(7QZ}&Ca);xAg@!dF9*@2K*L1mlt&JR~sv?;i__-rZIk-EK1ADzL%?q^Ef=VSUb z)G)!4z7F?c5i?c!Jz+c{LnoX0eQuwAebj(OvUJ<_u`Zlc)a3+yVPfEAR6A)+s1(le z`%EeyjAtf>YbL5uUeQtR{iPBl#RL z(pma^7?mpCq-85(mfuTS zaAgZ@IMXQeY&g-?C!vuHmOz?&8FD<11whOaAf87?b>V1&0V3Ilx$ySaH7Y%Ol#oRE zrX;2Qq~Ak-tYS zKEJBnXE?eKGcE0b6b*SCdIDLdsasCDcW^QYKPpqARpKd6+Ru2D^Xv+p;UFN�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Ξ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 yZQ9MlmZ6?W??v4 + + + + + + + {% block title %} + Flask on Android + {% endblock %} + + + + + + +