<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # Android ## 簽名的意義 為了保證每個應用程序開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程序,我們需要對我們發布的APK文件進行唯一簽名,保證我們每次發布的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。 ## 預備知識 先了解兩件事情: Keytool 是一個有效的安全鑰匙和證書的管理工具. Android 要求所有的程序必須有簽名,否則就不會安裝該程序。 ## 關閉調試信息 ### 去掉console調試插件 進入APP項目,執行: `cordova plugin rm org.apache.cordova.console //去掉console調試插件` ### Android 相關文件修改 更改APP目錄下的platforms/android/AndroidManifest.xml文件 `<application android : debuggable = "true" android : hardwareAccelerated = "true" android : icon = "@drawable/icon" android : label = "@string/app_name" >` 把android:debuggable 改為false: `<application android : debuggable = "false" android : hardwareAccelerated = "true" android : icon = "@drawable/icon" android : label = "@string/app_name" >` 使用Cordova生成發布版本 `cordova build --release android` 看到 Build Successful 說明構件成功,通過apk文件名可以看到現在的安裝文件時未簽名的unsigned。如果**需要發布到應用商店,我們需要進行簽名并優化**。 ## Android APK 手動打包流程 Android app 的打包流程大致分為**build , sign , align**三部分。 1. **build** 是構建 APK 的過程,分為 debug 和 release 兩種。release 是發布到應用商店的版本。 2. **sign** 是為 APK 簽名。不管是哪一種 APK 都必須經過數字簽名后才能安裝到設備上,簽名需要對應的證書(keystore),大部分情況下 APK 都采用的自簽名證書,就是自己生成證書然后給應用簽名。 3. **align** 是壓縮和優化的步驟,優化后會減少 app 運行時的內存開銷。 debug 版本的的打包過程一般由開發工具(比如 Android Studio)自動完成的。 開發工具在構建時會自動生成證書然后簽名,不需要我們操心。 而 release 版本則需要開發者自己生成證書文件。 Cordova 作為 hybrid app 的框架不像純 Android 開發那么自動化,所以第一次打 release 包我們需要了解一下手動打包的過程。 ## build 執行`cordova build android`命令。 默認是debug模式,會使用` debug.keystore` 來生成以下兩個文件: ~~~ XXXX-debug.apk(signed, unaligned) XXXX-debug-unaligned.apk(signed, aligned) ~~~ `debug.keystore`的位置: ~~~ win7 : C:\Users\Administrator\.android\ ~~~ ### sign 1. 首先需要先生成一個數字簽名文件(keystore):   Java自帶的keytool工具是個密鑰和證書管理工具。   在JDK 1.4以后的版本中都包含了這一工具,它的位置為`<JAVA_HOME>\bin\keytool.exe`。   它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用于(通過數字簽名)自我認證(用戶向別的用戶/服務認證自己)或數據完整性以及認證服務。它還允許用戶儲存他們的通信對等者的公鑰(以證書形式)。   keytool 將密鑰和證書儲存在一個所謂的密鑰倉庫(keystore)中。缺省的密鑰倉庫實現將密鑰倉庫實現為一個文件。它用口令來保護私鑰。   JKS和JCEKS是Java密鑰庫(KeyStore)的兩種比較常見類型(我所知道的共有5種,JKS, JCEKS, PKCS12, BKS,UBER)。   JKS的Provider是SUN,在每個版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我們都能夠直接使用它。   JCEKS在安全級別上要比JKS強,使用的Provider是JCEKS(推薦),尤其在保護KeyStore中的私鑰上(使用TripleDes)。 2. 然后我們就可以用下面的命令對 APK 簽名了: jarsigner是JDK中包含的用于JAR文件簽名和驗證的工具。 ` jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name` **注意**: alias_name與上面所的應該是一致的 ### align **最后一步**:在Android SDK中包含了一個工具名為Zipalign,它可以優化你的APK程序包,它首次被引入是在Android 1.6版本的SDK軟件開發工具包中。我們都知道APK的MIME其實就是一個Zip壓縮文件,通過Zipalign可以讓你的應用程序運行更快,Android123猜測從原理上來講應該是優化Zip文件的解壓速度,畢竟這個工具的文件名為zip對齊。 在Android平臺中,數據文件存儲在apk文 件中,可以多進程的訪問,如果你開發過Win32可能知道程序的粒度對齊問題,不錯雖然不是PE格式的文件,在Zip中一樣,資源的訪問可以通過更好的對 其優化,而zipalign使用了4字節的邊界對齊方式來影射內存,通過空間換時間的方式提高執行效率。 `zipalign -v 4 android-apk/android-release-unsigned.apk android-apk/cordova-demo.apk` ### 查看apk的簽名 查看簽名是否成功,可將簽名后的文件,后綴名apk的改為zip,解壓。 在該目錄下,輸入如下命令: `keytool -printcert -file META-INF/CERT.RSA` `META-INF/TEST.RSA` 根據自己的情況配置 輸入命令行后,會出現類似下圖信息 ![查看apk的簽名](https://box.kancloud.cn/188992205f3c7746b84e32dece45a767_1442x142.png) ## 發布到安卓市場 ### 渠道: 百度(91,安卓市場),360,小米,騰訊,豌豆莢,華為,樂商店,機鋒市場,木螞蟻,應用匯,搜狗 http://app.baidu.com/apps http://dev.#/mod/developer/ http://dev.xiaomi.com/ http://open.qq.com/ http://developer.wandoujia.com/ http://zhushou.sogou.com/open/ http://dev.appchina.com/market/dev/index.action http://open.lenovo.com/developer/ http://developer.huawei.com/consumer/cn/devunion/openPlatform/html/memberCenter.html#modifyApp# http://dev.mumayi.com/ http://dev.gfan.com/ 特別是360,360的先上傳安裝包,網上加固后下載安裝包再簽名再上傳 ### 需要的材料: 1. icon (256*256 512*512 1024*1024 且圓角和直角都有) 2. app截屏(480*800 4-8張) 3. 資質(軟件著作證書 稅務登記證 營業執照 組織機構代碼證) 4. 身份證正反面 5. app的相關內容填寫(均不得包含關鍵詞,最,平臺,什么的):一句話簡介,應用簡介,當前版本更新內容 ## 附錄: ### [獲取Android簽名打包keystore或者.jks文件的MD5](http://jingyan.baidu.com/article/75ab0bcbb3bf08d6864db2b0.html) ### 關于.jks與.keystore 簽名文件在Android Studio中為.jks 在eclipse時為.keystore文件 ### [證書格式轉換](https://www.trustasia.com/tools/cert-converter.htm) 提供 PEM JKS PKCS12 3種證書格式相互轉換 ## **總結** 自從Cordova從4.0開始,涉及到cordova的項目,就**會自動去下載google推薦的Gradle(項目自動構建工具)來構建APK**。**所以我現在打包release版本的發布apk時,都是用 Gradle 配置自動打包!** 所以使用老方法無法生成帶簽名的APK,可按以下步驟解決: 1.生成JKS類型的證書(test.keystore,默認是jks),在命令行下執行: 簽名方法參考如下: 1. 使用JDK的keytool工具,在當前目錄下生成keystore文件 keytool -genkey -v -keystore lzwme-release-key.keystore -alias lzwme -keyalg RSA -validity 365 按照提示輸入操作。輸入參考: ![](http://lzw.me/wp-content/uploads/2014/06/keytool_genkey.jpg) 以下為參數整合,完整命令: ~~~ keytool -genkey -v -alias testAlias -keyalg RSA -keystore test.keystore dname “CN=xxx.net,OU=xxx,O=xxx,L= beiijng,ST=beijing,C=china” -storepass * -keypass * -validity 36500 ~~~ 然后復制生成的 keystore 文件到目錄 platforms/android/的目錄下。 *其中參數-validity為證書有效天數,這里我們寫的大些20000天。還有在輸入密碼時沒有回顯,只管輸入就可以了,一般位數建議使用20位,最后需要記下來后面還要用。* 2.在項目/platforms/android目錄下新建`release-signing.properties`文件,填入: ~~~ key.store=./gzichan_release.jks /*Xee:相對路徑/test.keystore*/ key.store.password=yf**** /*簽名密碼*/ key.alias=XXXE手通 key.alias.password=yf**** ~~~ 3.命令行下執行` cordova build android –release`或者 `cordova build --release android`編譯即可,在/platforms/android/build/outputs/apk下就會生成已簽名的安裝包android-release.apk。 我覺得一般情況使用 build.json 就足夠了。有興趣的可以看這個 [Cordova 官方教程](https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#setting-gradle-properties) ### 完整命令行操作: ~~~ cordova plugin rm cordova-plugin-console ionic build android --release --prod --device -- --keystore="../android.keystore" --storePassword=android --alias=mykey --password=myKeyPassword cd platforms cd android cd build cd outputs cd apk zipalign -v 4 android-release.apk WanCheTT.apk // 或者直接(將在項目的根目錄下生存WanCheTT.apk) zipalign -v 4 ./platforms/android/build/outputs/apk/android-release.apk WanCheTT.apk ~~~ # IOS with xcode ``` $ gulp build --env production $ ionic build ios ``` open `platforms/ios/ProkectName.xcodeproj` choose `Generic iOS Device` for `Set the active scheme` click `Product > Archive` Upload to App Store or Export(Save for Enterprise Deployment) 代碼 ## 參考 https://segmentfault.com/a/1190000005177715 [ionic云打包](https://segmentfault.com/a/1190000008076771)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看