code

개발 서버 없이 장치에 서명되지 않은 apk를 빌드하고 설치하시겠습니까?

starcafe 2023. 10. 15. 17:31
반응형

개발 서버 없이 장치에 서명되지 않은 apk를 빌드하고 설치하시겠습니까?

제가 리액티브가 처음이라 스텝에 이상이 있으면 알려주세요.

나는 문서에 따라 명령어를 사용하여 반응 네이티브 안드로이드 앱을 만들었습니다.

반응형 native 안드로이드

장치에서 실행하는 동안 다음 명령이 사용되었습니다.

반응-native 런-

내 프로젝트 폴더/ android/ app/ 빌드/ outputs/ apk에 있는 2 apk 파일의 출력을 제공합니다.

enter image description here

설치 후 이 apk를 설치할 때 JS 번들에 연결할 개발 서버를 요청합니다.하지만 사용자가 apk를 설치하면 모든 것이 완료되기 때문에 개발 서버와 씨름할 필요가 없습니다.

스택 오버플로우 질문을 좀 거쳤으나 개발 서버가 필요 없는 서명되지 않은 apk를 구축하는 데는 도움이 되지 않습니다.

리액티브 네이티브에서 에이피를 구축하고 서명하지 않은 방법을 찾는 것을 도와줄 수 있습니까?

디버그 빌드를 위한 번들을 수동으로 만들어야 합니다.

번들 디버그 빌드:

#React-Native 0.59
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res

#React-Native 0.49.0+
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

#React-Native 0-0.49.0
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

그런 다음 번들링 후 APK를 구축합니다.

$ cd android
#Create debug build:
$ ./gradlew assembleDebug
#Create release build:
$ ./gradlew assembleRelease #Generated `apk` will be located at `android/app/build/outputs/apk`

추신: 그라들 스크립트를 수정하는 것도 방법이 될 수 있습니다.

반응 버전 0.62.1

루트 프로젝트 디렉토리에

디렉토리를 만들지 않으면 디렉토리 안드로이드/app/src/main/assets/가 이미 있는지 확인하고 새 파일을 만든 후 다음과 같이 저장합니다.index.android.bundleAndroid/app/src/main/assets/index와 같이 파일을 입력합니다. android.보따리를 꾸리다

그 후에 이것을 실행합니다.

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 && ./gradlew assembleDebug

을 수 .apkapp/build/outputs/apk/debug/app-debug에서.apk

그 단계를 따라주시기 바랍니다.

js를 묶습니다.

프로젝트 루트에 index. android.js가 있는 경우 실행합니다.

react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

프로젝트 루트에 index.js가 있으면 실행합니다.

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

디버그 apk 만들기:

cd android/
./gradlew assembleDebug

그러면 여기서 apk를 찾을 수 있습니다.

cd app/build/outputs/apk/

저와 함께 프로젝트 디렉토리에서 다음 명령을 실행합니다.

반응 네이티브 이전 버전의 경우(루트에 index.android.js가 표시됨):

mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && cd android && ./gradlew clean assembleRelease && cd ../

반응 네이티브 새 버전의 경우(root에 index.js만 표시됨):

mkdir -p android/app/src/main/assets && rm -rf android/app/build && 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 && ./gradlew clean assembleRelease && cd ../

apk 파일은 다음 위치에서 생성됩니다.

  • 그라들 < 3.0 : 안드로이드/앱/빌드/출력/apk/
  • 그라들 3.0+: 안드로이드/앱/빌드/출력/apk/릴리즈/

번째 응답을 따라간 후, 다음을 사용하여 앱을 실행할 수 있습니다.

react-native run-android --variant=debug

그리고 당신의 앱은 패키지 없이 실행될 것입니다.

반응 네이티브 0.57 현재 gradle이 번들을 찾을 것으로 예상하는 디렉토리와 자산이 변경되었기 때문에 이전에 제공된 답변 중 어떤 것도 더 이상 작동하지 않습니다.

리액티브 네이티브 번들이 없는 간편한 방법

은 입니다.react-native bundle할 수 있습니다. 단순히합니다만 . 하지만 단순히 당신의 명령을 수정하는 것으로.app/build.gradle일.

project.ext.react지도를 그리다app/build.gradle파일을 추가합니다.bundleInDebug: true만약 당신이 그것이 당신이 원하지 않는다면.--dev 및 드음).devDisabledInDebug: true동일한 맵으로 진입합니다.

반응성 네이티브 번들 포함

로 를 경우.react-native bundlee./gradlew assembleDebug번들과 자산을 사용하여 APK를 생성하려면 번들과 자산을 올바른 경로에 배치해야 합니다. 그래들이 찾을 수 있는 곳에서 해당 번들과 자산을 찾을 수 있습니다.

네이티브 으로 이 는 0.57입니다.android/app/build/generated/assets/react/debug/index.android.js

그리고.android/app/build/generated/res/react/debug자산에 대해서하기 위한 는 다음과 같습니다따라서 번들 및 자산과 함께 APK를 수동으로 번들링하고 구축하는 전체 명령어는 다음과 같습니다.

react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/generated/assets/react/debug/index.android.bundle --assets-dest ./android/app/build/res/react/debug

그리고 나서.

./gradlew assembleDebug

번들 및 자산 경로

수 있습니다.gradle . 길들이 .react.gradle에에 을 넣습니다.node_modules/react-native디렉토리 입니다..def jsBundleDir =그리고.def resourcesDir = 찾는 gradle합니다.

dev-server 없이 디버그 APK 생성

