Làm cách nào tôi có thể tạo apk có thể chạy mà không cần máy chủ có Reac -igen?


210

Tôi đã xây dựng ứng dụng của mình, tôi có thể chạy nó trên trình giả lập cục bộ của mình (và cả trên thiết bị Android của tôi trong cùng một mạng bằng cách thay đổi máy chủ gỡ lỗi).

Tuy nhiên, tôi muốn xây dựng một APK mà tôi có thể gửi cho ai đó mà không cần truy cập vào máy chủ phát triển và tôi muốn họ có thể kiểm tra ứng dụng.

Tôi thấy có một phần Sử dụng gói ngoại tuyến trên phần tài liệu iOS. Nhưng tôi không thể tìm ra cách để thực hiện điều tương tự cho Android. Điều này có thể không? Nếu vậy thì thế nào?

CẬP NHẬT: Về câu trả lời cho câu hỏi này ( Android không tải được gói JS ), người ta nói rằng gói ngoại tuyến có thể được tải xuống từ máy chủ phát triển. Nhưng khi tôi có được gói từ máy chủ phát triển, các tệp hình ảnh không thể được tải.


kiểm tra ví dụ đơn giản này để tạo tệp apk: React Native Generate Release APK thông qua Windows Command Prompt Android
sumit kumar pradhan

Câu trả lời:


202

Theo câu trả lời của Aditya Singh, apk được tạo (không dấu) sẽ không cài đặt trên điện thoại của tôi. Tôi đã phải tạo một apk có chữ ký bằng cách sử dụng các hướng dẫn ở đây .

Sau đây làm việc cho tôi:

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

Đặt my-release-key.keystoretệp dưới android/app thư mục trong thư mục dự án của bạn. Sau đó chỉnh sửa tệp ~/.gradle/gradle.propertiesvà thêm các mục sau (thay thế **** bằng mật khẩu lưu trữ khóa chính xác, bí danh và mật khẩu khóa)

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****

Nếu bạn đang sử dụng MacOS, bạn có thể lưu mật khẩu của mình vào móc khóa bằng cách sử dụng các hướng dẫn tại đây thay vì lưu trữ trong bản rõ.

Sau đó chỉnh sửa app / build.gradle và đảm bảo các mục sau đây (các phần có ký hiệuConConfigs SignConfig có thể cần được thêm vào):

...
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
        }
    }
}
...

Sau đó chạy lệnh cd android && ./gradlew assembleRelease,

Đối với Windows 'cd android' và sau đó chạy gradlew assembleReleaselệnh và tìm apk đã ký của bạn bên dướiandroid/app/build/outputs/apk/app-release.apk


10
Đây là câu trả lời cập nhật và chính xác nhất. Cảm ơn.
Gokhan Sari

2
app-release.apk không cài đặt. vấn đề sẽ là gì?
Balasubramanian

1
Tôi tạo apk, tải lên google play, nhưng nó không hoạt động ... một số gợi ý?
Italo Rodrigo

2
Tôi không thể tìm thấy thư mục android / app, cái này nằm ở đâu?
DHLopez

6
Cảm ơn, không phải vậy, nhưng tôi thấy đó là vì tôi đang sử dụng expo để thử nghiệm và npm tạo ứng dụng gốc có cấu trúc khác, vì vậy để tham khảo trong tương lai, nếu có ai gặp sự cố này, chỉ cần đẩy dự án của bạn và sau đó bạn nhận được những thư mục đó, thật thú vị khi hướng dẫn bảo bạn sử dụng npm để tạo ứng dụng và sau đó nói về một cấu trúc không tồn tại khi bạn sử dụng nó
DHLopez 27/2/18

193

Bạn sẽ phải tạo một khóa để ký apk. Sử dụng bên dưới để tạo khóa của bạn:

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

Sử dụng mật khẩu khi được nhắc

Khi khóa được tạo, sử dụng nó để tạo bản dựng có thể cài đặt:

 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/

Tạo bản dựng bằng cách sử dụng gradle

 cd android && ./gradlew assembleRelease

Tải APK lên điện thoại của bạn. Các -rlá cờ sẽ thay thế các ứng dụng hiện tại (nếu nó tồn tại)

adb install -r ./app/build/outputs/apk/app-release-unsigned.apk

