LoginSignup
1
2

More than 5 years have passed since last update.

Cordova プラグインの設定について - Android 編

Posted at

Monaca で Cordova プラグインを組み込む場合、ZipURLパッケージ名 で組み込むことができます。

Cordova プラグインを URLパッケージ名 で組み込む場合、バージョン指定をしない場合は、ビルド時に最新版の Cordova プラグインが組み込まれます。

そのため、対象の Cordova プラグインのバージョンが更新されている場合は、前回ビルドした際に組み込まれた Cordova プラグインとは異なるバージョンのものが組み込まれるため、ビルドが失敗したり、ビルドが成功しても正常にアプリが動作しない場合があります。

また、Cordova プラグインが更新されていない場合でも、設定ファイルの内容によって、ビルド時に異なるバージョンのフレームワークが組み込まれる場合があるため、このような場合もビルドが失敗したり、ビルドが成功しても正常にアプリが動作しない場合があります。

plugin.xml

Cordova プラグインの設定は、通常 plugin.xml に設定されています。

下記は、cordova-admob-pro プラグインの plugin.xml の抜粋です。

plugin.xml
<?xml version="1.0" encoding="UTF-8"?>

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
        xmlns:android="http://schemas.android.com/apk/res/android"
        id="cordova-plugin-admobpro"
        version="2.31.6">

    <name>AdMob Plugin Pro</name>

    <dependency id="cordova-plugin-extension" />

    <!-- android, now build with gradle instead of ant -->
    <platform name="android">
        <config-file target="AndroidManifest.xml" parent="/manifest/application">
            <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
                      android:name="com.google.android.gms.ads.AdActivity"
                      android:theme="@android:style/Theme.Translucent" />
          </config-file>
        <config-file target="AndroidManifest.xml" parent="/*">
            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
          </config-file>

        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="AdMob">
                <param name="android-package" value="com.rjfun.cordova.admob.AdMobPlugin"/>
                <param name="onload" value="true" />
            </feature>
        </config-file>
        <source-file src="src/android/AdMobMediation.java" target-dir="src/com/rjfun/cordova/admob" />
        <source-file src="src/android/AdMobPlugin.java" target-dir="src/com/rjfun/cordova/admob" />

        <!-- cordova CLI using gradle and it working well -->
        <framework src="com.google.android.gms:play-services-ads:+" />
        <!-- but unfortunately, build.phonegap.com, Intel XDK, and some other tools still use ant -->
        <!-- dependency id="cordova-plugin-googleplayservices"/ -->
     </platform>
</plugin>

framework タグ

framework タグでは、Cordova プラグインで利用するフレームワークを指定します。

Androidの場合、この framework タグでバージョンが指定されています。

例1
<framework src="com.google.android.gms:play-services-ads:+" />
例2
<framework src="com.android.support:support-v4:26.+"/>

上の例のように、バージョン指定に + が指定されている場合は、ビルド時に最新版のフレームワークが組み込まれます。

新しいフレームワークが公開された場合は、前回のビルド時に組み込まれたバージョンと異なるバージョンのフレームワークが組み込まれるため、ビルドが失敗したり、ビルドが成功しても正常にアプリが動作しない場合があります。

また、下の例のように gradle ファイルにフレームワークの指定が行われている場合もあります。

この gradle ファイルに指定されているフレームワークのバージョンが + 指定されている場合も、同様の動きになります。

例3
<framework src="sample.gradle" custom="true" type="gradleReference"/>
sample.gradle例
dependencies {
    implementation 'com.android.support:support-v4:+'
}

dependency タグ

Cordova プラグインでは、指定した Cordova プラグインだけではなく、他の Cordova プラグインに依存している場合があります。

他の Cordova プラグインに依存している場合は、dependency タグが指定されています。

<dependency id="cordova-plugin-extension" />

この dependency タグで指定されている Cordova プラグインもビルド時に一緒に組み込まれます。

依存先の Cordova プラグインで指定されている framework タグの設定によっても、ビルドが失敗したり、ビルドが成功しても正常にアプリが動作しない場合があります。

バージョンを指定する

framework タグのバージョンに + が設定されていることによってビルドが失敗したり、ビルドが成功しても正常にアプリが動作しない場合は、下の例のようにバージョンを指定することで、動作するようになる場合があります。

対象の Cordova プラグインをダウンロードして、設定を変更した Cordova プラグインを Zip ファイルにすることで、Monaca にインポートすることができます。

<framework src="com.google.android.gms:play-services-ads:11.6.2" />

元の設定を変更しているため、必ずしも正常に動作するとは限りません。
設定を変更して使用する場合は、自己責任で行ってください。

おわりに

Android の場合、新しいバージョンの OS の公開や、Android Studio の新しいバージョンの公開のタイミングで、フレームワークのバージョンが更新される傾向にあります。

これまで利用できていた Cordova プラグインが利用できなくなった場合は、framework タグや dependency タグを確認し、バージョン指定に + が設定されていないか確認してみてください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2