【React Native開發】React Native進行簽名打包成Apk

轉載請標明出處:

http://blog.csdn.net/developer_jiangqq/article/details/50525976

本文出自:【江清清的博客】

</div>

( ) 前言        

【好消息】個人網站已經上線運行,后面博客以及技術干貨等精彩文章會同步更新,請大家關注收藏: http://www.lcode.org

前幾節課程我們對于 React Native 的一些基礎配置 , 開發工具以及調試,Android項目移植做了相關講解,今天一起來學習一下另外一個比較重要的知識點,就是 React Native 項目簽名打包。     

剛創建的 React Native 技術交流群 ( 282693535 ), 歡迎各位大牛 , React Native 技術愛好者加入交流 ! 同時博客左側歡迎微信掃描關注訂閱號 , 移動技術干貨 , 精彩文章技術推送 !

在我們的 React Native F or Android 應用開發完成之后,那么就需要進行發布上傳應用市場了,在上傳之后,那么有一個很重要的步驟就是簽名打包。下面我們來詳細看一下怎么樣進行簽名打包 React Native 應用。具體關于Android的簽名文件生成 ( 點擊進入-注意KX上網 )

( ) Android 簽名文件生成       

上面有一個 Android 官方的簽名生成方法的地址,大家可以進行詳情查看,不過需國內或許不能訪問哦 ~ 。我現在給大家講解兩種簽名生成的方法: :keytool 命令方式生成 ,② :AndroidStudio IDE 進行生成。

2.1. key tool 命令生成簽名秘鑰

我們可以命令行運行如下命令 :

keytool -genkey -v -keystore my-release-key.keystore  -alias my-key-alias -keyalgRSA -keysize 2048 -validity 10000

[ 注意 ]. 我這邊環境變量已經配置了,注意上面的 my-release-key 這個名字可以自己取名,同時 my-key-alias 也是自己取名,其中第二個名稱 alias 參數后邊的別名,在后面你在為應用簽名的時候需要用到,所以暫時記錄一下這個別名。

上面的命令我們需要輸入密鑰庫 (keystore) 密碼和對應秘鑰的密碼,然后設置名字,組織,國家,省份相關的信息,最后會生成my -release-key.keystore 的簽名文件。

具體命令截圖如下 :

現在我們去用戶默認目錄下面會生成 my-release-key.keystor e 文件。具體截圖如下 :

2.2.Android Studio IDE 進行生成秘鑰文件

個人比較傾向于這一種方法,首先是圖形界面的,而且少了命令行書寫的問題,而且以前我記得在使用 Eclipse 開發Android的時候也一直使用這種方式,下面我們來看一下生成簽名的具體步驟 :

首先打開 AndroidStudio 菜單選擇 build->Generate Signed APK 在打開的界面點擊 Next ,會彈出下面的界面

然后點擊 create new 在彈出的界面中選擇填寫秘鑰存放的位置 , 名稱 , 密碼。同樣還要寫別名的名字,證書的所有者,國家,組織以及城市相關信息。

點擊 OK ,會默認填寫上創建好的簽名的信息 ,

最后點擊 finish 會生成簽名秘鑰,不過大家請注意看這邊生成的秘鑰和第一個命令行方法的秘鑰的后綴不太一樣的 , 這邊是以jks結尾的,不過也沒問題哦 ~ 也是同樣可以簽名的。

以上兩種方式已經給大家演示了,打包簽名的方法了,下面我們正式來進行配置打包生成APK了。

( ) Gradle 配置

3.1.Grad le 配置

. 首先我 把剛剛 成的簽名文件復制到項目 android /app 文件夾下面 ( 這邊采用 AS 生成簽名 test.jks )

然后進行修改項目中 gradle.properties 文件,進行添加如下的代碼 ( 注意下面的簽名和別名的名稱和上一步放入的 test.jks 要一樣,下面兩項分別填寫簽名和別名的密碼 )- 我取的密碼為 ztt12345

