先日、GooglePlayにてAndroidアプリのアップロードを行ったのですが、リリース直前で対応端末数が15端末しかないことに気がつきました。
結果的にリリースには無事間に合ったのですが、ググっても中々出てこなくて、結構手こずったので、こちらに記載します。
1.環境
- Android Studio
- Android Java
2.現象
アプリ自体は実機テスト等を出来ていたのだが、いざGooglePlayにアップロードしてみると、対応可能端末が15端末しか存在しなかった。
3.原因
画像で赤く囲っている、ネイティブプラットフォームというところで、対応するプラットフォームに制限がかかってしまい、対応端末数が極端に絞られてしまっていたことが原因です。
そしてそれは、ライブラリ構成がおかしいと起こってしまうようです。
通常のライブラリはルートディレクトリから、パッケージごとにディレクトリが分かれて配置されています。
/<APP_HOME>/org
/bitcoinj
/fusesource
/iq80
/...
今回、生成されたAPKをzipにして解凍してみると、
/<APP_HOME>/org
/bitcoinj
/fusesource
/iq80
/lib
/x86_64/darwin/libscrypt.dylib
/...
というファイルが生成されていたので、どうやらこちらのライブラリがプラットフォーム制限をかけてしまっている模様。
4.解決策
このライブラリを除外して、ビルドをするように設定を行ったところ、プラットフォーム制限をなくし、対応端末数を通常通りにすることが出来ました。
特定のライブラリを除外し、ビルドをするためには、gradleに記載が必要で、下記のように行います。
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
}
...
}
※端末数が増え、ネイティブプラットフォームの制限が削除された。
ググってもクックパッドさんの記事くらいしか出てこなかったので、記事にしてみました。
自分は解くのに結構時間がかかってしまったので、同じように悩む人の救いになれば幸いです。