はまるところが多かったのでメモです。
Expo(CRNA)で作ったことを想定しています。
react-native-cliで作った方は3番まで飛ばしてください
1. 雛型の作成
まずは、
create-react-native-app UpTest
cd UpTest
で適当に作ります。ただし、名前「UpTest」はのちのちパッケージ名になるので、複雑な名前にしておかないと、リリース時にコンフリクトしてリリースできなくなるので注意です!
<ライブラリ追加したり、ソースを書いたりしてアプリを作りこんでいく>
(Tips)
native-baseをつかうときは、
npm i -S @expo/vector-icons
を忘れないように。
また、このとき、
async componentWillMount() {
await Expo.Font.loadAsync({
'Roboto': require('native-base/Fonts/Roboto.ttf'),
'Roboto_medium': require('native-base/Fonts/Roboto_medium.ttf'),
});
}
も忘れないようにする
Expo XDEで作ると、package.jsonの"react-native": "0.52.0",
を"react-native": "https://github.com/expo/react-native/archive/sdk-25.0.0.tar.gz"
に変更しろと言われる。
一時的に変えてもいいけど、ejectするまえに戻しておかないと、import com.facebook.react.ReactApplication; が見つかりません
エラーがでるっぽいです。
2. eject
んで、次に
npm run eject
すると、androidフォルダとかが作られます。
Ejected successfully!が表示されたら成功です。エラーが出てても大丈夫(多分)
3. ネイティブファイルをいじる
次に、
android/app/build.gradle
のminSdkVersionを19に、
android/app/src/main/AndroidManifest.xml
のandroid:minSdkVersionを19に上げておきます。
これをしておかないと、鍵をRSAで作っても(後述)対応していないようです。
あと、android/にlocal.propertiesという名前のファイルを作って、中身を以下のようにします。
sdk.dir=C:/Users/○○/AppData/Local/Android/Sdk
ここは自身のSDKの場所を書いてください
このタイミングで、アプリのアイコンなどを
android/app/src/main/res
に入れておきましょう
4. 証明書つくる
次に証明書の鍵を作ります。
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
5. ビルド
いよいよビルドです
cd android
gradlew assembleRelease
(注)なぜかgradlew assembleReleaseは2回実行しないと上手くビルドされませんでした。
(注)ライセンスがどうのこうの言われたら、SDKのパスまで移動して、./tools/bin/sdkmanager.bat --licenses
を実行してみてください
成功すると、andorid/app/build/outputs/apk
フォルダが作られ、apkファイルが中にいます。
6.署名
鍵を使って署名します
my-release-key.keystoreというのがプロジェクトファイルに作られていると思うので、それをandroidフォルダ内にコピーしておいてください。
そして、以下を実行します
jarsigner -verbose -keystore my-release-key.keystore app/build/outputs/apk/app-release-unsigned.apk my-key-alias
7.ファイルの最適化
次に、署名されたapkファイルを最適化します
zipalign -f -v 4 app/build/outputs/apk/app-release-unsigned.apk my-app.apk
もしzipalignが無いといわれたら、SDKフォルダの中にあるビルドツールをPATHに追加します。以下のようなファイルです
C:\Users\○○\AppData\Local\Android\Sdk\build-tools\23.0.1
以上でビルド作業の終了です。
やること多すぎ+エラー出すぎで開発の3倍ぐらいは時間かかりました。
おそらくこの通りにやっていてもどこかで引っかかると思いますが、どうにかして調べてください。