Я не уверен, что то, что я делаю, - это правильный путь или пропустить какой-то шаг или слишком много шагов , которые я сделал. Способ создания APK я нашел из различных материалов в учебниках, форумах и в примерах. Опять же, я до сих пор не уверен, как я его создаю.
У меня есть сгенерированный файл хранилища ключей в каталоге ./android/app
. Ниже приведены то, что я нашел и попробовал, но я не знаю, чем они отличаются друг от друга :
ШАГ 1:
> cd android
> gradlew clean
> gradlew assembleRelease
ШАГ 2:
> react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle
> cd android
> gradlew assembleRelease
ШАГ 3:
> react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
#Go to ".\android\app\src\main\res" and delete all *drawable-xxxx* and *raw* folder if exist
> cd android
> gradlew assembleRelease -x bundleReleaseJsAndAssets
ШАГ 4:
> npx jetify
> cd android
> gradlew clean
> gradlew assembleRelease
ШАГ 5:
# Go to ./android/app/src/main/assets/ and remove `index.android.bundle` file
> react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
> cd .\android\app\src\main\res && if exist "drawable-hdpi" rmdir "drawable-hdpi" /q /s && if exist "drawable-mdpi" rmdir "drawable-mdpi" /q /s && if exist "drawable-xhdpi" rmdir "drawable-xhdpi" /q /s && if exist "drawable-xxhdpi" rmdir "drawable-xxhdpi" /q /s && if exist "drawable-xxxhdpi" rmdir "drawable-xxxhdpi" /q /s && if exist "raw" rmdir "raw" /q /s
> cd..\..\..\..\..\android
> gradlew assembleRelease -x bundleReleaseJsAndAssets
С другой стороны рука, я также создаю свой собственный командный файл, чтобы сделать эту сборку как APK. Этот файл будет на одну папку перед запуском проекта root.
build-react-native-release.bat:
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
if not defined in_subprocess (cmd /k set in_subprocess=y ^& %0 %*) & exit )
set driveName="%CD:~0,2%"
set currentFolder="%~dp0"
setlocal enableextensions enabledelayedexpansion
set /A count=1
set list=
CD %driveName%
echo ===========================================
for /d %%D in (*) do (
set "listName=%%~f"
set list=%listName%%1
rem echo !listName! !
echo !count!^. %%~D
set /a count+=1
)
echo ===========================================
:startAgain
set choice=
set /p choice=Type in target folder from listing to build release APK (e.g. targetfolder):
if not '%choice%'=='' (
if exist %choice% (
set choice=%choice%
CD %choice%
goto performbuild
)
)
echo Invalid directory name!
goto startAgain
:performbuild
echo Script will start build target APK to release on %choice%...
timeout /t 2 /nobreak>nul
cd %currentFolder%%choice%^\android\app\src\main\assets
del "index.android.bundle" 2>nul
cd %currentFolder%%choice%
call react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
rem start "" %currentFolder%%choice%^\android\app\src\main\res
timeout /t 2 /nobreak>nul
cd %currentFolder%%choice%^\android\app\src\main\res
echo Validating duplicating resources
if exist "drawable-hdpi" rmdir "drawable-hdpi" /q /s 2>nul
if exist "drawable-mdpi" rmdir "drawable-mdpi" /q /s 2>nul
if exist "drawable-xhdpi" rmdir "drawable-xhdpi" /q /s 2>nul
if exist "drawable-xxhdpi" rmdir "drawable-xxhdpi" /q /s 2>nul
if exist "drawable-xxxhdpi" rmdir "drawable-xxxhdpi" /q /s 2>nul
if exist "raw" rmdir "raw" /q /s 2>nul
cd %currentFolder%%choice%^\android
call gradlew assembleRelease
cd %currentFolder%%choice%
:choiceOpt
set /P answ=Build complete. Do you want to rebuild again[Y/N]?
if /I "%answ%" EQU "Y" goto :performbuild
if /I "%answ%" EQU "N" goto :justexit
goto :choiceOpt
:justexit
echo Exiting
timeout /t 2 /nobreak>nul
exit
И этот APK созданный на .\android\app\build\outputs\apk\release
, мы будем передавать его для загрузки в Playstore для проверки?