개발 서버 없이 실행할 수 있는 디버그 APK(테스트용)를 정말로 생성하고 싶다면, Congrats!당신을 도우러 왔습니다.:)
다에 두 말하고 있습니다.react-native bundle ...그리고 나서.gradlew assembleDebug그러나 개발 서버가 없으면 생성된 APK는 여전히 작동하지 않습니다.많은 조사와 시도 끝에 그라들 파일(2단계)을 변경해야 한다는 것을 알게 되었습니다.다음 단계만 수행하면 됩니다.

  1. 에서는 로 ./android/app/src/maineassets
  2. 편집하다android > app > build.gradle
project.ext.react = [
    ...
    bundleInDebug: true, // add this line
]
  1. 반응 네이티브 프로젝트의 루트 디렉터리에서 이 명령 실행
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
  1. Android .cd android
  2. 그리고 다음 명령을 실행합니다.gradlew assembleDebug
    에서 에서 assemblyDebug오)

이렇게 하면 생성됩니다.app-debug.apk줄을 지어 들어오다android/app/build/outputs/apk/debugdev-server리 할 수

이에 사용할 수 있는 확장 기능은 두 가지입니다.다음을 설정하기 위해 반응 네이티브에 추가됩니다.

  1. disableDevInDebug: true: 디버그 빌드에서 개발 서버를 사용하지 않도록 설정합니다.유형
  2. bundleInDebug: true: debug buildType에 jsbundle을 추가합니다.

그래서, 당신의 마지막.project.ext.react인에android/app/build.gradle다 와 같이 .

project.ext.react = [
    enableHermes: false,  // clean and rebuild if changing
    devDisabledInDev: true, // Disable dev server in dev release
    bundleInDebug: true, // add bundle to dev apk
]

다른 사용자가 최근에 이와 같은 문제에 휘말릴 경우를 대비하여 React Native 0.59.8(RN 0.60으로 테스트됨)을 사용하고 있으며 다른 답변 중 일부를 확인할 수 있습니다. 다음 단계가 있습니다.

  1. 장치에 설치된 최신 컴파일된 버전의 앱을 제거합니다.

  2. 실행.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

  3. cd android/ && ./gradlew assembleDebug

  4. 앱 디버그를 가져옵니다.apk in 폴더 안드로이드/앱/빌드/ outputs/apk/

행운을 빕니다.

Windows(윈도우) 사용자의 경우 모든 단계가 제대로 수행된 경우: https://facebook.github.io/react-native/docs/signed-apk-android.html

실행만 하면 됩니다. gradlew assembleRelease

파일은 다음과 같습니다.

  • 앱 출시apk
  • 앱 릴리스 미정렬의apk

위치: E:\YourProjectName\android\app\build\outputs\apk

모바일에서 실행할 수 있도록 테스트 목적으로 서명되지 않은 apk 버전을 생성할 수 있습니다.

처음에는 여기서 가장 많이 언급된 빨간색 화면 오류가 발생했습니다. 하지만 여기서 언급된 것과 동일한 것을 따랐고 그것은 나에게 효과가 있었습니다.

작업 디렉토리의 콘솔에서 다음 네 가지 명령 실행

react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

cd android

gradlew assembleDebug

gradlew assembleRelease

그런 다음 APK 파일은 안드로이드\app\build\outputs\apk\debug\app-debug에서 생성됩니다.apk

꽤도 .at least on page 1저한테는 통하지 않는군된 성적 를 좀 더 보았습니다.그래서 리액트에 의해 등록된 성적 과제를 좀 더 깊이 들여다 보았습니다.

만 더하면 됩니다.bundleInDebug : true만 G의이에서 바와 .

./gradlew assembleDebug아니면gradle.bat assembleDebugAndroid 폴더의 사용자 환경을 기반으로 합니다.

하면 가 가능한 이 생성됩니다.android/app/build/outputs/apk/debug

리액트 네이티브 0.55.4에 있습니다. 기본적으로 수동으로 번들을 구성해야 했습니다.

react-native bundle --dev false --platform android --entry-file index.js --bundle- 
output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets- 
dest ./android/app/build/intermediates/res/merged/debug

그런 다음 usb를 통해 장치를 연결하고 usb 디버깅을 활성화합니다.합니다를 하여 연결된 합니다.adb devices.

으로 실행 react-native run-android그 apk로 잘 할 수 .

참고:

  • 은 0.0부터 진입점은 단일입니다.index.js
  • gradlew assembleRelease은 apk합니다를 설치할 수 합니다.

빌드를 변경하는 솔루션을 찾았습니다.다음과 같은 유형:

buildTypes {
  release {
    signingConfig signingConfigs.release
  }
}

더하다devDisabledInDebug: true.project.ext.react파일에 있습니다를 만들다

dev-server 없이 디버그 APK 생성

개발 서버 없이 실행할 수 있는 디버그 APK(테스트 목적)를 생성하려는 경우.

  1. 에서는 로 ./android/app/src/maineassets
  2. 편집하다android > app > build.gradle
universalApk true  // If true, also generate a universal APK
  1. 반응 네이티브 프로젝트의 루트 디렉터리에서 이 명령 실행
npx 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
  1. Android .cd android
  2. 그리고 다음 명령을 실행합니다../gradlew assembleDebug
    에서 에서 assemblyDebug오)

그냥 이렇게 해요.

그리고 앱을 장치에 설치하려면 cmd만 실행하면 됩니다.

adb install 'path/add-debug.apk'

나에게도 일어난 일인데, 내가 변수를 가져오는 것을 잊어버린 것 같습니다.

언급URL : https://stackoverflow.com/questions/35283959/build-and-install-unsigned-apk-on-device-without-the-development-server

반응형