Một mô tả chi tiết hơn được đề cập ở đây: https://facebook.github.io/react-native/docs/sign-apk-android.html

CẬP NHẬT : Dựa trên ý kiến ​​của @shashuec và @Fallen

nếu bạn gặp lỗi

ENOENT: không có tệp hoặc thư mục như vậy, mở 'android / app / src / main / nội dung / index.android.bundle'

chạy mkdir android / app / src / main / nội dung


4
Cảm ơn rất nhiều vì điều này, nó đã làm việc cho tôi. Vấn đề duy nhất tôi nhận được là thông báo này: "Thiếu các đối số bắt buộc: đầu ra bó" vi phần phản ứng gốc, nhưng được giải quyết bằng cách xóa các ký hiệu 2 "\"
guinunez

58
Tôi ngạc nhiên bởi tài liệu nghèo nàn của Facebook nơi họ hoàn toàn bỏ qua react-native bundlephần này. Cảm ơn câu trả lời của bạn!
Technophyle

2
Tôi đang làm việc với các cửa sổ, cũng làm việc với điều này gradlew.bat assembleRelease.
Tabares

12
Tôi nhận được lỗi này Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] . khi tôi cố gắng cài đặt apk.
Developernaren

18
nếu bạn gặp lỗi khi ENOENT: no such file or directory, open 'android/app/src/main/assets/index.android.bundle' chạymkdir android/app/src/main/assets
shashuec 22/03/2017

31

Bạn chỉ nên sử dụng android studio cho quá trình này. Nó chỉ đơn giản hơn. Nhưng trước tiên hãy chạy lệnh này trong thư mục ứng dụng gốc phản ứng của bạn:

Đối với phiên bản mới hơn của Reac -igen (ví dụ phản ứng gốc 0.49.0 và cứ thế ...)

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

Đối với phiên bản cũ hơn của phản ứng gốc (0.49.0 trở xuống)

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/

Sau đó, sử dụng android studio để mở thư mục 'android' trong thư mục ứng dụng gốc, nó sẽ yêu cầu nâng cấp lớp và một số nội dung khác. đi đến bản dựng-> Tạo APK đã ký và làm theo hướng dẫn từ đó. Nó thực sự thẳng về phía trước.


Tôi cũng sử dụng Android Studio và Xcode để xây dựng các phiên bản phát hành cho ứng dụng React Native của mình ... nhưng thế hệ Android có thể được thực hiện với một tập lệnh như được mô tả bởi @Aditya Singh
WiRa

Điều này không còn cần thiết proandroiddev.com/ Hãy
onmyway133

30

Chạy lệnh này:

react-native run-android --variant=release

Lưu ý rằng --variant=releasechỉ khả dụng nếu bạn đã thiết lập đăng nhập cd android && ./gradlew assembleRelease.


@jasan Tôi đã tìm thấy một vấn đề khác giống như của bạn ở đây: github.com/facebook/react-native/issues/11586 Điều này có thể khắc phục sự cố: cd android && ./gradlew installRelease
Ahmed Ashraf

Tôi đã thử cd android && ./gradlew installReleasevà gặp lỗi nàyTask 'assembleRelease.' not found in root project 'project'. Some candidates are: 'assembleRelease'.
ThomasReggi

Có, bạn phải tạo tệp Keystore. và chỉnh sửa tập tin gradle. Thực hiện theo các hướng dẫn để khắc phục vấn đề này. facebook.github.io/react-native/docs/sign-apk-android.html
Ahmed Ashraf

21

cho React Native 0,49 trở lên

bạn nên vào thư mục dự án trên terminal và chạy lệnh đó

1 - mkdir android/app/src/main/assets
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

nếu dưới 0,49

  1 - mkdir android/app/src/main/assets
  2 - 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

Sau đó, sử dụng android studio để mở thư mục 'android' trong thư mục ứng dụng gốc, nó sẽ yêu cầu nâng cấp lớp và một số nội dung khác. đi đến bản dựng-> Tạo APK đã ký và làm theo hướng dẫn từ đó. Con okey đó.


Đây là một cách dễ dàng để làm điều đó nếu bạn đã cài đặt Android Studio (sẽ chăm sóc sử dụng hoặc tạo Keystore). Cảm ơn.
leosok

