![](/img/trans.png)
[英]How to fix app not installing compiled apk on my mobile device, using generating signed APK of react-native
[英]react-native compiled apk wont run on device
使用react-native教程進行反應( react-native 0.30 ):我創建的應用程序無法在Android設備上安裝,這里是步驟:
並得到結果: 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變量
my-release-key.keystore
文件放在項目文件夾中的android/app
目錄下。 ~/.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的初學者,那么就按照這個簡單的步驟
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin
choco install nodejs.install
並安裝Python @使用此代碼choco install python2
npm install -g react-native-cli
啟動react-native react-native init AwesomeProject
或react-native init HelloWorld
:) cd AwesomeProject
下載此項目的目錄 adb devices
檢查您的設備是否可用 adb reverse tcp:8081 tcp:8081
npm start
react-native run-android
啟動項目,在這里,您的示例項目在您的設備上運行 **對於unsign apk或assembleRelease只需通過以下步驟**
只需在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.