2016-08-04 5 views
1

私はcom.gluonhq.charm.down.common.ScanServiceを使用する小さなサンプルを書いています。実際のiOSデバイスでは、の場合、の場合、src/ios/jniLibsにネイティブライブラリlibCharm.aを手動で含めると、正常に動作します。これは、そのGoNativeアプリのGluonのドキュメントで説明されています。誤解されていない場合、ライブラリはCharm Down IOSのbuild.gradleファイルに組み込まれています。Gluon MobileプロジェクトでlibCharm.aが自動的にダウンロードされ、インクルードされますか?

ここに私のサンプルのbuild.gradleがあります。私が言ったように、libCharm.aをsrc/ios/jniLibsに手動でコピーすると、これは完全に機能するアプリケーションにつながります。

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'org.javafxports:jfxmobile-plugin:1.0.8' 
    } 
} 

apply plugin: 'org.javafxports.jfxmobile' 

repositories { 
    jcenter() 
    maven { 
     url 'http://nexus.gluonhq.com/nexus/content/repositories/releases' 
    } 
} 

mainClassName = 'com.thomaskuenneth.scanservicedemo.ScanserviceDemo' 

dependencies { 
    compile 'com.gluonhq:charm:3.0.0' 

    androidRuntime 'com.gluonhq:charm-android:3.0.0' 
    androidRuntime 'com.google.zxing:core:3.2.1' 

    iosRuntime 'com.gluonhq:charm-ios:3.0.0' 

    desktopRuntime 'com.gluonhq:charm-desktop:3.0.0' 
} 

jfxmobile { 

    apply plugin: 'idea' 
    idea.module.downloadJavadoc = true 

    android { 
     manifest = 'src/android/AndroidManifest.xml' 

     androidSdk = '/Users/thomas/Library/Android/sdk' 
     compileSdkVersion = 23 
    } 
    ios { 
     infoPList = file('src/ios/Default-Info.plist') 
     forceLinkClasses = [ 
       'com.google.zxing.**.*', 
       'com.gluonhq.**.*', 
       'io.datafx.**.*', 
       'javax.annotations.**.*', 
       'javax.inject.**.*', 
       'javax.json.**.*', 
       'org.glassfish.json.**.*' 
     ] 
    } 
} 

私は魅力ダウン-IOSの最新バージョンにiosRuntime依存関係を追加しようとしましたが、これは効果がありませんように見えました。だから、問題は:私の指定された依存関係にマッチするlibCharm.aを自動的に取得する方法があるのでしょうか、手動で(可能ですが)唯一の方法ですか?事前にどうもありがとうございました。

答えて

2

現在、ネイティブライブラリの適切なインストールを管理するプラグインに含まれる自動ツールはありません。これをcharm-down-ios.jarから抽出し、プロジェクトのjniLibsライブラリに移動します。しかし、それはプラグインの将来のバージョンで利用できるはずです。今の

は、あなたが述べたように、ローカルの.m2リポジトリに配置されますcharm-ios-3.0.0.jarからlibCharm.aファイルを抽出し、そしてsrc/ios/jniLibsの下でプロジェクトにそれをコピーして、それを手動で行う必要があります。私はあなたがそれを行うのに役立ちます。このタスクを作ってみた

task extractNativeLib(type: Sync) { 
    def iosNativeDir = project.file(project.jfxmobile.ios.nativeDirectory) 
    if (!iosNativeDir.exists()) { 
     iosNativeDir.mkdirs() 
    } 

    setIncludeEmptyDirs(false) 
    from { 
     configurations.iosRuntime.collect { zipTree(it).matching { include 'native/**' } } 
    } 
    into iosNativeDir 
    eachFile {details -> details.path = details.name } 
} 

launchIOSDeviceを呼び出す前に、このタスクを実行し、それがライブラリを抽出し、母国のフォルダにコピーします。プラグインは、それを管理するように、このタスクを使用する必要がない

javafxmobileプラグイン1.1.0(2016年10月)のリリース以来

EDIT。

プロジェクトに含まれているCharm Down 3.0.0+プラグインの場合、そのネイティブライブラリが自動的にビルドに追加され、src/ios/jniLibsに含まれる他のサードパーティのネイティブライブラリも自動的にビルドに追加されます。

+0

驚くばかりです。いつものように、ホセ、あなたの答えは大変に感謝しています。あなたの素晴らしいサポートに感謝します。 – Thomas

関連する問題