真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android給應(yīng)用簽名,android應(yīng)用簽名生成

如何給Android應(yīng)用程序簽名

Android系統(tǒng)要求所有的程序經(jīng)過(guò)數(shù)字簽名才能安裝,如果沒(méi)有可用的數(shù)字簽名,系統(tǒng)將不許安裝運(yùn)行此程序。不管是模擬器還是真實(shí)手機(jī)。因此,在設(shè)備或者是模擬器上運(yùn)行調(diào)試程序之前,必須為應(yīng)用程序設(shè)置數(shù)字簽名?!に械某绦蚨急仨毢灻瑳](méi)有被簽名的程序,系統(tǒng)將不能安裝。

10年積累的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有邗江免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

·可使用自簽署證書(shū)簽署應(yīng)用程序,無(wú)須授權(quán)憑證。

·系統(tǒng)僅僅會(huì)在安裝的時(shí)候測(cè)試簽名證書(shū)的有效期,如果應(yīng)用程序的簽名是在安裝之后才到期,那么應(yīng)用程序仍然可以正常啟用。

·可以使用標(biāo)準(zhǔn)工具-Keytool and Jarsigner-生成密鑰,來(lái)簽名應(yīng)用程序的.apk文件。

Android SDK 工具可以在調(diào)試時(shí)給應(yīng)用程序簽名。ADT插件和Ant編譯工具都提供了兩種簽名模式-debug模式和release模式

·debug模式下,編譯工具使用JDK中的通用程序Keytool通過(guò)已知方法和密碼創(chuàng)建秘鎖和密鑰。每次編譯的時(shí)候,工具使用debug密鑰簽名應(yīng)用程序的.apk文件。因?yàn)槊艽a是已知的,工具不需要在每次編譯的時(shí)候提示輸入密鎖和密鑰。

·當(dāng)應(yīng)用程序調(diào)試完畢準(zhǔn)備要發(fā)布release版本時(shí),可以在release模式下編譯。release模式下,編譯工具不會(huì)將.apk文件簽名。需要自己用Keytool生成密鑰和密鎖,再用JDK中的Jarsigner工具給.apk文件簽名。簽名基本設(shè)置 首先設(shè)置JAVA_HOME環(huán)境變量,告訴SDK如何找到Keytool,或者可以在Windows 系統(tǒng)環(huán)境變量PATH變量中添加Keytool的JDK路徑。

在發(fā)布release版本時(shí),從Package面版上按選中你的project,按鼠標(biāo)右鍵,依次選擇Android Tools、Export Application Package?;蛘呖梢渣c(diǎn)擊Manifest Editor,overview 頁(yè)面上的“Exporting the unsigned .apk”連接 ,導(dǎo)出未簽名apk文件。保存.apk文件后,用Jarsigner及自己的密鑰給apk文件簽名,如果沒(méi)有密鑰, 可以用Keystore創(chuàng)建密鑰和密鎖。如果已經(jīng)有一個(gè)密鑰了,如公共密鑰,就可以給.apk文件簽名了。也可以把上面這個(gè)完整的步驟寫(xiě)成一個(gè)bat文件,這樣需要簽名的時(shí)候只要運(yùn)行這個(gè)bat就可以了。下面給出一個(gè)完整的bat文件示例:

@Rem android簽名程序 //注釋指令

@Rem echo是顯示指令 格式:echo [{on|off}] [message]

@echo **********************************************************

@Rem 文件是否存在命令格式:if exist 路徑+文件名 命令

@if exist d:sign/MyFirstApp.keystore goto sign

@echo 創(chuàng)建簽名文件MyFirstApp.keystore

@Rem keytool命令格式:-genkey產(chǎn)生簽名 -alias別名 -keyalg加密算法 -validity有效天數(shù) -keystore生產(chǎn)簽名文件名稱(chēng)

keytool -genkey -alias MyFirstApp.keystore -keyalg RSA -validity 40000 -keystore MyFirstApp.keystore

@echo 開(kāi)始簽名:

@Rem jarsigner命令格式:-verbose輸出詳細(xì)信息 -keystore密鑰庫(kù)位置 -signedjar要生成的文件 要簽名的文件 密鑰庫(kù)文件

jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore@goto over:sign@echo 開(kāi)始簽名:

jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore:over@echo ********************MyFirstApp.apk 簽名完成************************pause================以上是一個(gè)給應(yīng)用簽名的完整bat文件,在運(yùn)行這個(gè)bat文件時(shí),還需要按照屏幕提示的步驟輸入一些必要信息,最后生成一個(gè)簽名后的文件是:MyFirstApp_signed.apk。簽名完成以后最好再把這個(gè)文件壓縮一下,使用Android SDK安裝路徑下tools文件夾里的zipalign進(jìn)行壓縮,以剛才這個(gè)文件為例,也可以寫(xiě)成一個(gè)bat文件,示例如下:

D:\soft\android-sdk-windows\tools\zipalign -c -v 4 MyFirstApp_zip.apkpause================上面的D:\soft\android-sdk-windows用你的實(shí)際Android SDK安裝路徑代替。按照以上步驟簽名、壓縮就完成了,最后把壓縮后的那個(gè)文件(比如例子中的MyFirstApp_zip.apk文件)復(fù)制到手機(jī)上就可以正常的安裝運(yùn)行了。

安卓給app簽名方法

給app簽名,生成release apk。

1、生成keystore文件,這個(gè)可以用AndroidStudio生成。

2、假設(shè)生成的文件名叫test.keystore,放到工程的app下面。

3、修改app下面的build.gradle文件,增加如下內(nèi)容:

4、 生成release版本apk

gradle clean build

Android APP的簽名

Android APP的簽名

Android項(xiàng)目以它的包名作為唯一的標(biāo)識(shí),如果在同一部手機(jī)上安裝兩個(gè)包名相同的APP,后者就會(huì)覆蓋前面安裝的應(yīng)用。為了避免Android APP被隨意覆蓋,Android要求對(duì)APP進(jìn)行簽名。下面介紹對(duì)APP進(jìn)行簽名的步驟

1、選擇builder菜單下的Generate Signed APK

2、彈出簽名向?qū)?duì)話框

3、在該對(duì)話框中選擇數(shù)字證書(shū),如果沒(méi)有數(shù)字證書(shū),可以點(diǎn)擊Create new按鈕,創(chuàng)建數(shù)字證書(shū)如下圖所示:

4、輸入證書(shū)的存儲(chǔ)路徑及文件名稱(chēng),密碼,有效年份,發(fā)布人員的姓名,單位,所在城市,省份,國(guó)家等信息,后點(diǎn)擊OK按鈕,如下圖所示,系統(tǒng)會(huì)自動(dòng)帶入密碼

5、點(diǎn)擊Next選擇簽名后的安裝包存放路徑,構(gòu)建類(lèi)型,點(diǎn)擊finish完成安裝包的構(gòu)建

注意:

v2是Android 7.0中引入了簽名版本,v1是jar Signature來(lái)自JDK,只勾選v1簽名并不會(huì)影響什么,但是在7.0上不會(huì)使用更安全的驗(yàn)證方式,只勾選V2簽名7.0以下會(huì)直接安裝完顯示未安裝,7.0以上則使用了V2的方式驗(yàn)證,為了保證兼容性,可以同時(shí)勾選V1和V2。

在Debug調(diào)試版本中,默認(rèn)會(huì)調(diào)用調(diào)試用的簽名證書(shū)debug.keystore,該證書(shū)默認(rèn)存放在C:\Users你的用戶(hù)名.android下。

包名和簽名都相同的APP才可以覆蓋安裝

如何對(duì)Android的APP進(jìn)行簽名

1.簽名的步驟

a.創(chuàng)建key

b.使用步驟a中產(chǎn)生的key對(duì)apk簽名

2.具體操作

方法一: 命令行下對(duì)apk簽名(原理)

創(chuàng)建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目錄下),使用產(chǎn)生的key對(duì)apk簽名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目錄下),把上兩個(gè)軟件所在的目錄添加到環(huán)境變量path后,打開(kāi)cmd輸入

D:\keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

/*說(shuō)明:-genkey 產(chǎn)生密鑰

?-alias demo.keystore 別名 demo.keystore

?-keyalg RSA 使用RSA算法對(duì)簽名加密

?-validity 40000 有效期限4000天

?-keystore demo.keystore */

D:\jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore

/*說(shuō)明:-verbose 輸出簽名的詳細(xì)信息

?-keystore ?demo.keystore 密鑰庫(kù)位置

?-signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個(gè)參數(shù)中依次為簽名后產(chǎn)生的文件demo_signed,要簽名的文件demo.apk和密鑰庫(kù)demo.keystore.*/

