gpt4 book ai didi

react-native - 在 react-native 中构建签名发布 APK 的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 03:44:39 25 4
gpt4 key购买 nike

我不太确定我在做什么是 正确方法错过了一些步骤步骤太多我做的。我从教程、论坛和示例的各种发现中检索到的构建 APK 的方式。同样,我仍然不确定我构建它的方式。

我在 ./android/app 上有生成的 keystore 文件目录
以下是我发现并尝试的,但我不知道它们之间有何不同:

第一步:

> 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

第三步:

> 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。该文件将在要运行的项目根文件夹之前的一个文件夹中。

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

而这个创建于 .\android\app\build\outputs\apk\release 的 APK是我们将要上传到 Playstore 进行验证的那个吗?

最佳答案

所以最后看到你想要一个签名的 APK/bundle 上传到你的 playstore 。要做到这一点,正如您提到的,所有步骤最后都执行相同的操作。创建签名的 APK:

以下步骤将是您遵循的理想选择:

1.创建一个更新的 js 包,因为它包含你的最新代码。这样做是为了更新您的 react native 代码的捆绑包。请检查您的捆绑文件是否名为 index.android.bundle或只是 index.bundleandroid/app/src/main/assets目录。

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle

2.Android X之后,要迁移所有兼容android x的依赖。
在您的 react native 目录中执行以下操作:
yarn add jetifiernpm i jetifier然后
npx jetify  

3.完成后,通过 cd android导航到android目录并执行清理操作,这将清理任何现有的构建:
./gradlew clean
  • 在 android 目录中之后,您可以创建 APK 或捆绑包。您可以将两者都上传到 Playstore。但我建议捆绑,因为它显着减小了应用程序的大小。

    一种。构建 APK : ./gradlew assembleRelease这将在 /android/app/build/outputs/apk/ 中创建一个 APK
    b.构建捆绑包:'./gradlew bundleRelease这将在 android/app/build/outputs/bundle/ 中创建一个捆绑包

  • 您可以共享 APK 或上传它,但您不能共享捆绑包,您只能将捆绑包上传到 playstore。

    希望能帮助到你。随时怀疑

    关于react-native - 在 react-native 中构建签名发布 APK 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62463605/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com