Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android support for gestalt-module and gestalt-asset-core #68

Open
wants to merge 31 commits into
base: develop
from

Conversation

Projects
None yet
1 participant
@immortius
Copy link
Member

immortius commented Feb 16, 2019

Currently gestalt-entity-system is cut out.

immortius added some commits Dec 28, 2018

Modernised and simplified gradle build.
Added android testbed project.
Initial changes to gestalt-util to run under android.
Changed min api version to 24 to support Optional (for now at least)
Updated gradle for gestalt-module and its test modules.
Some initial experimentation with reworking module.
Need to remove NIO from the main handling of modules, so introducing a ModuleFileSource system. Also removed the classesAlreadyLoaded element of module - this is replaced with a predicate to determine which classpath classes to include. This opens the door for package-modules.
Reflections remains an element, but this also needs to be reworked for android, as runtime reflections scanning is not possible in that environment.
Lots of elements are broken or commented out right now. ModuleFileSystem is retained but marked for a higher android api - this probably needs to be reworked or removed anyway.
Module now provides a single ModuleFileSource, added EmptyFileSource …
…as a null object.

Updated ModuleEnvironment for the changes to module. In particular removed the use of type.getProtectionDomain().getCodeSource() as this is not available under android.
ModuleFactory updated for the changes to Module.
Updated APIScanner for changes to module.
Added local maven repository to repositories list (for reflections sn…
…apshot)

Switched to reflections 0.9.12-SNAPSHOT for bug fixes (built of latest code)
Developed gradle script for generating pacakge reflections caches.
Added demo of package module loading to android testbed
Fixed a couple of bugs in ModuleFactory:
 * Default constructor was not populating reflections serializers
 * Package path not being used for resolve package module reflection caches.
Switched to use gradle's reflection util to get package name for performance.
Added all permisions provider factory for cases where sandbox security is not required.
Directory module demonstration for Android.
Added a fix for manifests missing resources.
Added a fix for iteratoring directory resources.
Moved testpack out of gestalt-module for reuse.
Changed the package modules to work with the testpack.
Created an AndroidModuleClassLoader (need to move this into an android library later)
Reworked module a little for better compatibility between java and android
Changed module environment to allow the ModuleClassLoader to be changed
Extracted ModuleClassLoader as an interface
Removed byte injection support from ModuleEnvironment (can be added via changing the class loader supplier)
Added logback configuration to the android testbed
Added security sandbox to android testbed
ModuleEnvironment no longer creates class loaders for classless modules
Fixed an issue where classpath module classes would be blocked by the security sandbox
Added an option to hard disable scanning for classes in ModuleFactory.
Fixed createPackageModule to include subpackages.
Moved android classloader into a new gestalt-android library.
Cleaned up gestalt-util for android support.
Removed nio usage from ModuleFactory and ModulePathScanner.
Added further javadoc.
Cleaned up some lambdas.
Removed createFullClasspathModule from ModuleFactory. With classes from classpath modules automatically made available to other modules now, this is no longer a safe way to create modules - use package modules instead.
Changed API scanner to scan a reflections manifest, as it is no longer needed for modules.
Changed JavaModuleClassLoader to not use javassist if no bytecode injection is needed.
Modernised gradle build for gestalt-asset-core
Enabled gestalt-asset-core project
Replaced use of NIO with ModuleFile framework
Temporarily disabled ModuleEnvironmentWatcher
Reworked tests to take advantage of package modules
Added createPackageModule that loads a module info file to ModuleFactory
Expanded CompositeFileSource to support an empty source list.
Adapted ModuleEnvironmentWatcher for ModuleFiles.
Added a unit test for ModuleEnvironmentWatcher.
Split out auto asset reload to better isolate it for android.
Fixed a bug with removing asset types from ModuleAwareAssetTypeManager.
Added base functionality to component
 - Added dirty state and copy methods to component interface
 - Added an addComponent method that copies a provided component
 - Removed "before" state components from the OnChanged Event, to reduce
   the burden on the implementation
 - TypedKeyMap now has a put method that uses the type of the provided object
Removed extra copy when retrieving an entity
Cleaned up component state tracking.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.