注意事項(xiàng):android工程的bin目錄下的demo.apk默認(rèn)是已經(jīng)使用debug用戶(hù)簽名的,所以不能使用上述步驟對(duì)此文件再次簽名。正確步驟應(yīng)該是:在工程點(diǎn)擊右鍵-Anroid Tools-Export Unsigned Application Package導(dǎo)出的apk采用上述步驟簽名。

方法二:使用Eclipse導(dǎo)出帶簽名的apk

Eclipse直接能導(dǎo)出帶簽名的最終apk,非常方便,推薦使用,步驟如下:

第一步:導(dǎo)出。

第二步:創(chuàng)建密鑰庫(kù)keystore,輸入密鑰庫(kù)導(dǎo)出位置和密碼,記住密碼,下次Use existing keystore會(huì)用到。

第三步:填寫(xiě)密鑰庫(kù)信息,填寫(xiě)一些apk文件的密碼,使用期限和組織單位的信息。

第四步:生成帶簽名的apk文件,到此就結(jié)束了。

第五步:如果下次發(fā)布版本的時(shí)候,使用前面生成的keystore再簽名。

第六步:Next,Next,結(jié)束!

方法三:使用IntelliJ IDEA導(dǎo)出帶簽名的apk?

方法步驟基本和Eclipse相同,大概操作路徑是:菜單Tools-Andrdoid-Export signed apk。

android 系統(tǒng)簽名

也有提到怎么單獨(dú)給一個(gè)apk簽名,這里補(bǔ)充一下android的簽名權(quán)限控制機(jī)制。

android的標(biāo)準(zhǔn)簽名key有:

?testkey

?media

latform

hared

以上的四種,可以在源碼的/build/target/product/security里面看到對(duì)應(yīng)的密鑰,其中shared.pk8代表私鑰,shared.x509.pem公鑰,一定是成對(duì)出現(xiàn)的。

其中testkey是作為android編譯的時(shí)候默認(rèn)的簽名key,如果系統(tǒng)中的apk的android.mk中沒(méi)有設(shè)置LOCAL_CERTIFICATE的值,就默認(rèn)使用testkey。

而如果設(shè)置成:

LOCAL_CERTIFICATE := platform

就代表使用platform來(lái)簽名,這樣的話這個(gè)apk就擁有了和system相同的簽名,因?yàn)橄到y(tǒng)級(jí)別的簽名也是使用的platform來(lái)簽名,此時(shí)使用android:sharedUserId="android.uid.system"才有用!

?在/build/target/product/security目錄下有個(gè)README,里面有說(shuō)怎么制作這些key以及使用問(wèn)題(android4.2):

?從上面可以看出來(lái)在源碼下的/development/tools目錄下有個(gè)make_key的腳本,通過(guò)傳入兩個(gè)參數(shù)就可以生成一對(duì)簽名用的key。

其中第一個(gè)為key的名字,一般都默認(rèn)成android本身有的,因?yàn)楹芏嗟胤蕉寄J(rèn)使用了這些名字,我們自定義的話只需要對(duì)第二個(gè)參數(shù)動(dòng)手腳,定義如下:

C --- Country Name (2 letter code) ST --- State or Province Name (full name) L --- Locality Name (eg, city) O --- Organization Name (eg, company) OU --- Organizational Unit Name (eg, section) CN --- Common Name (eg, your name or your server’s hostname) emailAddress --- Contact email addre

另外在使用上面的make_key腳本生成key的過(guò)程中會(huì)提示輸入password,我的處理是不輸入,直接enter,不要密碼!后面解釋?zhuān)米远x的key替換/security下面的。

可以看到android源碼里面的key使用的第二個(gè)參數(shù)就是上面README里面的,是公開(kāi)的,所以要release版本的系統(tǒng)的話,肯定要有自己的簽名key才能起到一個(gè)安全控制作用。

在上面提到如果apk中的編譯選項(xiàng)LOCAL_CERTIFICATE沒(méi)有設(shè)置的話,就會(huì)使用默認(rèn)的testkey作為簽名key,我們可以修改成自己想要的key,按照上面的步驟制作一個(gè)releasekey,修改android配置在/build/core/config.mk中定義變量:

在主makefile文件里面:

ifeq?($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/releasekey)

