Android应用签名打包

给你的Android应用签名

Android要求所有的应用在安装之前需要进行数字证书的签名,Android利用数字证书给来识别应用程序的作者,并且证书不需要由证书颁发机构进行签名。Android应用程序通常使用自签名证书。该应用的程序开发者持有证书的私钥。

签名概览

你可以在debug或者release模式下进行签名。你可以在开发期间在debug模式下对应用进行签名或者将要发布应用时在release模式下对你的应用进行签名。Android SDK在debug模式下生成一个证书对应用进行签名。为了在release模式下对应用签名,你需要生成自己的证书。

Debug模式下签名

在debug模式下,你使用Android SDK tools生成的证书对应用进行签名。这个证书拥有一个私钥和一个公钥,因此你可以在每次更改项目的时候不需要指定密码就可以运行和debug(调试)你的App。

当你通过IDE运行或者调试应用的时候,Android Studio在Debug模式下自动对你的应用进行签名。

你可以运行或者调试一个签名的app在debug模式下通过模拟机或者用USB链接到你的开发机上,但是你不能把debug模式下签名的app发布。

默认的情况下,debug配置使用一个debug keystore,通过公钥和默认已知的密码。debug keystore位于

$HOME/.android/debug.keystore

并且在不存在时创建。debug 构建类型自动配置为使用debug SigningConfig。

若想要获得关于在debug模式下构建和运行app的信息,请参见 Building and Running

Release模式下签名

在release模式,你需要用自己证书对你的app进行签名。

  1. 创建keystore:keystore是一个包含一些列私钥的二进制文件,你必须保证你的keystore存储在一个安全的地方。
  2. 创建私钥:一个私钥代表应用被识别,例如一个人或者公司实体。
  3. 在app modlue的build文件中添加signing configuration:
    ...
    android {
     ...
     defaultConfig { ... }
     signingConfigs {
         release {
             storeFile file("myreleasekey.keystore")
             storePassword "password"
             keyAlias "MyReleaseKey"
             keyPassword "password"
         }
     }
     buildTypes {
         release {
             ...
             signingConfig signingConfigs.release
         }
     }
    }
    ...
    
  4. 在Android Studio中调用
    assembleRelease
    构建任务。
    在包
    app/build/apk/app-release.apk
    中会用你的release key签名应用。

    注意:在build file(构建文件)中包含你的release key密码和keystore不是一个良好的安全习惯,你可以配置build file去获取在环境变量中的密码或者构建过程中输入密码。

从环境变量中获取密码:


storePassword System.getenv(“KSTOREPWD”)
keyPassword System.getenv(“KEYPWD”)

在构建过程中提示你输入密码,如果你在命令行模式下构建:


storePassword System.console().readLine(“\nKeystore password: “)
keyPassword System.console().readLine(“\nKey password: “)

完成这些步骤后你可以在Google Play中发布你的应用。

警告:把你的keystore和私钥放置在一个安全的地方,并且确保你有一个安全的备份。如果你发布一个app到Google Play并且失去了你签名app的key,你将不能发布更新你的app,因为你必须签名所有版本的app用相同的key。

接下来将会详细的介绍如何生成私钥和通过Android Studio签名你的app。

在Android Studio中签名你的app

为了在release模式下签名你的app,请遵循以下步骤:

  1. 在菜单栏上,点击Build>Generate Signed APK

  2. 在Generate Signed APK向导窗口中,点击Create new 创建新的keystore,如果你已经有了一个ksystore请转向第4步。

  1. 在New Key Store窗口,在图1中提供了必要的信息。你的key需要至少在25年验证,所以你可以签名app更新用同样的key通过你的app 生命周期。

    figure1

    图1:在Android Studio中创建keystore

  2. 在Generate Signed APK 向导窗口,选择一个keysore,一个私钥,并且输入密码,然后点击Next.

    图2

    图2:在Android Studio上选择一个私钥

  3. 在下一个窗口为签名的APK选择一个目标并且点击finish.

    图3

    图3:在Android Studio中生成签名apk

自动签名你的app

在Android Studio中,在构建的过程中你可以配置你的project去自动签名release APK。

  1. 在项目浏览器中,右点击你的app并且Open Modules Settings.

  2. 在Project Structure 窗口,在Modules中选择你的app module.

  3. 点击Signing tab

  4. 选择你的keystore文件,为signing configuration输入名字并且输入必要的信息。

    图4

    图4:创建一个signing configuration

  5. 点击Build Types tab.

  6. 选择 release 构建

  7. 在Signing Config,选择你刚刚创建的signing configuration

    图5
    图5:选择signing configuration

  8. 点击OK

你也可以在Gradle configuration 文件中指定你的签名配置,更多信息请查看 Configuring Gradle

手把手教你如何访问谷歌

一、安装curl

点击下载

下载之后将curl.exe放置在“C:\Windows\System32”路径下边

二、建立批处理文件auto-hosts.bat

用nodepad++或者subline打开文件,然后将下列代码粘贴进去:

curl  -k -o hosts  https://raw.githubusercontent.com/racaljk/hosts/master/hosts
move /Y hosts C:\Windows\System32\drivers\etc\hosts 
ipconfig /flushdns

三、点击auto-hosts.bat执行

接下来你会发现可以访问谷歌了,当无法访问谷歌时可以再次执行该文件,
开启你的科学上网之路吧。

EJS入门教程

第一部分包括简介、安装
第二部分主要进行代码的实际练习

一、前奏

1.1 简介

EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串。

优点:有着明确的、维护性良好的HTML结构,在数据填充方面有着先天的优势。

缺点:更像原生的HTML,使用起来不简洁,关键是不支持模板继承。

工作模式如下:
工作模式

1.2 安装

下载: 点击下载
使用:

<script type="text/javascript" src="ejs_production.js"></script>  

二、实战

2.1创建cleaning.ejs

代码如下:

<p><h1><%= title %></h1>
<ul>
  <% for(var i=0;i<supplies.length;i++){ %>
     <li>
          <a href='supplies/<% supplies[i] %>'>
              <%= supplies[i] %>
          </a>
     </li>
  <% } %}
</ul></p>

<% %>的作用: 简单的说法就是逻辑执行语句
<%= %>的作用:你大概根据“=”猜测出来是赋值语句了,确实是这样的,

<%=5%> 你将会在html页面中看到数字5。

注意 中“%”以及“%=”与代码之间要有一个空格的间隔,不然会出现错误。

2.2使用cleaning.ejs

我们需要添加JavaScript来控制加载和渲染模板。我们将用下面的替换字符串串联的原代码:

//加载模板文件并使用数据来渲染它
var html = new EJS({url:'cleaning.ejs'}).render(data);

如果你在html页面中看到了json中的数据显示出来,感觉特别棒。写法如此简单。
如果没有任何效果,请检查你的书写。