Này .. có một câu hỏi nhanh .. các bước trên có cần thiết không? Tài liệu gốc phản ứng không đề cập đến nó ở bất cứ đâu ..
Pravin

1
@pravin không bắt buộc, đây là một trong những phương thức tạo apk.
Yasin Ugurlu

12

Nếu bạn nhận được Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES].

Tôi đã thử sử dụng phương pháp tạo tệp APK không dấu của @ Aditya và cài đặt tệp đó, nhưng khi tôi cài đặt nó trên máy tính bảng Android của mình, nó đã báo lỗi Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES].

Tôi tưởng tượng điều này là do tệp APK chưa được ký và máy tính bảng không hài lòng với điều này. Vì vậy, sau khi tạo tệp bó React Native, tôi có thể tạo tệp APK đã ký, như bình thường, thông qua Android Studio.

Nhân tiện, ứng dụng của chúng tôi là một ứng dụng Android hoạt động đầy đủ đã tồn tại trong Cửa hàng Play và chúng tôi chỉ thêm React Native vào nó trong các miếng có kích thước vừa phải, bởi vì nó thật tuyệt vời.

Vì vậy, để tóm tắt, đây là các bước của tôi:

1) Tạo gói React Native:

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bu‌​ndle --assets-dest android/<your-package-name>/src/main/res/ 

2) Tạo tệp APK đã ký từ Android Studio.

3) Cài đặt tệp APK đã ký vào thiết bị USB:

adb -d install -r <path_to_signed_apk> 

Các -dlá cờ chỉ nói adbđể cài đặt trên thiết bị USB kèm theo, trong trường hợp bạn có một giả lập chạy là tốt. Nếu bạn muốn cài đặt bất cứ thứ gì giả lập, hãy thả -dcờ.

4) Lợi nhuận!


11

Hãy thử bên dưới, nó sẽ tạo ra một ứng dụng-debug.apk trên thư mục root / android / app / build / output / apk / debug của bạn

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

sau đó vào thư mục android và chạy

./gradlew assembleDebug


APK được tạo ở đây cần Metro để chạy ... vì vậy tôi nghĩ rằng vẫn đang sử dụng máy chủ dev
nerdlinger

11

Nếu bất kỳ ai muốn xây dựng mà không có khóa playstore thì lệnh này sẽ rất hữu ích.

# react-native run-android --variant=release

Sau khi xây dựng xong, bạn có thể tìm thấy apk trong tập tin xây dựng phát hành.


7

Đi đến thư mục dự án và chạy lệnh:

cd android && ./gradlew assembleRelease

Điều này sẽ tạo ra một apk không dấu nếu bạn không thực hiện cấu hình bắt buộc (như Pedram đã nói).
Gokhan Sari

Nó sẽ tạo gỡ lỗi, phát hành và apk không dấu trong thư mục được tạo. Ý định của tôi là chia sẻ apk phát hành.
Sidharth Taneja

6

Nếu bạn gặp lỗi liên quan đến index.android.js. Điều này là do bạn đang sử dụng phiên bản gốc React (Tôi đang sử dụng 0.55.4) Chỉ cần thay thế "index.android.js" thành "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/

5

Tôi có một giải pháp khác: - Tạo khóa ký Bạn có thể tạo khóa ký riêng bằng keytool. Trên Windows keytool phải được chạy từ C: \ Program Files \ Java \ jdkx.x.x_x \ bin.

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

Đặt tệp my-release-key.keystore trong thư mục android / app trong thư mục dự án của bạn.

Chỉnh sửa tệp android / app / build.gradle trong thư mục dự án của bạn và thêm cấu hình ký,

android {
....
signingConfigs { 
  release { 

      storeFile file('my-release-key.keystore') 
      storePassword 'yourpassword' 
      keyAlias 'my-key-alias' 
      keyPassword 'yourpassword' 

  } 
}}}


buildTypes {release {signingConfig signingConfigs.release}}

và chạy

gradlew assembleRelease

Điều này sẽ cung cấp cho bạn hai tệp tại android \ app \ build \ output \ apk app-release.apk và app-release-unsign.apk hiện cài đặt app-release.apk trong thiết bị Android của bạn.


