ReadyTalk / avian

[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
https://readytalk.github.io/avian/
Other
1.22k stars 173 forks source link

update to more recent version of Android class library #332

Closed dicej closed 10 years ago

dicej commented 10 years ago

\ Please don't merge this until after v1.1 is tagged **

Lots has changed since we forked Android's libcore, so merging the latest upstream code has required extensive changes to the Avian/Android port.

One big change is that we now use Avian's versions of java.lang.Object, java.lang.Class, java.lang.ClassLoader, some java.lang.reflect.* classes, etc. instead of the Android versions. The main reason is that the Android versions have become very Dex/Dalvik-specific, and since Avian is based on Java class files, not dex archives, that code doesn't make sense here. This has the side benefit that we can share more native code with classpath-avian.cpp and reduce the amount of Java/C++ code duplication.

bigfatbrowncat commented 10 years ago

@dicej, please, explain, are you going to merge the upstream version of libcore to our repository soon? Or you want us to help you with that? What's the plan? Actually I want this to happen very much cause my project is based on Avian with Android classpath at most...

And the other thing - there are some additional repositories (openssl, libnativehelper nd so on...) are they to be updated too?

We (me and @JustAMan) have done a lot of work making libcore compatible with Windows and Avian and we are very interested in the evolution of it ;)

dicej commented 10 years ago

@bigfatbrowncat, yes, I was planning to contact you and @JustAMan about this. Thanks for reminding me :)

The libcore merge is available in the upstream-merge branch of android-libcore64: https://github.com/dicej/android-libcore64/tree/upstream-merge, and I've updated Avian's README.md with new commit hashes for the dependencies (e.g. libnativehelper, system/core). Note that the conscrypt library (which used to be part of libcore) has been moved to its own repository; README.md has instructions for cloning it and selecting a compatible commit.

There were several conflicts in the merge; I tried to make sure the Windows patches were preserved, but haven't tested on Windows yet. Please give it a try when you have a chance.

Meanwhile, I'm seeing a bug in my test app when using SSL -- I'll be debugging that today. All the Avian tests pass, though (on Linux).

bigfatbrowncat commented 10 years ago

Great. We'll take a look at this A.S.A.P.

By the way, are you interested in https://github.com/bigfatbrowncat/avian-pack? All Android repos are connected as submodules with initially correct versions. For example, https://github.com/bigfatbrowncat/avian-pack.android.libcore is the libcore itself.

I made this package to simplify the building process. And now I'll update it. Maybe you would like to fork it after the update?

dicej commented 10 years ago

Yeah, avian-pack looks cool -- I'll try it out.

dicej commented 10 years ago

I'm closing this for now. Looks like Mac needs some work (and Windows I'm sure, though I haven't tried that yet), which I don't have time to work on right now. I'll reopen post-1.1.

bigfatbrowncat commented 10 years ago

We managed to build everything on OS X and Windows. On OS X it should work (actually almost no problems issued), on Windows there are some new POSIX functions that are not implemented yet and should be analyzed.