web-dev-qa-db-ja.com

Cordovaプラグイン開発-aarの追加

Cordovaプラグイン開発スタッフは初めてです。新しいAndroidアクティビティを開き、広告を表示できるプラグインを作成したいと思います。

そこで、私は簡単なチュートリアル here に従いました。それは非常にうまく機能し、予想どおりです。

次のステップは、このAndroid Studio Gradleプロジェクトをプラグインに含めることです。

私の最初の試み:gradleプロジェクトをCordovaプラグインのサブフォルダーに追加し、次の行をplugin.xmlファイルに追加します。

<framework src="libs/Broper/build.gradle" custom="true" type="gradleReference" />

私も試しました:

<framework src="libs/Broper/app/build.gradle" custom="true" type="gradleReference" />

Graddleファイルはcordovaによって認識されます。しかし、何かが機能しません。だから私はそのAndroidスタジオプロジェクトをプラグインにインポートすることはできませんJavaファイル。

それから、より良い解決策(私はそう思った)は代わりにAARを追加することです。しかし、そのAARをCordovaプラグインに追加するために何をすべきかさえ分かりません。

したがって、質問は次のとおりです。正しい方法でAndroid atudio aroject(またはライブラリ)をCordovaプラグインに追加するにはどうすればよいですか?

35
SleepingMole

Cordovaプラグインでgradle参照を使用するために私がやったことは、これがあなたの役に立つかもしれないと思います。

グローバル構造:

pluginFolder/
  build-extras.gradle
  plugin.xml
  yourDirContainingYourAAR/
  src/
    Android/
      yourFile.gradle
      myPlugin.Java

ライブラリを入れて、foo.aaryourDirContainingYourAARディレクトリ(必要に応じて作成)

  • の中に plugin.xmlファイル:

    <platform name="Android">
        <!-- your configuration elements, references, source files, etc... -->
    
        <framework src="src/Android/yourFile.gradle" custom="true" type="gradleReference" />
    
        <resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />
    </platform>
    
  • GradleファイルyourFile.gradle

    repositories{    
      jcenter()
      flatDir {
          dirs 'libs'
       }
    }
    
    dependencies {
       compile(name:'foo', ext:'aar')
    }
    
    Android {
      packagingOptions {
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
      }
    }
    
  • プラグインのルートフォルダー(同じレベルのplugin.xmlbuild-extras.gradle。必要に応じて、プロジェクトのニーズに応じてminSdkVersionおよびtargetSdkVersionを追加または削除します。

    Android {
        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 22
        }
    
       packagingOptions {
           exclude 'META-INF/NOTICE'
           exclude 'META-INF/LICENSE'
       }
    }
    
59
Niko

ニコの答え に若干の修正が必要です

Gradleが Niko's answer を使用してコンパイルを実行すると、プロジェクトに存在しないapp/libsのライブラリを検索します(標準のAndroid St​​udioプロジェクトでは、ただし、Cordova Androidプロジェクト構造では、libsフォルダーが異なります)。ただし、プラグインはaarライブラリをapp/src/main/libsにコピーするため、aarをapp/libsにコピーしていると思わせることができます。

<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />

したがって、gradleファイルは

repositories{    
 jcenter()
   flatDir {
     dirs 'src/main/libs'
   }
}

dependencies {
  compile(name:'foo', ext:'aar')
}

Android {
 packagingOptions {
  exclude 'META-INF/NOTICE'
  exclude 'META-INF/LICENSE'
 }
}

これにより、アプリのコンパイルが成功します

乾杯!!

14
Amey Kshirsagar

Cordovaプロジェクトの作成、プラットフォームの追加、プラグインの追加が完了しました。

Aarファイルがlibsフォルダーにコピーされているとしましょう。 (ファイル名がcards.aarであると仮定します)

次に、アプリbuild.gradleで以下を指定し、プロジェクトをGradleファイルと同期します。

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name:'cards', ext:'aar')
}

わたしにはできる!!ただし、このソリューションの欠点の1つは、。Android Studioのプラットフォームフォルダーからプロジェクトを開き、build.gradleに上記の行を追加する必要があることです。

0
Sathis Kumar