android 源碼 打包成apk的實現

來源:互聯網
上載者:User

說明:NewNetClient是源碼目錄名稱,

當前環境變數設定:jdk,android sdk ,openssl的環境變數。

所需包檔案:android.jar,signapk.jar.

C:/apk/hello/gen/android/hello
javac c:/apk/hello/*.java -classpath c:/testapk/android.jar -d c:/apk/classes

@rem主要是重新自動產生R.java檔案,比如增加個圖片或者字串或者增加個layout目錄xml檔案
C:/Users/dell>aapt package -m -J c:/apk/NewNetClient/gen  -M c:/apk/NewNetClient/AndroidManifest.xml -S C:/apk/NewNetClient/res -I C:/apk/android.jar

@rem  主要是重新自動產生R.java檔案,比如增加個圖片或者字串或者增加個layout目錄xml檔案
aapt package -m -J src -M C:/apk/NewNetClient/AndroidManifest.xml -S C:/apk/NewNetClient/res -I C:/apk/android.jar

@rem 編譯java檔案包括R.java 並輸出到c:/apk/classes
C:/Users/dell>javac C:/apk/hello/src/android/hello/*.java C:/apk/hello/gen/andro
id/hello/*.java -classpath C:/testapk/android.jar -d c:/apk/classes

@rem 把目錄下*.class檔案打成jar包,為了後面能夠建立apk需要的classes.dex檔案(產生的檔案在目前的目錄  *。* 是相對路徑)
c:/apk/classes>jar cvf ffff.jar *.*

@rem 把剛才的jar包轉換成android手機能夠啟動並執行dex檔案
c:/apk/classes>dx --dex --output=classes.dex c:/apk/classes/ffff.jar

@rem 如果存在則刪除
IF EXIST fffnew3.apk. (
del fffnew3.apk.
echo message ab
) ELSE (
echo fffnew3.apk. missing.
echo message ab c
)

@rem 產生應用程式apk檔案ffffqc.apk
c:/apk/classes>aapt package -z -u -f -M C:/apk/hello/AndroidManifest.xml -S C:/apk/hello/res -I C:/testapk/android.jar -F c:/ffffqc.apk

@rem 把前面產生的classes.dex檔案壓縮到apk檔案,最終產生可啟動並執行apk應用程式
c:/apk/classes>aapt add C:/ffffqc.apk classes.dex

@rem 方法一:給產生的apk進行自動簽名,無簽名的apk是無法安裝
c:/testapk>java -jar signapk.jar aimoxiu.x509.pem aimoxiu.pk8 c:/apk/classes/fffnew3.apk fffnew3last.apk
"C:/Program Files/Java/jre6/bin/jarsigner" -verbose -keystore "D:/apksign/MyAnd.keystore" -signedjar %1 %2 "D:/apksign/MyAnd.keystore"

@rem 私密金鑰的產生方式
@rem 產生RSA私密金鑰(private key)
    openssl genrsa -3 -out testkey.pem 2048
@rem 產生PKCS#10格式的認證請求。所謂認證請求就是發給認證機構認證的一個請求,它主要包括一個公開金鑰和一些相關資訊(如組織名稱和連絡人郵件地址)。
    openssl req -new -x509 -key testkey.pem -out testkey.x509.pem -days 10000 /    -subj ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’
@rem 把私密金鑰的格式轉換成PKCS #8(Private-Key Information Syntax Standard.)
    openssl pkcs8 -in testkey.pem -topk8 -outform DER -out testkey.pk8 -nocrypt

它的用法如下:
Usage: signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar
第一個參數是公開金鑰,即前面第二步產生的testkey.x509.pem。
第二個參數是私密金鑰,即前面第三步產生的testkey.pk8。
第三個參數是要簽名的檔案。
第四個參數是輸出的檔案(即簽名後的檔案)。
如:java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip update-signed.zip

@rem 方法二:keytool產生MyAndf.keystore簽名  jarsigner產生簽名的apk檔案
keytool -genkey -alias MyAndf.keystore -keyalg RSA -validity 20000 -keystore MyAndf.keystore
jarsigner -verbose -keystore MyAndf.keystore -signedjar fffnew3last.apk fffnew3.apk MyAndf.keystore(密碼123456 1234567)

開始打包:
javac C:/Users/dell>javac C:/apk/NewNetClient/gen/com/palmdream/NewNetClient/*.java C:/apk/NewNetClient/src/com/palmdream/Core/*.java C:/apk/NewNetClient/src/com/palmdream/ListHolder/*.java C:/apk/NewNetClient/src/com/palmdream/NetEngine/*.java C:/apk/NewNetClient/src/com/palmdream/NewNetClient/*.java C:/apk/NewNetClient/src/com/palmdream/XMLData/*.java C:/apk/NewNetClient/src/org/kxml2/io/*.java C:/apk/NewNetClient/src/org/xmlpull/v1/*.java  -classpath c:/apk/android.jar  -d c:/apk/classes
echo javac is ok
c:/apk/classes>jar cvf fffnew3.jar com/*.* org/*.*
echo   jar cvf is ok
c:/apk/classes>dx  --dex --output=c:/apk/classes/classes.dex c:/apk/classes/fffnew3.jar
echo dx --dex ok
c:/apk/classes>aapt package -z -u -f -M C:/apk/NewNetClient/AndroidManifest.xml -S C:/apk/NewNetClient/res -I C:/apk/android.jar -F c:/fffnew3.apk
echo aapt package ok
c:/apk/classes>aapt add C:/fffnew3.apk classes.dex
echo aapt add ok
c:/testapk>java -jar signapk.jar aimoxiu.x509.pem aimoxiu.pk8 fffnew3.apk fffnew3last.apk
echo java last ok
完成

@rem  多線程式控制制 啟動 停止 暫停 啟動新的線程  以及連網時header的傳遞。
@rem  基於android   代碼保護

加註釋

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.