轉載:android 源碼 打包成apk的實現

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

當前環境變量設置:jdk,android sdk ,openssl的環境變量。android


所需包文件: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   代碼保護spa

相關文章
相關標籤/搜索