<p>Thanks. Was going to ask for a log but this is better.</p>
<div class="gmail_quote">On Jul 8, 2011 10:45 AM, &quot;Robert Schuster&quot; &lt;<a href="mailto:r.schuster@tarent.de">r.schuster@tarent.de</a>&gt; wrote:<br type="attribution">&gt; Hi guys,<br>&gt; here is the write-up of yesterday&#39;s meeting. If you miss something feel<br>
&gt; free to add it as a reply to this mail. Interestingly the last meeting<br>&gt; took place *exactly* a month ago. :)<br>&gt; <br>&gt; necessitas meeting 2011-July 6 - 7pm (GMT+2)<br>&gt; <br>&gt; location:<br>&gt; #<a href="mailto:necessitas@irc.freenode.org">necessitas@irc.freenode.org</a><br>
&gt; <br>&gt; attendees:<br>&gt; BogDan Vatra - bog_dan_ro<br>&gt; Ray Donnelly - mingwandroid<br>&gt; Robert Schuster - rschus<br>&gt; pcspets<br>&gt; thp<br>&gt; <br>&gt; The meeting began a few minutes after the scheduled time and its sole<br>
&gt; purpose was to discuss and exchange ideas about the upcomming rework of<br>&gt; the Java part. Prior to the meeting Robert Schuster had already<br>&gt; posted[0] a drawing and an explanation of the Java part design on the<br>
&gt; project&#39;s mailinglist.<br>&gt; <br>&gt; Bogdan mentioned that he was generally OK with the approach and Robert<br>&gt; just explained parts of the idea more in detail.<br>&gt; <br>&gt; pcspets wanted to know why the suggestion to write the activity<br>
&gt; completely in C++ is not being considered. While the approach is<br>&gt; technically possible it automatically increases the minimum supported<br>&gt; Android version to API level 9 (Android 2.3)[1] which at the moment a<br>
&gt; rather steep increase. At the time of this writing the market share for<br>&gt; Android 2.2 is 59.4% and 17.5% for Android 2.1[2]. In other words, we<br>&gt; would could ourselves of off most of our userbase. Robert remarked that<br>
&gt; changing to a complete native App wrapper has the potential to simplify<br>&gt; the Application build process a bit but it must be made the sure that<br>&gt; calling Android services works from the native side.<br>&gt; <br>
&gt; There was also a question about the module called &#39;Bridge&#39; in the<br>&gt; description of the Java part design. pcspets wanted to know whether this<br>&gt; is what needs to be implemented. Robert answered that this part indeeds<br>
&gt; needs to be implemented by the necessitas project but that most of it<br>&gt; already exists and that that code only needs to be moved and made part<br>&gt; of the Android-Qt build.<br>&gt; <br>&gt; The discussion then went on to the viability of implementing with as<br>
&gt; little Java as possible meaning that there might be quite a few JNI<br>&gt; functions to be called. Robert explained that the Java and the C++ part<br>&gt; should be considered like two sides of the same coin and that it is up<br>
&gt; to the person implementing both to find a design which is both efficient<br>&gt; and maintainable. It was reiterated that future compatibility between<br>&gt; the Java and C++ side is no concern with the proposed redesign because<br>
&gt; it becomes effectively an internal interface that we (= the project)<br>&gt; have full control over.<br>&gt; <br>&gt; There was a discussion about using a very generic Java base class for<br>&gt; all things QtMobility and how this can be used to call different native<br>
&gt; code. After finding out that the Java class contains a pointer to a C++<br>&gt; object that we can cast to a known base class and then call a virtual<br>&gt; method (which makes it call the most-specific variant) nobody saw a<br>
&gt; problem with implementing the &#39;general base class&#39; idea. Robert said<br>&gt; that in that case one only needs to register the class&#39; native method<br>&gt; once and do the arbitration via the C++ virtual method call.<br>
&gt; <br>&gt; Robert and Bogdan agreed that the build process of Android-Qt needs to<br>&gt; learn to:<br>&gt;  * compile Java classes against Android API<br>&gt;  * dexify the Java classes and create APK files<br>&gt; For this to work the build will depend on a JDK and an Android SDK<br>
&gt; (*added by editor*: and a chosen acceptable minimum Android API level).<br>&gt; <br>&gt; Bogdan suggested the creation of a Wiki page[3] for the Java part rework<br>&gt; effort. Robert agreed on putting all known information into this page.<br>
&gt; Work will begin July 8th.<br>&gt; <br>&gt; At the end of the meeting everyone had the impression that<br>&gt; implementation problems do not exist anymore and that talking about the<br>&gt; used techniques helped finding this out.<br>
&gt; <br>&gt; A specific date for another meeting was not made. It is expected to be<br>&gt; announced on the mailinglist when the need arises.<br>&gt; <br>&gt; A log of the meeting was posted here[4].<br>&gt; <br>&gt; References:<br>
&gt; [0] - <a href="http://mail.kde.org/pipermail/necessitas-devel/2011-July/000246.html">http://mail.kde.org/pipermail/necessitas-devel/2011-July/000246.html</a><br>&gt; [1] - <a href="http://developer.android.com/guide/appendix/api-levels.html">http://developer.android.com/guide/appendix/api-levels.html</a><br>
&gt; [2] -<br>&gt; <a href="http://developer.android.com/resources/dashboard/platform-versions.html">http://developer.android.com/resources/dashboard/platform-versions.html</a><br>&gt; [3] - <a href="http://community.kde.org/Necessitas/Java/Redesign">http://community.kde.org/Necessitas/Java/Redesign</a><br>
&gt; [4] - <a href="http://paste.debian.net/122237/">http://paste.debian.net/122237/</a><br>&gt; <br>&gt; ---<br>&gt; <br>&gt; Hope you liked the write-up. :)<br>&gt; <br>&gt; Regards,<br>&gt; Robert<br>&gt; <br>&gt; -- <br>
&gt; tarent solutions GmbH<br>&gt; Thiemannstr. 36 a, D-12059 Berlin • <a href="http://www.tarent.de/">http://www.tarent.de/</a><br>&gt; Tel: +49 30 5682943-30 • Fax: fax +49 228 52675-25<br>&gt; <br>&gt; Rochusstraße 2-4, D-53123 Bonn • <a href="http://www.tarent.de/">http://www.tarent.de/</a><br>
&gt; Tel: +49 228 52675-0 • Fax: +49 228 52675-25<br>&gt; HRB AG Bonn 5168 • USt-ID (VAT): DE122264941<br>&gt; Geschäftsführer: Boris Esser, Elmar Geese<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br></div>