BUILD_VERSION_TAGS?+=?release-key

這樣的話默認(rèn)的所有簽名將會(huì)使用releasekey。

修改完之后就要編譯了,如果上面的這些key在制作的時(shí)候輸入了password就會(huì)出現(xiàn)如下錯(cuò)誤:

我在網(wǎng)上找到了合理的解釋?zhuān)?/p>

其實(shí)會(huì)出現(xiàn)這個(gè)錯(cuò)誤的最根本的原因是多線程的問(wèn)題。在編譯的時(shí)候?yàn)榱思铀僖话愣紩?huì)執(zhí)行make -jxxx,這樣本來(lái)需要手動(dòng)輸入密碼的時(shí)候,由于其它線程的運(yùn)行,就會(huì)導(dǎo)致影響當(dāng)前的輸入終端,所以就會(huì)導(dǎo)致密碼無(wú)法輸入的情況!

再編譯完成之后也可以在build.prop中查看到變量:

這樣處理了之后編譯出來(lái)的都是簽名過(guò)的了,系統(tǒng)才算是release版本

我發(fā)現(xiàn)我這樣處理之后,整個(gè)系統(tǒng)的算是全部按照我的要求簽名了。

網(wǎng)上看到還有另外的簽名release辦法,但是應(yīng)該是針對(duì)另外的版本的,借用學(xué)習(xí)一下:

make?-j4?PRODUCT-product_modul-user?dist

這個(gè)怎么跟平時(shí)的編譯不一樣,后面多了兩個(gè)參數(shù)PRODUCT-product_modul-user 和 dist. 編譯完成之后回在源碼/out/dist/目錄內(nèi)生成個(gè)product_modul-target_files開(kāi)頭的zip文件.這就是我們需要進(jìn)行簽名的文件系統(tǒng).

我的product_modul 是full_gotechcn,后面加“-user”代表的是最終用戶(hù)版本,關(guān)于這個(gè)命名以及product_modul等可參考

編譯出需要簽名的zip壓縮包之后,就是利用/security下面的準(zhǔn)備的key進(jìn)行簽名了:

./build/tools/releasetools/sign_target_files_apks?-d?/build/target/product/security??out/dist/full_gotechcn-target_files.zip???out/dist/signed_target_files.zi

簽名目標(biāo)文件 輸出成signed_target_files.zi

如果出現(xiàn)某些apk出錯(cuò),可以通過(guò)在full_gotechcn-target_files.zip前面加參數(shù)"-e =" 來(lái)過(guò)濾這些apk.

然后再通過(guò)image的腳本生成imag的zip文件,這種方式不適用與我目前的工程源碼,沒(méi)有做過(guò)多驗(yàn)證!

Android簽名機(jī)制可劃分為兩部分:(1)ROM簽名機(jī)制;(2)第三方APK簽名機(jī)制。

Android APK實(shí)際上是一個(gè)jar包,而jar包又是一個(gè)zip包。APK包的簽名實(shí)際上使用的是jar包的簽名機(jī)制:在zip中添加一個(gè)META的子目錄,其中存放簽名信息;而簽名方法是為zip包中的每個(gè)文件計(jì)算其HASH值,得到簽名文件(*.sf),然后對(duì)簽名文件(.sf)進(jìn)行簽名并把簽名保存在簽名塊文件(*.dsa)中。

在編譯Android源碼生成ROM的過(guò)程中,會(huì)使用build/target/product/security目錄中的4個(gè)key(media, platform, shared, testkey)來(lái)對(duì)apk進(jìn)行簽名。其中,*.pk8是二進(jìn)制形式(DER)的私鑰,*.x509.pem是對(duì)應(yīng)的X509公鑰證書(shū)(BASE64編碼)。build/target/product/security目錄中的這幾個(gè)默認(rèn)key是沒(méi)有密碼保護(hù)的,只能用于debug版本的ROM。

要生成Release版本的ROM,可先生成TargetFiles,再使用帶密碼的key對(duì)TargetFiles重新簽名,最后由重簽名的TargetFiles來(lái)生成最終的ROM。

