j2objc-contrib / j2objc-gradle

This plugin is no longer actively maintained. J2ObjC Gradle Plugin: enables Java source to be part of an iOS application's build so you can write an app's non-UI code (such as application logic and data models) in Java, which is then shared by Android apps (natively Java) and iOS apps (using J2ObjC), all as part of your usual Android Gradle build.
https://github.com/j2objc-contrib/j2objc-gradle
Apache License 2.0
139 stars 43 forks source link

watchOS build support #525

Open brunobowden opened 8 years ago

brunobowden commented 8 years ago

Requires bitcode support, i.e. adding that as a target for the clang build. Also it appears that bitcode support for the J2ObjC libraries is currently limited to the jre only.

brunobowden commented 8 years ago

cc @tomball, @kstanger

watchOS support is waiting on adding Bitcode support to the non-jre libraries distributed with J2ObjC:

https://github.com/google/j2objc/issues/651

tomball commented 8 years ago

I'm not sure how useful transpiled code will be in a watch app, as (thanks to JRE inter-dependencies) a minimal hello-world command-line app is 7M. We're in the process of factoring out as many classes as possible for a minimal iOS app (hello-world's System.out use pulls in much of java.io, for example), but it's hard to fight most Java developers' inclination to include every Java library they can find on GitHub in their apps. Yes, JavaCard https://en.wikipedia.org/wiki/Java_Card apps were less than 64k, but no one expected them to use Jackson, Dagger, Guava, etc.

So we'll certainly get to this, but I don't see how watchOS support has a high priority.

On Mon, Oct 26, 2015 at 11:23 PM Bruno Bowden notifications@github.com wrote:

cc @tomball https://github.com/tomball, @kstanger https://github.com/kstanger

watchOS support is waiting on adding Bitcode support to the non-jre libraries distributed with J2ObjC:

google/j2objc#651 https://github.com/google/j2objc/issues/651

— Reply to this email directly or view it on GitHub https://github.com/j2objc-contrib/j2objc-gradle/issues/525#issuecomment-151387198 .

brunobowden commented 8 years ago

Fair points, especially when considering adding a lot of other libraries. For now, I'll look at watchOS support with only JRE and not the other libraries... though with stripped logic, it would radically cut down the binary size for third party libraries.

On Tue, Oct 27, 2015 at 8:53 AM Tom Ball notifications@github.com wrote:

I'm not sure how useful transpiled code will be in a watch app, as (thanks to JRE inter-dependencies) a minimal hello-world command-line app is 7M. We're in the process of factoring out as many classes as possible for a minimal iOS app (hello-world's System.out use pulls in much of java.io, for example), but it's hard to fight most Java developers' inclination to include every Java library they can find on GitHub in their apps. Yes, JavaCard https://en.wikipedia.org/wiki/Java_Card apps were less than 64k, but no one expected them to use Jackson, Dagger, Guava, etc.

So we'll certainly get to this, but I don't see how watchOS support has a high priority.

On Mon, Oct 26, 2015 at 11:23 PM Bruno Bowden notifications@github.com wrote:

cc @tomball https://github.com/tomball, @kstanger https://github.com/kstanger

watchOS support is waiting on adding Bitcode support to the non-jre libraries distributed with J2ObjC:

google/j2objc#651 https://github.com/google/j2objc/issues/651

— Reply to this email directly or view it on GitHub < https://github.com/j2objc-contrib/j2objc-gradle/issues/525#issuecomment-151387198

.

— Reply to this email directly or view it on GitHub https://github.com/j2objc-contrib/j2objc-gradle/issues/525#issuecomment-151548473 .

tomball commented 8 years ago

The bitcode size may indeed be much smaller, but don't forget that bitcode apps get built by Apple during distribution, so they may just plump back up. Tardis https://en.wikipedia.org/wiki/TARDIS technology is still in the future. :-)

On Tue, Oct 27, 2015 at 10:38 AM Bruno Bowden notifications@github.com wrote:

Fair points, especially when considering adding a lot of other libraries. For now, I'll look at watchOS support with only JRE and not the other libraries... though with stripped logic, it would radically cut down the binary size for third party libraries.

On Tue, Oct 27, 2015 at 8:53 AM Tom Ball notifications@github.com wrote:

I'm not sure how useful transpiled code will be in a watch app, as (thanks to JRE inter-dependencies) a minimal hello-world command-line app is 7M. We're in the process of factoring out as many classes as possible for a minimal iOS app (hello-world's System.out use pulls in much of java.io, for example), but it's hard to fight most Java developers' inclination to include every Java library they can find on GitHub in their apps. Yes, JavaCard https://en.wikipedia.org/wiki/Java_Card apps were less than 64k, but no one expected them to use Jackson, Dagger, Guava, etc.

So we'll certainly get to this, but I don't see how watchOS support has a high priority.

On Mon, Oct 26, 2015 at 11:23 PM Bruno Bowden notifications@github.com wrote:

cc @tomball https://github.com/tomball, @kstanger https://github.com/kstanger

watchOS support is waiting on adding Bitcode support to the non-jre libraries distributed with J2ObjC:

google/j2objc#651 https://github.com/google/j2objc/issues/651

— Reply to this email directly or view it on GitHub <

https://github.com/j2objc-contrib/j2objc-gradle/issues/525#issuecomment-151387198

.

— Reply to this email directly or view it on GitHub < https://github.com/j2objc-contrib/j2objc-gradle/issues/525#issuecomment-151548473

.

— Reply to this email directly or view it on GitHub https://github.com/j2objc-contrib/j2objc-gradle/issues/525#issuecomment-151582035 .

brunobowden commented 8 years ago

I believe these are necessary steps to get this working (may not be complete):

1) j2objcConfig: extraObjcCompilerArgs '-emit-llvm'

2) use_frameworks! in Podfile ???

yurevich1 commented 7 years ago

Please, help to me at this topic https://github.com/google/j2objc/issues/780 about watchOS warning.