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

路易

我不确定自己在做什么是正确的方法,还是错过了我所做的某些步骤太多的步骤我可以从教程,论坛和示例的各种发现中检索到构建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。该文件将在项目根目录文件夹之前运行一个文件夹。

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是我们将传递给APK进行验证的APK吗?

高拉夫·罗伊(Gaurav Roy)

因此,最后看看您希望将已签名的APK /捆绑包上传到您的Playstore。为此,正如您所提到的,所有步骤最后都执行相同的操作。创建签名的APK:

以下步骤非常适合您遵循:

1.创建一个更新的js包,因为其中包含您的最新代码。这样做是为了更新您的响应本机代码包。请检查您的捆绑文件是否已命名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兼容的所有依赖项。在您的本机目录中执行以下操作:

yarn add jetifiernpm i jetifier然后

npx jetify  

3.完成后,导航到android目录cd android并执行清理操作,这将清理所有现有的构建:

./gradlew clean
  1. 之后,您可以在android目录中创建APK或捆绑包。您可以将两者都上传到Playstore。但我建议使用捆绑软件,因为它可以大大减少应用程序的大小。

    一种。建立APK:./gradlew assembleRelease并在/android/app/build/outputs/apk/b中建立一个APK 。建立bundle:'./gradlew bundleReleaseb中建立一个bundleandroid/app/build/outputs/bundle/

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

希望能帮助到你。毫无疑问

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React-Native Android 生成签名 apk:构建 Gradle 错误

来自分类Dev

在React Native组件中处理HTTP响应的正确方法是什么

来自分类Dev

在 React Native Image 组件中处理个人资料图像的正确方法是什么?

来自分类Dev

在React State中传递html标签的正确方法是什么?

来自分类Dev

在TypeScript中定义React组件的contextTypes的正确方法是什么?

来自分类Dev

在React State中传递html标签的正确方法是什么?

来自分类Dev

React Native-将元素添加到用useState制作的数组中的正确方法是什么?

来自分类常见问题

React中引用的正确原型是什么?

来自分类Dev

发布 apk 无法打开,在 React Native 中安装了 firebase

来自分类Dev

react native:从对象显示特定项目的正确方法是什么?

来自分类Dev

在React Native中将数据源加载到listView的正确方法是什么

来自分类Dev

在React Native中生成发布apk

来自分类Dev

在React / React Native中获取道具的最佳方法是什么

来自分类Dev

在React中的许多其他组件中调用组件方法的正确方法是什么?

来自分类Dev

在package.json中为react组件添加依赖项以做出反应的正确方法是什么

来自分类Dev

在React中在onKeyPress上键入检查事件的正确方法是什么?

来自分类Dev

在带有Hook的React中获取JSON的正确方法是什么?

来自分类Dev

在React / Bootstrap 4中,禁用按钮以防止重复提交表单的正确方法是什么?

来自分类Dev

在 React 中为更新的组件执行 API 请求的正确方法是什么?

来自分类Dev

React Components-创建它们的正确方法是什么?

来自分类Dev

识别React关键属性的正确方法是什么?

来自分类Dev

在React中提升道具的正确方法是什么?

来自分类Dev

使用新的 React 钩子 useContext 的正确方法是什么?

来自分类Dev

将单个React Native视图添加到现有Android应用程序的正确方法是什么?

来自分类Dev

在React中渲染之前调用函数的正确位置是什么?

来自分类Dev

升级React Native项目的安全方法是什么?

来自分类Dev

React Native中样式的默认样式单位是什么?

来自分类Dev

React Native中的scrollXAnimated的打字稿键入是什么?

来自分类Dev

React Native Android:静态图像未在正式发布的APK中显示

Related 相关文章

  1. 1

    React-Native Android 生成签名 apk:构建 Gradle 错误

  2. 2

    在React Native组件中处理HTTP响应的正确方法是什么

  3. 3

    在 React Native Image 组件中处理个人资料图像的正确方法是什么?

  4. 4

    在React State中传递html标签的正确方法是什么?

  5. 5

    在TypeScript中定义React组件的contextTypes的正确方法是什么?

  6. 6

    在React State中传递html标签的正确方法是什么?

  7. 7

    React Native-将元素添加到用useState制作的数组中的正确方法是什么?

  8. 8

    React中引用的正确原型是什么?

  9. 9

    发布 apk 无法打开,在 React Native 中安装了 firebase

  10. 10

    react native:从对象显示特定项目的正确方法是什么?

  11. 11

    在React Native中将数据源加载到listView的正确方法是什么

  12. 12

    在React Native中生成发布apk

  13. 13

    在React / React Native中获取道具的最佳方法是什么

  14. 14

    在React中的许多其他组件中调用组件方法的正确方法是什么?

  15. 15

    在package.json中为react组件添加依赖项以做出反应的正确方法是什么

  16. 16

    在React中在onKeyPress上键入检查事件的正确方法是什么?

  17. 17

    在带有Hook的React中获取JSON的正确方法是什么?

  18. 18

    在React / Bootstrap 4中,禁用按钮以防止重复提交表单的正确方法是什么?

  19. 19

    在 React 中为更新的组件执行 API 请求的正确方法是什么?

  20. 20

    React Components-创建它们的正确方法是什么?

  21. 21

    识别React关键属性的正确方法是什么?

  22. 22

    在React中提升道具的正确方法是什么?

  23. 23

    使用新的 React 钩子 useContext 的正确方法是什么?

  24. 24

    将单个React Native视图添加到现有Android应用程序的正确方法是什么?

  25. 25

    在React中渲染之前调用函数的正确位置是什么?

  26. 26

    升级React Native项目的安全方法是什么?

  27. 27

    React Native中样式的默认样式单位是什么?

  28. 28

    React Native中的scrollXAnimated的打字稿键入是什么?

  29. 29

    React Native Android:静态图像未在正式发布的APK中显示

热门标签

归档