运行android程序会默认生成签名吗
这个的默认的密码是killer
你好:
解决方案:当然了,你首先得生成一个jks文件,也就是我们eclipse里面的签名文件,不会的百度一下。
①在project structure里面添加一个设置,如图所示
选择你生成的jks文件位置,里面的Key Alias 和密码是你生成jks的时候进行设置的。
然后我们build一下项目。
下面我们打开我们的module里面的build.gradle。
里面增加了我们之前设置的信息。对,这就是我们所需要的。
记住我们箭头所指的位置,我们下面还要用到哦~~
当然了,你也可以通过直接在build.gradle里面写这段话。
在android里面添加这段话
[html] view plaincopy
buildTypes {
release {
/* minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'*/
signingConfig signingConfigs.key
}
debug{
signingConfig signingConfigs.key
}
}
注意,这里箭头所指的就是我们之前提醒过你要记住的位置。
OK,现在再运行一次,就可以实现了。
由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相当名字,但是签名不同的包不被替换。
APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
这样签名其实也是开发者的身份标识。交易中抵赖等事情发生时,签名可以防止抵赖的发生。
二、签名的注意事项
Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。
Android签名的数字证书不需要权威机构来认证,是开发者自己产生的数字证书,即所谓的自签名。数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序。
系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。
可以使用标准工具-Keytool and Jarsigner-生成密钥,来签名应用程序的.apk文件。
签名后需使用zipalign优化程序。
模拟器开发环境,开发时通过ADB接口上传的程序会先自动被签有Debug权限,然后才传递到模拟器。Eclipse菜单的Window -> Preferences -> Android –> Build 下显示的是我们默认的调试用的签名数字证书。
正式发布一个Android应用时,必须使用一个合适的私钥生成的数字证书来给程序签名,不能使用ADT插件或者ANT工具生成的调试证书来发布。
三、签名方法:
1.使用Keytool 和jarsigner工具签名(在jdk/bin目录下)
1.生成签名keystore:
确保电脑上安装了JDK,因为我们将使用JDK自带的创建和管理数字证书的工具Keytool。在命令行下输入如下命令:
keytool -genkey -v -keystore app.keystore -alias alias_name -keyalg RSA -validity 20000
-alias 后面跟的是别名这里是alias_name
-keyalg 是加密方式这里是RSA
-validity 是有效期这里是20000
-keystore 就是要生成的keystore的名称这里是app.keystore
然后按回车键
按回车后首先会提示你输入的密码:这个在签名时要用的,要记住
然后会再确认你的密码。
之后会依次叫你输入姓名、组织单位、组织名称、城市区域、省份名称、国家代码(CN)等。
2.签名:
jarsigner -verbose -keystore app.keystore -signedjar app_signed.apk app.apk alias_name
-keystore: keystore的名称
-signedjar app_signed.apk: 指定签名后生成的APK名称
app.apk: 目标APK
然后按回车:会要求输入刚才设置的密码,输入后按回车就开始签名了。
3.查看签名:
jarsigner -verify app_signed.apk
查看是否签名,如果已经签名会打印 "jar verified".
jarsigner -verify -verbose -certs app_signed.apk
查看签名详细信息。
4.通过zipalign工具进行优化apk(android自带的工具,./build/tools/zipalign)
zipalign -v 4 app_signed.apk androidres.apk 对apk优化
zipalign -c -v 4 androidres.apk 查看apk是否经过优化
2.使用eclipse ADT工具签名
在Package Explorer 窗口,右键,选择Android Tools--->Export Signed Application Package 然后按照提示一步一步,生成已签名的apk。通过eclipse也可以导出未签名的APK文件。
注:需要输入两次密码,第一次是私钥密码,第二次时私钥别名的密码。
3.eclipse在debug模式下自动签名(无须手动配置):
在debug模式下用eclipse 的ADT为android签名,只要应用程序在eclipse下开发,系统就会自动给apk签名和优化。
在Eclipse中Windows > Preferences > Android > Build可以看到你keysotre的位置;
四、生成Android系统签名
上面讲的Android数字签名大多是与Android APK相关,做CTS 认证时,需要用到Android系统签名。为什么需要给Android系统签个名才能进行CTS认证呢?原来我们通过make -j4编译出来的system.img使用的是test key,这种类型的key只适用于开发阶段,而且这种秘钥是公开的,谁都可以使用。当发布一款android产品,就需要另外给整个系统签个名,防止被别人盗用。这种系统就是release版本的Android系统。
1、生成加密key文件
要对Android系统进行签名,需要生成四种类型的key文件。
a)releasekey (testkey)
b)media
c)shared
d)platform
1)进入/android_src/development/tools目录。
2)使用make_key工具生成签名文件。需要分别生成 releasekey,media,shared,platform。
./make_key releasekey '/C=CN/ST=JiangSu/L=NanJing/O=Company/OU=Department/CN=Your Name/emailAddress=YourE-mailAddress' (系统将会提示输入针对各种key的密码,按照提示输入即可)
将会生成 releasekey.pk8 和 releasekey.x509.pem文件,其中 *.pk8是生成的私钥,而*.x509.pem是公钥,生成时两者是成对出现的.
注:如果出现 openssl : relocation error :openssl : symbol ...尝试用 sudo 执行命令,问题解决了!
2.回到根目录android_src。
命令执行的时候都最好在工程的根目录下执行,要不然脚本用到的某些文件找不到的。
3.编译系统
make -j4 PRODUCT-generic-user dist
其中generic 表示生成的TARGET_PRODUCT类型为generic,
user代表TARGET_BUILD_VARIANT为user版本。
编译完成之后回在android_src/dist/目录内生成个product_generic-user_files开头的zip文件.这就是我们需要进行签名的文件系统.
4.开始签名
./build/tools/releasetools/sign_target_files_apks -d key_directory/ out/dist/product_modul-target_files.zip out/dist/signed_target_files.zip
通过sign_target_files_apks 脚本,完成android系统的签名工作.
key_directory/ 表示key所在的目录。
out/dist/product_modul-target_files.zip 源文件。
out/dist/signed_target_files.zip 生成签名的目标文件。
可能会出现:
ERROR: no key specified for:
CalendarWidget.apk
Contacts_yellowpage.apk
SnsAppMain.apk
这表示,签名并没有成功,原因是由于有些apk程序已经签过名了或者找不到对应的key. 这需要我们对apk设置过滤,不对上面的应用进行签名.方法如下:
通过参数"-e <apkname>=" 来过滤这些应用.
./build/tools/releasetools/sign_target_files_apks -d key_directory/ -e CalendarWidget.apk= -e Contacts_yellowpage.apk= -e SnsAppMain.apk= -e out/dist/product_modul-target_files.zip out/dist/signed_target_files.zip
输入该命令时会提示输入key的密码,会出现四次密码输入提示。分别为四种类型的key的密码。
5.生成image文件
./build/tools/releasetools/img_from_target_files out/dist/signed-target-files.zip signed-img.zip
用img_from_target_files 命令对生成的igned-target-files.zip文件进行打包,signed-img.zip包含了boot.img,userdate.img,system.img文件等.
6.通过fastboot下载signed-img.zip文件
fastboot update signed-img.zip
通过fastboot就可以把签了名的系统文件烧到手机上了。
自行开发的android程序能在miui上运行吗?
可以的。它也是android系统,就是官方稳定系统的版本不高,目前好像只支持到googleAPI10
Android进程间和线程间通信方式
Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听这些广播。 5.AIDL方式 Service和Content Provider类似,也可以访问其他应用程序中的数据,Content Provider返回的是Cursor对象,而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。 AIDL通过定义服务端暴露的接...
编写安卓软件用什么语言编写安卓软件
怎么去创造一个软件?开发一个APP需要的基本分工:1、程序员开发安卓APP是基于java,因此需要精通java;开发IOS的APP需要基于C语言,前端、后台、服务器等需要的语言都不同。2、设计师好的APP需要至少UI设计师,负责美化APP界面、交互等。3、产品经理从APP定位、目标人群划分、需求分析、文档输出等都需要...
我想做个安卓系统的软件,需要先学哪些东西
5、TheAndroidEmulatorandRealDevices 一旦开始开发Android程序,那么一定需要看到程序的运行结果,这就是Android的模拟器,可让在不同的设备上测试Android应用的运行效果 6、LogCat LogCat是Android中一个命令行工具,可以用于得到程序的log信息。Android日志系统提供了记录和查看系统调试信息的功能。日志都是从...
android开发如何调试
你可以用这个程序创建一个新的 Android工程或者在现有代码上创建工程,如SDK中包含的例子。对于Linux 和Mac系统,SDK提供activityCreator.py,一个 Python脚本,Windows上则是activityCreator.bat一个批处理脚本。无论是哪种平台,用法是一样的。按以下步骤运行activityCreator创建Android工程:在命令行下,切换到SDK下的tools\/...
求教一个问题,命令行编译Android程序,如何用proguard混淆
针对android 选择user版本进行编译的时候,会出现proguard错误,我们需要知道的事情 1.proguard是做什么的,他的作用是将java代码进行混淆的工具 2.因为proguard是混淆工具,所以android的mk文件也对其支持为两种方式:1.指定不需要混淆的native方法与变量的proguard.flags文件如:LOCAL_PROGUARD_FLAG_FILES := ...
想成为一个Android开发工程师,还需学习其他什么技术?
d)ruby on rails:这是我个人最喜欢的服务器端技术,简洁,优雅,寥寥几行代码,就可以实现很复杂的功能,但是这需要Ruby语言知识作为基础;至于选择哪一种知识,就看大家自己的判断了,毕竟每个人想法不一样,爱好也不相同。安卓开发学习书籍 书的话建议买 精通Android2 ,或者 Android2高级编程 这两...
Android开发环境搭建(jdk+eclip+android sdk)
前一种70多M。windows.zip" target=_blank rel=nofollow>完全版下载 (android sdk 2.1 r01)升级版下载 (建议使用这个,本例子就是使用这个这里面不包含具体版本,想要什么版本在Eclipse里面升级就行)二 软件安装(1)安装jdk 6u19 安装完成即可,无需配置环境变量(2)解压eclipse eclipse无需安装,...
adb重启是什么意思(开启adb重启是怎么回事)
adb为androidsdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机)。它的主要功能有:运行设备的shell(命令行);管理模拟器或设备的端口映射;计算机和设备之间上传\/下载文件;将本地apk软件安装至模拟器或android设备。进入了adb模式,建议按音量减键选择重启按开关键...
与Android应用程序相关的文件目录都有哪些
通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。例如上面的HelloWorld.java源文件中 的:import android.app.Activity; import android.os.Bundle;这里两行代码就是从android.jar导入包。1.4、assets 包含应用...
麻缪丽珠: 干嘛还要这么麻烦呢,你每次修改、每次执行完程序的时候,在bin目录都有一个生成的Apk文件,这个文件直接安装到移动设置或者发布出去就行了吧,不知道是不是我误解你的意思了.
任县17316508736: android系统自带程序没数字签名可以更新? - ?
麻缪丽珠: 原理上讲,所有的android程序都有数字签名才能安装的,没有特别生成的,android都会有默认的数字签名debug.keystore,但是在不同的电脑系统上,很有可能生成的debug.keystore不一致,因为不同的电脑系统可能使用的算法不一样.
任县17316508736: 我的android项目已经生成了签名但不知道这个签名是什么也不知在哪查看 - ?
麻缪丽珠: 签名的apk自己无法查看,是安装的时候android系统验证用的.1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名...
任县17316508736: 求问,Android程序如何修改数字签名 - ?
麻缪丽珠: 破坏原来签名后再签名,反编译,解压都可以……再生成apk签名 签名方法:http://www.cnblogs.com/maxinliang/p/3169335.html 有源码用eclipse生成时签名 http://jingyan.baidu.com/article/c910274bfd8c00cd361d2d97.html
任县17316508736: android 通用签名有哪些 - ?
麻缪丽珠: 系统默认的四种签名类型: 四组默认签名供Android.mk在编译APK使用: 1、testkey:普通APK,默认情况下使用. 2、platform:该APK完成一些系统的核心功能.经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system. 3、shared:该APK需要和home/contacts进程共享数据. 4、media:该APK是media/download系统中的一环. 应用程序的Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签名,未指定的默认用testkey.
任县17316508736: 如何将android应用生成签名 - ?
麻缪丽珠: 1.签名的步骤a.创建keyb.使用步骤a中产生的key对apk签名2.具体操作方法一: 命令行下对apk签名(原理)创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_...
任县17316508736: 安卓开发的程序怎么到处apk在手机上用? - ?
麻缪丽珠: 1. apk 有两种,一种是 debug 签名 和 自己的keystore 签名2. IDE 在运行程序的时候会自动生成一个 debug 签名的程序,不同 IDE 生成的位置不一样,Eclipse 在 项目的 /bin 目录下,Android Studio 在 /out/production/ 下3. IDE 都提供了导出自签...
任县17316508736: Android签名有什么作用 - ?
麻缪丽珠: 平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以Debug面试进行编译的,因此ADT根据会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签...