windows下eclipse中,涉及源碼編譯的apk開發——使用系統簽名機制解決方法

windows下eclipse中,涉及源碼編譯的apk開發——使用系統簽名機制
我認爲學習需要靠交流,我把我的一點心血發上來,希望可以促進大家交流
剛學android一個月,由於是在windows xp上開發的,也不會makefile,ndk還沒仔細研究,或許對一些初學者有用。


一、Android Apk簽名
Apk簽名首先要有一個keystore的簽名用的文件。
keystore是由jdk自帶的工具keytool生成的。
具體生成方式參考:
開始->運行->cmd->cd到你安裝的jdk的目錄裏,我的是C:\Program Files\Java\jdk1.6.0_10\bin
然後輸入:
keytool -genkey -alias asaiAndroid.keystore -keyalg RSA -validity 20000 -keystore asaiAndroid.keystore
-alias 後面跟的是別名這裏是 asaiAndroid.store
-keyalg 是加密方式這裏是RSA
-validity 是有效期 這裏是20000
-keystore 就是要生成的keystore的名稱 這裏是asiAndroid.keystore
然後按回車鍵
按回車後首先會提示你輸入的密碼:這個在簽名時要用的,要記住
然後會再確認你的密碼。
之後會依次叫你輸入姓名、組織單位、組織名稱、城市區域、省份名稱、國家代碼(CN)等。


開始簽名。
在 C:\Program Files\Java\jdk1.6.0_10\bin 還提供一個工具 jarsigner.exe
運行命令給APK簽名:
jarsigner -verbose -keystore asaiAndroid.keystore -signedjar Lotteryonline_signed.apk LotteryOnline.apk asaiAndroid.keystore
-keystore: keystore的名稱
LotteryOnline_signed.apk: 簽名後的APK
LotteryOnline.apk: 簽名前的APK
然後按回車:會要求輸入剛纔設置的密碼,輸入後按回車就開始簽名了。




二、eclipse源碼編譯,無需用make來編譯(android源碼目錄<D:\myandroid_mx27>):
1、首先,AndroidManifest.xml中manifest節點中加入android:sharedUserId="android.uid.system"這個屬性


2、用eclipse編譯出apk(ClockSetting.apk)文件,但這個文件不能用,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件


3、使用當前android系統(android系統可能不同)的platform密鑰來重新給apk文件簽名(可能還未用用戶米要簽名)。
首先,找到密鑰文件,在我的Android源碼目錄中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem兩個文件。
然後,用Android提供的SignApk工具來簽名,signapk的源代碼是在"build\tools\signapk"下,這時得爲下面的編譯工作做些準備:
<1>、編譯jar
命令行cd到signapk.java代碼目錄下,
javac signapk.java
獲取SignApk$SignatureOutputStream.class和SignApk.class


建立目錄s\com\android\signapk,將兩個class文件放入目錄下
jar cvfm signapk.jar SignApk.mf -C s\ .
注意:"s\"後面的"."前面有空格
生成signapk.jar文件,得到了Android提供的簽名程序signapk.jar
<2>、用目標系統的platform密鑰簽名
將platform.pk8和platform.x509.pem文件複製到"D:\myandroid_mx27\build\tools\signapk"目錄下,即signapk.jar和SignApk.mf所在的目錄。
java -jar signapk.jar platform.x509.pem platform.pk8 D:\ClockSetting.apk D:\ClockSettingSigned.apk
我的未簽名(ClockSetting.apk)和已簽名(ClockSettingSigned.apk)apk文件都放在D盤,這樣就得到了用Android源碼編譯的文件。


<3>、打開真機,安裝:
adb connect IP:Port (IP爲真機IP地址,Port爲端口)
adb install D:/ClockSettingSigned.apk


------解決方案--------------------------------------------------------
學習了 
------解決方案--------------------------------------------------------
頂起來,我也研究呢 
------解決方案--------------------------------------------------------
學習了 
------解決方案--------------------------------------------------------
爲什麼我在用目標系統的platform密鑰簽名簽名時會報錯:


E:\sign\signapk>java -jar signapk.jar platform.x509.pem platform.pk8 AwWeather.a
pk AwWeather1.java
java.util.zip.ZipException: 系統找不到指定的文件。
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
at com.android.signapk.SignApk.main(SignApk.java:437) 
發佈了13 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章