簡體   English   中英

react-native編譯的apk不會在設備上運行

[英]react-native compiled apk wont run on device

使用react-native教程進行反應( react-native 0.30 ):我創建的應用程序無法在Android設備上安裝,這里是步驟:

  1. react-native init演示
  2. cd android
  3. gradlew assembleRelease
  4. 將unsigned apk復制到移動設備(htc m8 mini 2)

並得到結果: Application demo was not installed

基於這個類似的問題apk沒有運行在移動android反應原生 :Unsigned apk將無法安裝在移動設備上。

但是為什么我能夠運行Ionic 2制作的非侵權應用程序?

有什么問題?

在Ionic 2中你運行一個調試apk,它不可能運行一個未簽名的apk。

你可以做的反應是簽署你的apk並運行。

第一個設置可能有點復雜,但在完成設置后很容易在需要時生成簽名的apk。

您可以按照以下說明簽署您的apk:

生成簽名密鑰

您可以使用keytool生成私有簽名密鑰。

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

此命令會提示您輸入密鑰庫和密鑰的密碼,並提供密鑰的“可分辨名稱”字段。 然后,它將密鑰庫生成為名為my-release-key.keystore的文件。

密鑰庫包含一個密鑰,有效期為10000天。 別名是您稍后在簽署應用時使用的名稱,因此請記住注意別名。

注意:請記住將密鑰庫文件保密,並且永遠不要將其提交給版本控制。

設置gradle變量

  1. my-release-key.keystore文件放在項目文件夾中的android/app目錄下。
  2. 編輯文件~/.gradle/gradle.properties並添加以下內容(用正確的密鑰庫密碼,別名和密鑰密碼替換*****),

MYAPP_RELEASE_STORE_FILE =我的釋放,key.keystore

MYAPP_RELEASE_KEY_ALIAS =我的鑰匙別名

MYAPP_RELEASE_STORE_PASSWORD = *****

MYAPP_RELEASE_KEY_PASSWORD = *****

這些將成為全局gradle變量,我們稍后可以在gradle配置中使用它來簽署我們的應用程序。

有關保存密鑰庫的注意事項:在Play商店中發布應用程序后,如果要在任何時候更改簽名密鑰,則需要使用其他軟件包名稱重新發布應用程序(丟失所有下載和評級)。 所以備份你的密鑰庫,不要忘記密碼。 關於安全性的注意事項:如果您不想以明文存儲密碼並且正在運行OSX,則還可以將您的憑據存儲在Keychain Access應用程序中。 然后你可以跳過~/.gradle/gradle.properties.最后兩行~/.gradle/gradle.properties.

將簽名配置添加到應用程序的gradle配置編輯項目文件夾中的文件android/app/build.gradle並添加簽名配置,

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            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
        }
    }
}
...

生成發布APK

只需在終端中運行以下命令:

$ cd android && ./gradlew assembleRelease

Gradle的assembleRelease會將運行您的應用程序所需的所有JavaScript捆綁到APK中。 如果您需要更改捆綁JavaScript包和/或可繪制資源的方式(例如,如果您更改了默認文件/文件夾名稱或項目的一般結構),請查看android / app / build.gradle以查看如何更新它以反映這些變化。

生成的APK可以在android/app/build/outputs/apk/app-release.apk ,並准備好分發。

測試應用的發布版本

在將發布版本上載到Play商店之前,請確保徹底測試。 使用以下方法將其安裝在設備上

$ cd android && ./gradlew installRelease

請注意,只有在您按上述方式設置簽名后才能使用installRelease。

您可以終止任何正在運行的打包程序實例,所有和框架JavaScript代碼都捆綁在APK的資產中。

@EvghenyKalkutin如果你是react-native的初學者,那么就按照這個簡單的步驟

  1. 從cmd下載chocolatey只需在cmd中編寫此代碼@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin
  2. 成功安裝后使用chocolatey立即安裝node.js和Python2。 為此使用此代碼安裝node.js choco install nodejs.install並安裝Python @使用此代碼choco install python2
  3. 好了現在打開node.js命令promt並運行此代碼npm install -g react-native-cli啟動react-native
  4. 好吧現在使用此代碼下載示例項目react-native init AwesomeProjectreact-native init HelloWorld :)
  5. 現在轉到使用cd AwesomeProject下載此項目的目錄
  6. 啟動android stduio並打開此項目並更正你的gradle錯誤(如果它發生)(並清理項目)並使用usb調試連接你的設備
  7. 並使用此代碼adb devices檢查您的設備是否可用
  8. 如果設備可用,則使用此代碼轉換它的反應原生端口adb reverse tcp:8081 tcp:8081
  9. 現在為build node.js橋執行此代碼npm start
  10. 在構建node.js橋之后,現在使用此代碼使用react-native run-android啟動項目,在這里,您的示例項目在您的設備上運行

**對於unsign apk或assembleRelease只需通過以下步驟**

  1. 只需在node.js命令提示符中編寫此代碼即可.cd cd android && gradlew clean && gradlew assembleRelease

    我使用的是Windows操作系統,因此所有這些說明都適用於Windows操作系統我不知道這個代碼對於mac os或linux操作系統是一樣的
    我希望這個wiil可以幫助你以反應原生的方式開始。 如果有任何問題只是評論它。

WINDOWS使用者遵循這些說明....它為我工作

先決條件 - 你必須有一個keystore file ,如果你沒有,那么打開cmd運行keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000按照說明進行操作你將擁有一個密鑰庫文件。 現在按照這些步驟操作

1.在Windows上運行cd android ,然后在項目目錄中的編輯器終端命令提示符下運行gradlew assembleRelease

2 .Find APK在這個位置

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

3.將此APK復制到jdk安裝目錄的bin文件夾(對於我的目錄是C:\\Program Files\\Java\\jdk1.8.0_181\\bin )[基本上在這一步我們試圖轉到與jarsigner相同的目錄]

4.還要將keystore文件復制到此目錄( C:\\Program Files\\Java\\jdk1.8.0_181\\bin )。

5.在管理員模式下現在打開cmd並運行

cd C:\Program Files\Java\jdk1.8.0_181\bin

6,現在跑

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <<your keystore file name >>  <<your apk file name>> alias_name

這里是你的apk,現在在這里找到你簽名的apk cd C:\\Program Files\\Java\\jdk1.8.0_181\\bin 安裝它,現在它應該安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM