<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android 源碼中如何生成一個platform JKS 文件?

      首先我們需要在源代碼環境中將 build/target/product/security/ 文件夾 copy 到本地。
      下邊的操作需要在 ubuntu 或者 mac 下。

      重要安全提醒:platform 密鑰是系統級私鑰,擁有它就能簽出系統權限應用。不要把它放到公共機器 / 共享位置,謹慎保管,必要時改密碼并限制訪問。


      1) 先看看文件格式(確認 pk8 是二進制還是 PEM)

      file platform.pk8
      # 或
      head -n 3 platform.pk8
      
      • 如果看到 -----BEGIN 開頭,那就是 PEM 格式私鑰(可以直接用)。
      • 如果是二進制(比如 data / DER),需要先把它轉換成 PEM。

      2)(如果需要)把 platform.pk8 轉成 PEM 私鑰

      僅當 platform.pk8 不是 PEM(即是 DER/PKCS8 二進制)時運行:

      openssl pkcs8 -in platform.pk8 -inform DER -out platform.key.pem -nocrypt
      

      如果 platform.pk8 已經是 PEM,就把它重命名/復制為 platform.key.pem

      cp platform.pk8 platform.key.pem
      

      3) 用證書 + 私鑰 導出 PKCS#12(.p12)

      把 cert 和私鑰合成一個 .p12(后面用 keytool 導入到 JKS):

      openssl pkcs12 -export \
        -inkey platform.key.pem \
        -in platform.x509.pem \
        -name platform \
        -out platform.p12
      
      • 上面會提示你設置一個導出密碼(Export Password)。記住它,后面導入時需要(示例中我們用 p12pass 說明,運行時請用安全密碼)。

      如果你想在命令行里直接設置密碼(不建議在公共 shell 歷史中出現),可以:

      openssl pkcs12 -export -inkey platform.key.pem -in platform.x509.pem -name platform -out platform.p12 -passout pass:p12pass
      

      4) 把 PKCS#12 導入 Java Keystore(.jks)

      keytool.p12 轉成 platform.jks

      keytool -importkeystore \
        -deststorepass android \
        -destkeypass android \
        -destkeystore platform.jks \
        -srckeystore platform.p12 \
        -srcstoretype PKCS12 \
        -srcstorepass p12pass \
        -alias platform
      
      • 這里 -deststorepass / -destkeypass 我示例用了 android(方便演示),實際請用強密碼替換。
      • -srcstorepass 要填第 3 步時你設的導出密碼(上例是 p12pass)。

      5) 驗證 keystore 內容

      keytool -list -v -keystore platform.jks -storepass android
      

      輸出里應該能看到 alias platform,以及證書信息(Subject/Issuer/有效期等)。若看到就成功了。


      6) 用 platform.jks 給 APK 簽名(示例:apksigner)

      建議用 apksigner(Android build tools 提供):

      # 使用 apksigner(Android build-tools >= 24)
      apksigner sign --ks platform.jks --ks-pass pass:android --ks-key-alias platform app-system-signed.apk
      

      或者用 jarsigner(舊法):

      jarsigner -keystore platform.jks -storepass android -keypass android app-release-unsigned.apk platform
      

      然后最好用 zipalign(如果是最終安裝包)和 apksigner verify 驗證簽名:

      # zipalign (android sdk build-tools)
      zipalign -v 4 app-release-unsigned.apk app-aligned.apk
      apksigner verify --verbose --print-certs app-aligned.apk
      

      額外說明(常見問題)

      • 如果 openssl pkcs12 報錯 “Mac verify error:invalid password?”:說明你提供的 -passout/交互密碼不匹配,重試并確認密碼。
      • 如果 platform.pk8 是加密私鑰(很少見),需要先用 openssl 解密(需要原始密碼)。
      • 系統簽名要求與 ROM 中的 platform.x509.pem/platform.pk8 一致:如果你用的是源碼樹同目錄下的 key,那么在制作系統鏡像時簽名一致,App 能拿到 android:sharedUserId="android.uid.system" / signature|system 等特權。
      • 如果你只是本地測試并不想替換設備系統的 platform key,更安全的做法是在自建的測試 ROM 中使用該 key 簽名或把簽名后的 apk 放到 /system/priv-app/ 并設置正確權限。直接在俗稱的“普通設備”上用 platform key 安裝可能受系統限制(廠商 ROM 與密鑰不同)。

      簡短命令總覽(一鍵版,假設 pk8 為二進制)

      # 轉成 PEM(如果已經是 PEM 可跳過)
      openssl pkcs8 -in platform.pk8 -inform DER -out platform.key.pem -nocrypt
      
      # 導出 p12(會詢問導出密碼)
      openssl pkcs12 -export -inkey platform.key.pem -in platform.x509.pem -name platform -out platform.p12
      
      # 導入到 JKS(示例密碼:android / p12pass,實際請換強密碼)
      keytool -importkeystore -deststorepass android -destkeypass android -destkeystore platform.jks \
        -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass p12pass -alias platform
      
      # 驗證
      keytool -list -v -keystore platform.jks -storepass android
      

      如何將 jks 文件導入到項目的gradle中?

      1. 放置位置

      常規做法是把 platform.jks 放在工程目錄下的某個子目錄(例如 app/keystore/platform.jks),不要放進版本控制,只在本地或 CI 構建機上保管。


      2. 配置 gradle.properties(推薦)

      在項目根目錄的 gradle.properties 中寫上 keystore 信息(可以避免明文寫在 build.gradle 里):

      MY_KEYSTORE=app/keystore/platform.jks
      MY_KEYSTORE_PASSWORD=android
      MY_KEY_ALIAS=platform
      MY_KEY_PASSWORD=android
      

      這里密碼要替換成你創建 jks 時設定的。


      3. 配置 app/build.gradlesigningConfigs

      android {
          signingConfigs {
              platform {
                  storeFile file(MY_KEYSTORE)
                  storePassword MY_KEYSTORE_PASSWORD
                  keyAlias MY_KEY_ALIAS
                  keyPassword MY_KEY_PASSWORD
              }
          }
      
          buildTypes {
              release {
                  signingConfig signingConfigs.platform
                  minifyEnabled false
                  shrinkResources false
              }
              debug {
                  // 如果需要調試也走 platform 簽名(一般系統 App 要這樣)
                  signingConfig signingConfigs.platform
              }
          }
      }
      

      4. 構建 & 簽名

      這樣執行 ./gradlew assembleRelease 就會自動用你 platform.jks 里的 key 來簽名 APK。


      5. 額外提醒 ??

      • 普通設備上安裝不了:因為你拿到的 platform key 跟設備出廠的 system.img 里用的不一樣,只有在你自己編的系統(刷機)里,才能識別為“系統簽名”。
      • 真機系統 App 場景:如果你控制了固件(比如手表項目),就可以在同一套 key 下簽 ROM 和 APK,這樣 Gradle 打出來的包就能擁有系統簽名權限(例如 android:sharedUserId="android.uid.system"signature|system 權限)。
      • 密鑰最好不要隨項目源碼走,建議本地配置或 CI 配置注入。
      posted @ 2025-09-25 17:19  Greg_LYU  閱讀(33)  評論(0)    收藏  舉報
      主站蜘蛛池模板: аⅴ天堂中文在线网 | 国产精品亚洲中文字幕| 亚洲一区二区国产av| 成人资源网亚洲精品在线| 人妻无码| 亚洲中文久久久精品无码| 激情综合五月丁香亚洲| 日韩放荡少妇无码视频| 韩产日产国产欧产| 国内自拍视频在线一区| 久久精品夜色噜噜亚洲av| 午夜福利在线观看6080| 色噜噜亚洲男人的天堂| 欧美大胆老熟妇乱子伦视频| 亚洲欧洲一区二区天堂久久| 人妻体内射精一区二区三区| 国产无遮挡又黄又爽又色| 成人欧美一区在线视频| 成人亚洲精品一区二区三区| 亚洲日韩乱码一区二区三区四区| 98精品全国免费观看视频| 亚洲欧美日韩综合久久| 国产三级视频网站| 中文字幕第一页国产| 国产精品女视频一区二区| 亚洲中文字幕人妻系列| 动漫av纯肉无码av在线播放| 国产99视频精品免费专区| 国产裸体无遮挡免费精品| 国产亚洲精品成人aa片新蒲金 | 99久久精品国产一区二区暴力| 综合色一色综合久久网| 安丘市| 欧美大胆老熟妇乱子伦视频| 久热色视频精品在线观看| 亚洲欧美人成人综合在线播放| 97人妻免费碰视频碰免| 国产精品毛片一区二区三| 久久久久免费看少妇高潮A片| 成年女人免费v片| 亚洲一区二区三区在线播放无码|