>

앱을 만들었습니다. 로컬 시뮬레이터 (및 디버그 서버를 변경하여 동일한 네트워크 내의 Android 기기에서도)에서 실행할 수 있습니다.

그러나 개발 서버에 액세스하지 않고도 다른 사람에게 보낼 수있는 APK를 작성하고 응용 프로그램을 테스트 할 수 있기를 원합니다.

문서의 iOS에서 오프라인 번들 사용 섹션이 있습니다. 그러나 안드로이드에서 똑같이 달성하는 방법을 알 수 없었습니다. 이게 가능해? 그렇다면 어떻게해야합니까?

업데이트 :이 질문에 대한 답변 ( 응답 네이티브 안드로이드가 JS 번들을로드하지 못했습니다 ) 오프라인 번들은 개발 서버에서 다운로드 할 수 있다고합니다. 그러나 개발 서버에서 번들을 확보하면 이미지 파일을로드 할 수 없습니다.


  • 답변 # 1

    Aditya Singh의 답변에 따라 생성 된 (서명되지 않은) apk가 휴대 전화에 설치되지 않습니다. 여기 지침을 사용하여 서명 된 apk를 생성해야했습니다.

    다음은 나를 위해 일했습니다 :

    $ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
    
    

    와이즈 비즈 배치   my-release-key.keystore 에 파일     프로젝트 폴더의 디렉토리. 그런 다음 파일을 편집하십시오.     와이즈 비즈  다음을 추가하십시오 (*** 교체     올바른 키 저장소 비밀번호, 별명 및 키 비밀번호를 사용하여)

    android/app
    
    

    MacOS를 사용하는 경우 비밀번호를 일반 텍스트로 저장하는 대신 여기 지침에 따라 키 체인에 비밀번호를 저장할 수 있습니다.

    app/build.gradle을 편집하고 다음이 있는지 확인하십시오 (signingConfigs signingConfig가있는 섹션을 추가해야 할 수도 있음).

    ~/.gradle/gradle.properties
    
    

    그런 다음 MYAPP_RELEASE_STORE_FILE=my-release-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=**** MYAPP_RELEASE_KEY_PASSWORD=**** 명령을 실행하십시오.  ,

    Windows의 경우'cd android'를 실행 한 다음 ... android { ... defaultConfig { ... } signingConfigs { release { if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { storeFile file(MYAPP_RELEASE_STORE_FILE) storePassword MYAPP_RELEASE_STORE_PASSWORD keyAlias MYAPP_RELEASE_KEY_ALIAS keyPassword MYAPP_RELEASE_KEY_PASSWORD } } } buildTypes { release { ... signingConfig signingConfigs.release } } } ... 를 실행하십시오.   cd android && ./gradlew assembleRelease 에서서명 된apk를 찾습니다.

  • 답변 # 2

    apk에 서명하려면 키를 만들어야합니다. 아래를 사용하여 키를 만드십시오.

    gradlew assembleRelease
    
    

    프롬프트가 표시되면 암호를 사용하십시오

    키가 생성되면 키를 사용하여 설치 가능한 빌드를 생성하십시오 :

    android/app/build/outputs/apk/app-release.apk
    
    

    gradle을 사용하여 빌드 생성

    keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000
    
    

    휴대 전화에 APK를 업로드하십시오. 와이즈 비즈  플래그는 기존 앱을 대체합니다 (있는 경우).

    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/
    
    

    자세한 설명은 여기에 있습니다 : https://facebook.github.io/react-native/docs/signed-apk-android.html

    업데이트: @shashuec 및 @Fallen의 의견을 기반으로

    오류가 발생하면

    와이즈 비즈

    mkdir android/app/src/main/assets를 실행

  • 답변 # 3

    이 과정에서 android studio를 사용해야합니다. 더 간단합니다. 하지만 먼저 반응 네이티브 앱 디렉토리에서이 명령을 실행하십시오 :

    cd android && ./gradlew assembleRelease
    
    

    그런 다음 android studio를 사용하여 기본 앱 디렉토리에 반응하는 'android'폴더를 열면 gradle 및 기타 항목을 업그레이드하라는 메시지가 표시됩니다. 빌드->서명 된 APK 생성으로 이동하여 지침을 따르십시오. 정말 간단합니다.

  • 답변 # 4

    이 명령을 실행하십시오 :

    -r
    
    
    와이즈 비즈 와이즈 비즈  서명을 설정 한 경우에만 사용할 수 있습니다    adb install -r ./app/build/outputs/apk/app-release-unsigned.apk 와 함께 .

  • 답변 # 5

    React Native 0.49 이상

    터미널의 프로젝트 디렉토리로 가서 그 명령을 실행해야합니다

    ENOENT: no such file or directory, open 'android/app/src/main/assets/index.android.bundle'

    0.49 미만인 경우

    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/
    
    

    그런 다음 android studio를 사용하여 기본 앱 디렉토리에 반응하는 'android'폴더를 열면 gradle 및 기타 항목을 업그레이드하라는 메시지가 표시됩니다. 빌드->서명 된 APK 생성으로 이동하여 지침을 따르십시오. 알았어.

    react-native run-android --variant=release

  • 이전 selenium - 파이썬 코드로 가져올 때 robotapi 모듈을 찾을 수 없습니다
  • 다음 python - 메소드에 두 개의 데코레이터가있을 때 왜 스핑크스 자동 문서가 데코레이터의 문서 문자열을 출력합니까?