可以使用Android源碼樹(shù)中自帶的工具“development/tools/make_key”來(lái)生成帶密碼的RSA公私鑰對(duì)(實(shí)際上是通過(guò)openssl來(lái)生成的): $ development/tools/make_key media ‘/C=CN/ST=Sichuan/L=Chengdu/O=MyOrg/OU=MyDepartment/CN=MyName’ 上面的命令將生成一個(gè)二進(jìn)制形式(DER)的私鑰文件“media.pk8”和一個(gè)對(duì)應(yīng)的X509公鑰證書(shū)文件“media.x509.pem”。其中,/C表示“Country Code”,/ST表示“State or Province”,/L表示“City or Locality”,/O表示“Organization”,/OU表示“Organizational Unit”,/CN表示“Name”。前面的命令生成的RSA公鑰的e值為3,可以修改development/tools/make_key腳本來(lái)使用F4 (0×10001)作為e值(openssl genrsa的-3參數(shù)改為-f4)。

也可以使用JDK中的keytool來(lái)生成公私鑰對(duì),第三方APK簽名一般都是通過(guò)keytool來(lái)生成公私鑰對(duì)的。

可以使用openssl x509命令來(lái)查看公鑰證書(shū)的詳細(xì)信息: $ openssl x509 -in media.x509.pem -text -noout or, $ openssl x509 -in media.x509.pem -inform PEM -text -noout

還可以使用JDK中的keytool來(lái)查看公鑰證書(shū)內(nèi)容,但其輸出內(nèi)容沒(méi)有openssl x509全面: $ keytool -printcert -v -file media.x509.pem

有了key之后,可以使用工具“build/tools/releasetools/sign_target_files”來(lái)對(duì)TargetFiles重新簽名: $ build/tools/releasetools/sign_target_files_apks -d new_keys_dir -o target_files.zip target_files_resigned.zip 其中,new_keys_dir目錄中需要有四個(gè)key(media, platform, shared, releasekey)。注意:這里的releasekey將代替默認(rèn)的testkey(請(qǐng)參考build/tools/releasetools/sign_target_files腳本實(shí)現(xiàn)),也就是說(shuō),如果某個(gè)apk的Android.mk文件中的LOCAL_CERTIFICATE為testkey,那么在生成TargetFiles時(shí)是使用的build/target/product/security/testkey來(lái)簽名的,這里重新簽名時(shí)將使用new_keys_dir/releasekey來(lái)簽名。

uild/tools/releasetools/sign_target_files_apks是通過(guò)host/linux-x86/framework/signapk.jar來(lái)完成簽名的。也可以直接使用host/linux-x86/framework/signapk.jar來(lái)對(duì)某個(gè)apk進(jìn)行簽名: $ java -jar signapk [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar 其中,”-w”表示還對(duì)整個(gè)apk包(zip包)進(jìn)行簽名,并把簽名放在zip包的comment中。

對(duì)于第三方應(yīng)用開(kāi)發(fā)者而言,對(duì)APK簽名相對(duì)要簡(jiǎn)單得多。第三方應(yīng)用開(kāi)發(fā)一般采用JDK中的keytool和jarsigner來(lái)完成簽名密鑰的管理和APK的簽名。

使用keytool來(lái)生成存儲(chǔ)有公私鑰對(duì)的keystore: $ keytool -genkey -v -keystore my-release-key.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000

查看生成的密鑰信息: $ keytool -list -keystore my-release-key.keystore -alias mykey -v or, $ keytool -list -keystore my-release-key.keystore -alias mykey -rfc (注:獲取Base64格式的公鑰證書(shū),RFC 1421)

導(dǎo)出公鑰證書(shū): $ keytool -export -keystore mystore -alias mykey -file my.der (注:二進(jìn)制格式公鑰證書(shū),DER) $ keytool -export -keystore mystore -alias mykey -file my.pem -rfc (注:Base64格式公鑰證書(shū),PEM)

對(duì)APK進(jìn)行簽名: $ jarsigner -verbose -keystore my-release-key.keystore my_application.apk mykey

驗(yàn)證簽名: $ jarsigner -verify -verbose -certs my_application.apk

在進(jìn)行Android二次開(kāi)發(fā)時(shí),有時(shí)需要把build/target/product/security下面的公私鑰對(duì)轉(zhuǎn)換為keystore的形式,可以參考這篇文章:把Android源碼中的密碼對(duì)轉(zhuǎn)換為keystore的方法。


分享標(biāo)題:android給應(yīng)用簽名,android應(yīng)用簽名生成
URL標(biāo)題:http://weahome.cn/article/dsgjspg.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部