Cordova IT

cordovaアプリ Android64bit対応

概要

現在cordovaを使用しハイブリッドアプリ開発を行っている。
2019年8月1日以降、Androidアプリが64bitデバイスに対応していないと、Google Playにアプリをアップロードすることができなくなったため対応。

対応方針

cordova-plugin-crosswalk-webviewを削除すれば行けるらしいが、crosswalkも使用したいので今回は手動で無理やり64bit対応をすることにした。今回は遊びで作っているアプリなのでとりあえず動けばいいや対応なので、他の方には絶対におすすめしない。

※crosswalk:WebViewのベースを統一する。Android5.0以前の端末はOS標準のブラウザがWebViewとして利用されるので、機種依存などを防ぐ。

対応方法

cordova-plugin-build-architectureのインストール

・以下コマンドを叩いてプラグインをインストールする。

crosswalkを使用していると1つのビルドで2つ以上の.apkファイルを作成します。Cordova Buildでは、ダウンロードできるファイルは1つだけなので、他の.apksにアクセスしたい場合に問題が発生します。それを解決してくれるプラグインです。

cordova plugin add cordova-plugin-build-architecture

APK作成

armAPK作成

・32bitAPK作成

以下コマンドでAPKを作成する。

cordova build android --release

outputフォルダにandroid-armv7-release-unsigned.apkが作成されれば成功。

・64bitAPK作成

config.xmlに以下コマンドを追加する。

    <preference name="xwalk64bit" value="true" />
    <preference name="buildArchitecture" value="arm64" />

以下コマンドでAPKを作成する。

cordova build android --release

outputフォルダにandroid-arm64-release-unsigned.apkが作成されれば成功。

x86APK作成

・32bitAPK作成

config.xmlに以下コマンドを追加する。

    <preference name="buildArchitecture" value="x86" />

以下コマンドでAPKを作成する。

cordova build android --release

outputフォルダにandroid-x86-release-unsigned.apkが作成されれば成功。

・64bitAPK作成

config.xmlに以下コマンドを追加する。

    <preference name="xwalk64bit" value="true" />
    <preference name="buildArchitecture" value="x86_64" />

以下コマンドでAPKを作成する。

cordova build android --release

outputフォルダにandroid-x86_64-release-unsigned.apkが作成されれば成功。

32bit かつ64bitのAPK作成

2個作ったからアプリをGooglePlayに上げようと思ったら上がらない、、、一個にしないとダメなのね、、

APKファイルを分解

apktool d android-arm64-release-unsigned.apk
apktool d android-armv7-release-unsigned.apk

※apktoolをインストールしておくこと(https://ibotpeaches.github.io/Apktool/install/)

「android-arm64-release-unsigned\lib\arm64-v8a」をコピー、「android-armv7-release-unsigned\lib」に貼り付け

以下コマンドでapkを再作成。

apktool b android-armv7-release-unsigned -o android-armv7-release-unsigned_new.apk

以上で完了です。後は以下の記事を参考に署名とかして出せばOK。32bit版を同じ感じで合体します。

https://pepecam.com/it/cordova-android-release/

-Cordova, IT