MYAPP_RELEASE_STORE_FILE=test.jks
MYAPP_RELEASE_KEY_ALIAS=test_alias
MYAPP_RELEASE_STORE_PASSWORD=ztt12345
MYAPP_RELEASE_KEY_PASSWORD=ztt12345

這一步我們是進行全局的 gradlde 進行變量化的配置,后邊我們會在后邊的步驟中給相應的應用進行簽名。

[ 注意 ]. 以上的簽名秘鑰請大家一定要妥善保管,因為在應用發布的時候需要的。

3.2. 給應用添加簽名 - 配置局部應用 Gradle 文件

直接在工程目錄下得 android /app/build.gradle 中以下節點添加如下內容 :

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFilefile(MYAPP_RELEASE_STORE_FILE)
            storePasswordMYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPasswordMYAPP_RELEASE_KEY_PASSWORD
        }
    }
    buildTypes {
        release {
            ...
            signingConfigsigningConfigs.release
        }
    }
}
…

具體實例配置截圖如下 :

( ) 生成簽名包

對于生成簽名包得方式我們要分兩種情況進行區分對待。第一種在項目目錄 android/app 下有 react.gradle 文件的 ( 這個采用react -nativeinit xxprojec t 命令生成項目詳情請看 : 點擊進入第一講 )

第二種是不存在 react.gradle 文件,主要是通過原生Android項目移植到React Native 平臺中 ( 該生成詳情詳情請看 : 點擊進入第四講 ) 。下面這兩種方法都講一下 :

4.1. 對存在 react.gradle 文件的項目打包

命令行切到 reactnative 主目錄,然后運行下面的命令,請注意下面 android 就是Android項目的目錄名稱

cd android && ./gradlewassembleRelease

這樣運行截圖如下 :

該命令運行結束之后,會在 android/app/build/outputs/apk 目錄下面生成 app-release.apk 該文件,然后可以使用該apk進行上線發布。

4.2. 對與不存在 react.gradle 文件的項目打包

這邊因為 react.gradle 文件不存在,主要針對第四講課程中的項目 (Android 原生項目移植到 React Native 平臺 ) 來進行舉例。

首先命令切換到該re actnative 項目的主目錄,然后運行以下的命令,生成 assets 文件夾

mkdir -pandroid/app/src/main/assets

緊接著運行以下命令,進行生成 inde.android.bundle 文件

react-native bundle--platform android --dev false --entry-file index.android.js \
  --bundle-outputandroid/app/src/main/assets/index.android.bundle \
  --assets-dest android/app/src/main/res/

具體運行截圖如下 :

生成該文件目錄截圖如下 :

最后運行之前的命令,進行代碼和資源文件打包,生成的帶有簽名的apk還是在上面的目錄中。

cd android && ./gradlew assembleRelease

( ) 運行 Apk

上面的步驟我們已經完成了項目的簽名打包在對應的目錄中生成中 apk 文件,下面我們直接運行以下的命令進行將apk安裝到設備中,我這邊直接采用了模擬器進行測試了。

cd android && ./gradlew installRelease

該命令會進行安裝我們的 apk 到我們的設備中,不過該不會安裝完自動打開我們的app,我們需要自己點擊啟動一下即可了。完美運行截圖如下 :

( ) 最后總結

今天我們主要介紹了 React Native for Android 項目如何創建簽名,以及打包的具體方法。大家有問題可以加一下群 React Native 技術交流群 ( 282693535 ) 或者底下進行回復一下。

尊重原創,轉載請注明:From Sky丶清( http://blog.csdn.net/developer_jiangqq ) 侵權必究!

關注我的訂閱號(codedev123),每天分享移動開發技術(Android/IOS),項目管理以及博客文章!(歡迎關注,第一時間推送精彩文章)

關注我的微博,可以獲得更多精彩內容

</div>

來自: http://blog.csdn.net/developer_jiangqq/article/details/50525976

</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!