Thư mục ứng dụng android \ ở đâu? Tôi không thấy nó trong dự án của mình (tôi chỉ thấy node_modules, và bên trong nó, không có android / ứng dụng)
DHLopez

1
@DHLopez bạn phải sử dụng dự án React Native thuần túy để có quyền truy cập vào thư mục Android. Nếu bạn đang sử dụng Expo, thì bạn phải tách dự án Expo bằng cách sử dụng đẩy expo.
fxbayuanggara

5

Hy vọng nó sẽ giúp người mới bắt đầu

Tài liệu chính thức ở đây

Nếu bạn không có kho khóa hơn sử dụng trước khi lệnh khác bỏ qua

Tạo khóa ký / tệp kho khóa Bạn có thể tạo khóa ký riêng bằng keytool. Trên Windows keytool phải được chạy từ C: \ Program Files \ Java \ jdkx.x.x_x \ bin.

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

bạn sẽ nhận được một tập tin như my-release-key.keystore

Thiết lập các biến lớp Đặt tệp my-release-key.keystore trong thư mục android / app trong thư mục dự án của bạn. Chỉnh sửa tệp android / gradle.properies và thêm phần sau (thay thế ***** bằng mật khẩu lưu trữ khóa chính xác, bí danh và mật khẩu khóa), enableAapt2 đặt false là giải pháp thay thế, vì vấn đề phiên bản Android gradle 3.0

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

android.enableAapt2=false

sau đó thêm các ứng dụng này / buid.gradle (ứng dụng)

bên dưới cấu hình mặc định

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
            }
        }

và phát hành loại Xây dựng bên trong {}

 signingConfig signingConfigs.release

sau đó chỉ cần chạy lệnh này trong thiết bị đầu cuối studio android Dưới đây các lệnh sẽ tự động hóa trên tất cả các câu trả lời

nếu cửa sổ

cd android
gradlew assembleRelease

nếu linux / mac

$ cd android
$ ./gradlew assembleRelease

Nếu bạn có bất kỳ lỗi nào, hãy xóa tất cả thư mục bản dựng và chạy lệnh

gradlew clean

hơn một lần nữa

gradlew assembleRelease

1
gradle clean... tôi đã vật lộn với điều này trong một thời gian khi nhận được những lỗi xây dựng đó, cảm ơn bạn rất nhiều vì câu trả lời này !!
mọt sách

5

Đối với các phiên bản gốc phản ứng mới nhất để đóng gói dự án

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/

iOS

react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios


3

Cách GUI trong Android Studio

  • Mở phần ứng dụng Android của ứng dụng React Native trong Android Studio (điều này chỉ có nghĩa là mở thư mục Android của dự án gốc phản ứng của bạn với Android Studio)
  • Chuyển đến tab "Xây dựng" ở trên cùng
  • Chuyển xuống "Gói xây dựng / APK (s)"
  • Sau đó chọn "Build APK (s)"
  • Điều này sẽ hướng dẫn bạn qua quy trình xác định vị trí các phím của bạn để ký APK hoặc tạo các khóa của bạn nếu bạn chưa có chúng, tất cả đều rất đơn giản. Nếu bạn chỉ đang thực hành, bạn có thể tạo các khóa này và lưu chúng vào máy tính để bàn của bạn.
  • Khi quá trình đó hoàn tất và nếu quá trình xây dựng thành công, sẽ có một cửa sổ bật xuống bên dưới trong Android Studio. Nhấp vào liên kết bên trong có nội dung "định vị" (APK)
  • Điều đó sẽ đưa bạn đến tệp apk, chuyển nó sang thiết bị Android của bạn. Sau đó điều hướng đến tệp đó trên thiết bị Android và cài đặt nó.

0

Sử dụng android studio để tạo apk có chữ ký cho dự án android của Reac cũng là một lựa chọn tốt và dễ dàng, mở dự án android của Reac Reactor trong android studio và tạo keystroke và apk đã ký.


-2

Tham khảo tài liệu chính thức về phản ứng gốc về Tạo APK đã ký

APK đã tạo React-Native


Đây không phải là một câu trả lời hay, ngay cả khi nó đã giải quyết câu hỏi của người dùng mà nó không có. Họ muốn xây dựng một APK gỡ lỗi độc lập, không phải là một bản phát hành.
dùng37309
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.