『壹』 如何发布android 应用程序,app增加签名证书
Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系。证书不是用于用户控制哪些程序可以安装。证书不需要授权中心来签名:Android应用程序上使用自己签名的证书是完全允许且普遍的。
理解Android应用程序签名有以下几个重要点:
·所有的应用程序都必须签名。系统不会安装任何一个不签名的程序。
·你可以使用自己的证书来签名。不需要任何授权中心。
·当你要为最终用户发布你的应用程序的时候,你必须签入一个合适的密钥。你不可以发布程序的时候还使用SDK工具签入的DebugKey。
·系统只在安装应用程序的时候检测证书的有效期。如果应用程序在安装之后证书失效了,那么,应用程序还是可以正常工作。
·你可以使用标准工具——Keytool和Jarsigner——生成Key并签名apk文件。
·一旦你为应用程序签名了,一定要使用zipalign工具来优化最终的APK包。
Android系统不会安装和运行没有正确签名的应用程序。这条规则适用于任何运行Android系统的地方,不管是真机还是模拟器。正是由于这个原因,你必须在模拟器或真机上运行/调试程序之前对程序进行签名。
当你调试应用程序时,AndroidSDK工具替你对应用程序进行了签名。Eclipse的ADT插件和Ant编译工具都提供了两种签名模式——Debug模式和Release模式。
·当开发和测试时,你可以使用Debug模式。在Debug模式下,编译工具使用内嵌在JDK中的Keytool工具来创建一个keystore和一个key(包含公认的名字和密码)。在每次编译的时候,使用这个DebugKey来为apk文件签名。由于密码是公认的,在每次编译的时候,也不需要提示你输入keystore和key密码。
·当你的程序准备发布时,你必须在Release模式下,使用密钥来为apk文件签名。有以下两种方式可以做到:
1.命令行中使用Keytool和Jarsigner。在这个方法中,首先需要编译出一个未签名的apk。然后使用Jarsigner(或相似的工具),用你的密钥为apk手动签名。如果你没有合适的密钥,你可以运行Keytool来手动生成自己的keystore/key。
2.使用ADT导出向导。如果你使用Eclipse/ADT插件进行开发,你可以使用导出向导来编译程序,生成密钥(如果需要),并为apk签名,所有这些操作都在导出向导中。一旦你的程序签名了,别忘了运行zipalign来为apk进行额外的优化。
签名策略
应用程序签名的某些方面可能会影响应用程序的开发,特别是你打算一起发布多个应用程序的时候。一般来说,推荐的策略是在整个应用程序寿命内,所有的程序签上相同的证书。
以下有几个应该这么做的原因:
·应用程序升级——当你对应用程序进行升级时,如果你想用户平稳的升级,那么,你就需要签上相同的证书。当系统安装一个升级应用程序时,如果新版本的证书与老版本的证书有匹配的话,那么,系统才会允许进行升级。如果你没有为版本签上合适的证书,当你安装时,你需要给应用程序指定一个新的包名——在这种情况下,用户安装的新版本,被当作是一个全新的应用程序。
·应用程序模块化——如果应用程序请求的话,Android系统允许签有相同证书的应用程序运行在相同的进程里,这样,系统就会把它们看作是一个单一的应用程序。用这种方法配置应用程序,用户可以选择更新每个独立的模块。
·代码/数据权限共享——Android系统提供了基于签名的权限检查,因此,如果应用程序间签有特定的证书,那么,它们之间可以共享功能。通过多个程序签有相同的证书并且使用基于签名的权限检查,你的程序可以以一种安全的方式共享代码和数据。还有一个决定签名策略的重要因素是:如何设定key的有效期。
·如果你计划支持单个应用程序的升级,你需要确保你的key拥有一个超过期望的应用程序生命周期的有效期。推荐使用25年或更多的有效期。当你的key过期了,用户也就不能平稳的更新到新版本了。
·如果你想给多个无关的应用程序签上相同的key,那么,你必须确保key的有效期超过所有应用程序所有版本的生命周期,包括将来有可能添加到这一阵营的程序。
·如果你想在AndroidMarket上发布你的程序,key的有效期必须在2033.10.22以后。Market服务器强制这一要求,目前是保证用户可以平稳的更新他们的程序。
当你设计应用程序时,一定要把这些点记在脑子里,并且使用一个合适的证书来为应用程序签名。
签名的基本设定
在你开始之前,你必须保证Keytool对SDK编译工具来说是可利用的。多数情况下,你可以通过设置java_HOME环境变量来告诉SDK编译工具如何找到Keytool。另外,你还可以添加JDK中Keytool的路径到PATH的变量里。
如果你在Linux上开发,并且使用GNU编译器来编译Java,那么,请确保系统是使用JDK中的Keytool,而不是gcj。如果Keytool已经在你的PATH中,它有可能是对/usr/bin/keytool的符号链接。在这种情况下,检查符号链接的目标,确保它是指向JDK中的Keytool。如果你打算对公众释放你的应用程序,你还需要Jarsigner工具。Jarsigner和Keytool都包含在JDK中。
Debug模式下签名
Android编译工具提供了Debug签名模式,使得开发和调试应用程序更加容易,而且还满足Android系统的签名要求。当使用Debug模式编译你的app时,SDK工具会调用Keytool工具自动创建一个Debug的keystore和key。然后,这个Debugkey会自动用于apk的签名,这样,你不需要使用你自己的key来为应用程序包签名。
SDK工具使用预先定义好的名字/密码来创建Debugkeystore/key:
·Keystore名字:“debug.keysotre”
·Keystore密码:“android”
·Key别名:“androiddebugkey”
·Key密码:“android”
·CN:“CN=AndroidDebug,O=Android,C=US”
如果需要的话,你可以改变Debugkeystore/key的位置和名字,或者提供一个自定义的Debugkeysotre/key。然而,任何自定义的Debugkeystore/key必须使用和默认Debugkey(上面描述的)相同的名字和密码。(在Eclipse/ADT中,操作Windows>Preferences>Android>Build实现。)
注意:你不能将签有Debug证书的应用程序发布给公众。
Eclipse用户
如果你在Eclipse/ADT下开发(并且已经按照上面描述的“签名的基本设定”配置了Keytool),Debug模式下签名默认是开启的。当你运行或是调试应用程序时,ADT会使用Debug证书进行签名,并运行zipalign,然后安装到选择的模拟器或是连接上的设备。整个过程不需要你参与,前提是ADT能访问Keytool。
Ant用户
如果你使用Ant来编译你的apk文件,需要在ant命令中添加debug选项来开启Debug签名模式(假设你正在使用由android工具生成build.xml文件)。当你运行antdebug来编译你的程序时,编译脚本会生成一个keystore/key,并为apk进行签名。然后脚本会使用zipalign工具对apk进行对齐处理。整个过程不需要你参与。阅读“其它IDE下开发:Debug模式编译”来了解更多的信息。
Debug证书过期
Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。
当证书失效时,你会得到一个编译错误,在Ant编译上,
错误如下:
debug:
[echo]Packagingbin/samples-debug.apk,andsigningitwithadebugkey...
[exec]DebugCertificateexpiredon8/4/083:43PM
在Eclipse/ADT中,Android控制台上你将会看到一个相似的错误。
为了解决这个问题,只需要删掉debug.keystore文件即可。AVD默认存储的位置在:~/.android/avd(OSX和Linux),C:DocumentsandSettings\.android(WindowsXP),C:Users\.android(WindowsVista)。
当下一次编译的时候,编译工具会重新生成一个新的keystore和Debugkey。
Release模式下签名
当你的程序准备好释放给其它用户时,你必须:
1.获取一个合适的密钥
2.在Release模式下编译程序
3.使用密钥签名程序
4.对齐APK包
如果你是使用Eclipse/ADT插件开发,你可以使用导出向导来完成编译、签名和对齐等操作。在整个过程中,导出向导甚至还可以生成一个新的keystore和密钥。因此,如果你使用Eclipse,你可以直接跳到“使用EclipseADT编译和签名”。
获取一个合适的密钥为了进行程序的签名,首先,你必须有一个合适的密钥。密钥指:
·个人持有。
·代表个人、公司或组织实体的身份。
·拥有一个有效期。有效期推荐超过25年。
如果你在AndroidMarket上发布你的程序,需要注意一点的是:程序的有效期需要在2033.10.22之后。你不能上传一个应用程序,而它的key的有效期是在这个日期之前。
·不是由AndroidSDK工具生成的Debugkey。
如果你没有一个合适的key,你一定要使用Keytool来生成一个。如“基本设定”中描述的,确保Keytool可用。
为了用Keytool生成一个key,使用keytool命令并传入一些可选参数,如下表所示。
警告:确保密钥的安全。一定要阅读“安全储存你的密钥”中讨论如何确保你的密钥的安全以及这对你和用户为何如此重要。尤其是,当你生成你的密钥时,一定要为keystore和key使用强密码。
『贰』 小程序已经关联公众号成功,自定义菜单跳转小程序时显示小程序未发布
如果显示小程序未发布的话,那可能小程序还没有上线,那就登录微信公众平台——小程序账号,在开发设置里把小程序发布上线即可。
『叁』 vfp的系统作好后如何进行应用程序连编与发布
项目管理器提供了管理他们的集成环境。 1.项目管理器,将数据库、表单、程序等所有文件加入到项目文件中 2.设置项目的主文件 用户运行应用程序时,首先执行的是主文件,之后由主文件依次调用其他组件。 可以定义主文件的有程序文件、菜单、表单以及查询,VFP默认添加到项目中的第一个此类文件为主文件。更改主文件的方法:在项目管理器中选定文件,项目?设置主文件 3.连编项目 连编项目的目的是让VFP系统对项目的整体性进行测试。主文件一旦确定,项目连编时会自动将各级被调用文件增入项目管理器,但数据库、表、视图等数据文件不会自动增入。连编以后,除了被设置为“排除”的文件,项目包含的其他文件将合成为一个应用程序文件。 连编项目: BUILD PROJECT 连编应用程序:.app BUILD APP FROM 连编可执行文件:.exe BUILD EXE FROM 应用程序文件(.app)只能在VFP环境下运行 可执行文件(.exe)既可以在VFP环境下运行,也可以在Windows环境下运行,但必须和动态链接库Vfp6r.dll和 Vfp6rchs.dll(中文版)或Vfp6renu.dll(英文版)一起构成VFP所需的完整运行环境(注意必须放在同一个目录下)。 4.文件的包含和排除 项目管理器中的文件可分为“包含”和“排除”两种类型,左侧有?标记的文件是“排除”文件,其余则是“包含”文件。 当项目连编时,VFP将项目包含的所有文件组合成为单一的应用程序文件,并使这些文件都变为只读。设置为“排除”的文件可以由用户修改。通常将可以执行的文件(例如表单、报表、查询、菜单和程序)设置为“包含”,而数据文件则根据是否允许写入来决定要否设置为“排除”。总之,所有不允许用户更新的文件应设置为“包含”。 更改文件类型的方法:在项目管理器中选定文件,项目?包含/排除 5.主文件的设置 通常,将一个.prg文件设为主文件(主程序文件)。主程序文件应完成的任务如下: ①对应用程序的环境进行初始化,如打开数据库、声明变量、设置SET等。 ②显示初始的用户界面 ③控制事件循环 显示出初始的用户界面后,还需要建立一个事件循环来对用户的操作作出响应。因此主程序中要用READ EVENTS 语句启动事件循环。 当事件循环开始以后,应用程序将控制权交给最后一个显示出来的界面来处理,这个界面退出时要用CLEAR EVENTS语句结束事件循环。 注意:如果在主文件中没有包含READ EVENTS,在VFP环境中可以正确地运行应用程序,但是离开VFP环境运行应用程序时,会出现程序显示片刻就退出的现象。 6.运行应用程序 DO DO 一个主程序(.prg)的例子如下: set directory to curdir() &&将程序的资源路径设为当前程序所在的文件夹 set sysmenu off &&不显示系统菜单 set talk off set safety off set deleted on &&不显示被逻辑删除的记录 set century on set date to ymd set mark to ‘.’ *set status bar off &&不显示VFP状态条 on shutdown quit &&若没有这句,可能不能退出VFP。
『肆』 小程序上线还有哪些需要注意
小程序现在的火爆程度毋庸置疑,不少朋友都想做自己的小程序,但在小程序上线之前,有些事情必须提前了解,不然辛辛苦苦开发出来的小程序无法上线就得不偿失了。
主体类型选择
主体类型主要分为个人主体及非个人主体,个人主体不需要解释吧,身份证,实名认证的微信就可以;非个人主体,包含企业、政府机构、公益机构等,我们在此主要就讲一下企业主体就好了,个人主体与企业主体有哪些区别呢?
1. 类目支持不同
个人主体支持的类目十分有限,基本限制于单一工具,如果你想做一些电商、金融相关类目的,那必须使用企业主体
2. 小程序广告收益结算不同
个人主体接入小程序广告后,所产生的小程序广告收入将直接转入个人银行账户内,当每月收入高于800元时,超过的部分需要交纳至少20%的个人所得税;
企业主体,则必须先开具增值税发票并邮寄后会会进行打款。
3. 对于小游戏要求提供的资质不同
如果您是开发小游戏,个人主体,只需要提交《计算机软件著作权登记证书》、《游戏自审自查告》即可,但不支持游戏内道具收费;企业主体,要求比较高,除需要提交《计算机软件著作权登记证书》外,还需要提交《广电总局版号批文》 、《文化部备案信息》、《游戏自审自查报告》,而现在广电总局已经暂停版号批文。
名称选择
名称的选择很重要,名称现在在微信搜索中所占的权重很高,一个好的名字能够给你带来可观的自然搜索流量。在选择名称之前,建议你通过微信指数小程序先查一下关键字的热度,如果热度太低,一般来说搜索自然流量不会太大,而自然搜索流量,会是小程序前期一个最主要的流量来源,因此要慎重考虑。
个人小程序,一年内有2次修改名称的机会,并且,此操作免费,不要钱。
企业小程序,未上线之前,一年之内同样有2次修改名称的机会,但上线之后,想要改名就麻烦了,上线之后改名,只能通过认证的方式改名,每次认证费用300元/年,为了你的钱包,还是先想好名字,省的以后麻烦吧。
类目选择
类目每个月可以修改3次,最好在注册小程序的时候,就一次性把类目选择好。类目不要胡乱选择,类目选择不对,提交审核的时候将无法通过审核,无法上线。
审核规则
老实说,在审核规则这块,我个人觉得对于个人开发者不是太友好,表现在以下几点:
1. 审核周期可能过长
小程序的审核,对于个人账号有时候真的是一言难尽,曾经碰到过一些小程序,提交审核之后3天才有反馈结果,如果你做的是蹭热点的小程序,三天之后热点早过了,白白浪费机会。
2. 类目范围不清晰
个人号本身所支持的类目就少,更可气的是,经常在合规范围内迷之困惑的不通过
本人曾经开发过一个贺卡类小程序,曾经被拒绝的原因如下:
(1):你好,经核实,该小程序【我也要制作】涉及用户自定义内容的记录及分享,包括文字、图片、视频、音频等,属个人小程序未开放类目,建议选择企业主体小程序,或自查代码,确保含相关内容的前端展示、小程序代码等整体均移除,然后重新定位小程序功能再提交审核。 请根据上述原因对小程序进行修改,并重新提交代码审核。 若对上述原因无法理解,可前往反馈页面进行反馈。
然而,实际上那个 “我要制作” 的按钮,只是链接到该小程序的其它界面,根本不涉及拥挤自定义的内容,后面去除该按钮审核就通过了,你说可不可气?
企业主体的小程序,一般不会碰到这些问题
3. 变现能力有限
基本个人主体的变现,就只有流量主这一条途径,给其它第三方引流,经常会被拒绝掉。
某次给一小游戏导流被拒的经历:
(1):商业推广涉及个人小程序未开放类目内容,建议选择企业小程序。 如有疑问,请查看详情与反馈。
对于企业号,有几下几点需要注意:
1. 虚拟支付
虚拟支付,是指非购买实物的交易,比如说购买会员资格、游戏道具、内容付费等。 目前小程序关闭了ios中的所有虚拟支付通道,如果你的小程序有涉及以上支付,审核将会很难通过。
2. 资质文件
有不少类目需要提供一些企业资质文件,如《网络文化经营许可证》、《增值电信业务经营许可证》,建议根据企业自身的情况对于产品进行合理的立项,避免开发完成后无法上线的情况发生
3. 其它违规违法内容
这个应该是个常识内容,违法类的小程序根本就不用想了,不会让你上的。注意噢,有涉及三级分销的,一样会审核被拒。
以上一些经验之谈,希望能够帮助到各位,欢迎大家关注我的百家号,我会持续更新关于小程序的更多内容
『伍』 如何把一个java程序打包成exe文件,运行在没有java虚拟机的机器上
首先,将编译好的程序打包成文件,然后做出exe,这样代码就不可见了;但是exe文件在没有安装jre的电脑上不能运行,如果要求客户再去安装jre 设置环境变量 就不雅了。我们需要将jre打包。
这几步操作网上介绍的插件和方法很多,但有的好用有的不好用,而且有的还需要注册。经过尝试比较,在“千里冰封”的博客上得到了很大的帮助。整理一下。使用这几个工具,您也可以顺利的发布您的java程序!
1 打包成双击可执行的jar文件。
推荐插件:fatJar(Eclipse使用)
下载地址 http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924
我用的是Eclipse,它自带的打包方法在打包一些图片等资源时不是很爽。可以使用这个插件。
安装方法解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.24文件夹拷到eclipse安装目录的plugins 下。
用此工具可以方便的将eclipse中的工程打包成jar文件。如果是要打成可执行的jar请注意选取主类。
你的项目=〉Export..=>向导里有fat jar =>...
2 将jar文件转换成exe文件。
推荐工具:exe4j
用exe4j把java打包成exe
http://www.blogjava.net/hadeslee/archive/2007/10/12/152228.html
在我们写程序的时候,有时会有一种需求,那就是希望我们的程序是一个可执行文件,而不是一个 jar文件,其实大部份时候,可执行的jar文件都可以满足要求,但是如果我们的程序是需要保护的,那么打包成jar文件就不太安全了,因为jar文件就是一个解压缩文件,一解压就什么都能看到了,当然也可以选择混淆,但是混淆了以后排错就没那么容易了,因为混淆的时候,把一些类的信息都混淆了。如何既保证代码的安全又容易排错呢?那么打包成exe就是一种很好的办法了,其实我今天介绍这个方法并不是希望大家去打包成exe文件,因为exe文件毕竟不是跨平台的,用了exe的格式就失去了java的初衷了。
exe4j可以打包成各种格式的exe,可以把jar打包进exe,也可以引用一个外部的 jar文件,还可以打包成windows服务的程序,并且可以设置最低jre的版本,还可以设定启动画面,虽然java6.0已经实现了这一点,但是还是没有exe4j生成的启动画面快。
3 将exe文件并jre打包成安装文件,可以在没有安装java虚拟机的电脑上运行
推荐工具:install4j
Install4j介绍
http://www.blogjava.net/hadeslee/archive/2007/10/15/152855.html
install4j是一个功能强大的,多平台Java安装文件生成工具,用于生成Java应用程序本地化的安装及应用程序发布。 install4j 的优异性在于它易于使用,紧密的集成到目标平台,以及灵活的JRE 管理与部署选项。
创建发布树
install4j的图形用户界面允许你:
* 完全自定义发布树
在发布树的每一个目录中,你能设置整个目录内容或是磁盘上任何目录的单个文件。定义的视图与结果视图让你能完全控制安装程序将发布的文件。
* 处理特定平台的差异
install4j提供方便的“包含/排除”机制,使其适应平台方式来进行发布。
* 针对Unix, Linux 及Mac OS X所定义的文件权限
对发布树的每一个元素,当其安装在类似于Unix这样的平台上时,你能自定义用户访问的权限。
* 定义优良的卸载策略
对发布树的每一个元素,你能决定在卸载时是否删除它。
* 定义覆盖策略
对发布树的每一个元素,你能配置不同的覆盖策略,当安装过程中需要覆盖文件时,这些覆盖策略会指示nstall4j进行相应的操作。
* 定义安装的组件
你能定义文件及目录的分组,形成分离的安装组件,这样你就可提供给用户来选择只安装一定的组件。
其实一个好的应用如果不太好布署,那么别人也只能对它望而兴叹了,现在有了 install4j,很多布署的问题几乎全部解决了.我们可以用exe4j打包java应用,然后用install4j发布java应用,以前java程序布署难的问题,现在几乎都解决了.install4j不但用于打包很合适,并且它还提供了一组很强大很实用的与平台相关的api.这些对于扩展我们的程序也是有很大的帮助的.
http://blog.csdn.net/jimmy292/archive/2009/03/06/3963623.aspx