第一行代码(十五)

第十五章的主要内容是 App 应用的一些收尾工作,比如打包,上架之类的事情。

一、生成正式签名的 APK 文件

  AndroidStudio 将应用程序安装到手机的流程:首先将程序代码打包成一个 APK 文件,然后将文件传输到手机上,最后再执行安装操作。Android 系统会将所有的 APK 文件识别成应用程序的安装包,类似于 Windows 系统上的 .exe 文件。
  但是并不是所有的 APK 文件都能成功安装到手机上,Android 系统要求只有签名后的 APK 文件才可以安装,那为什么通过 AndroidStudio 运行程序的时候并没有进行签名操作?因为Android Studio 使用了一个默认的 keystore 文件帮我们自动进行了签名。

第一行代码(十五)_第1张图片
查看默认 keystore 文件图1

  双击它
查看默认 keystore 文件图2

  我们通过 Android Studio 来运行的程序都是用这个 debug.keystore 文件来进行签名的。那么如何生成一个正式的签名呢?

使用Android Studio生成

  使用 Android Studio 来生成正式签名的 APK 文件。


第一行代码(十五)_第2张图片
生成签名文件图1

第一行代码(十五)_第3张图片
生成签名文件图2

第一行代码(十五)_第4张图片
生成签名文件图3

第一行代码(十五)_第5张图片
生成签名文件图4

第一行代码(十五)_第6张图片
生成签名文件图5

第一行代码(十五)_第7张图片
生成签名文件图6

第一行代码(十五)_第8张图片
生成签名文件图7

使用 Gradle 生成

  我们还可以使用 Gradle 方式来生成。编辑 app/build.gradle 文件

android {
    ...
    signingConfigs{
        config{
            storeFile file('F:/workspace/demo/CoolWeather/coolweather.jks')
            storePassword '123456'
            keyAlias 'coolweather'
            keyPassword '123456'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //别忘了这一行,添加签名配置
            signingConfig signingConfigs.config
        }
    }
    ...
}

  配置完成,如何生成 APK 文件呢?

第一行代码(十五)_第9张图片
使用 Gradle 方式签名

  想要哪个就双击哪个,哪里不会点哪里。成功后 APK 文件会自动生成在 app/build/outputs/apk 目录下

生成的 APK 文件如果有一个包含 unaligned 字样,表示是没有经过对齐的 APK 文件,我们直接忽略它就可以了。

  这里还有个小细节了解一下,目前 keystore 文件的所有信息都是以明文的形式直接配置在 build.gradle 中的,这样不太安全,Android 推荐的做法是将这类敏感数据配置在一个独立的文件里面,然后再 build.gradle 中去读取这些数据。


第一行代码(十五)_第10张图片
keystore配置图1

  修改该文件

KEY_PATH=F:/workspace/demo/CoolWeather/coolweather.jks
KEY_PASS=123456
ALIAS_NAME=coolweather
ALIAS_PASS=123456

  然后修改 app/build.gradle 文件

    signingConfigs{
        config{
            storeFile file(KEY_PATH)
            storePassword KEY_PASS
            keyAlias ALIAS_NAME
            keyPassword ALIAS_PASS
        }
    }

  我们只需要将 gradle.properties 文件保护好久行了,比如从 Git 版本控制中排除。

二、生成多渠道 APK 文件

  比如我们准备要生成 360 和百度两个渠道的 APK 文件,修改app/build.gradle文件

android {
  ...
    defaultConfig {
        applicationId "com.coolweather.android.coolweather"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        jackOptions.enabled = true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    productFlavors{
        qihoo{
            applicationId "com.coolweather.android.coolweather.qihoo"
        }
        baidu{
            applicationId "com.coolweather.android.coolweather.baidu"
        }
    }
  ...
}

注意: Gradle 中的配置规定不能以数字开头,因此我将 360 的渠道配置成了 qihoo。渠道名的闭包中可以覆写 defaultConfig 中的任何一个属性,比如说这里讲 applicationId 属性进行了覆写,那么最终生成的各渠道 APK 文件的包名也各不相同。

  假如我们需要对不同的渠道编写差异性需求。在 app/src 目录下(main的平级目录)新建一个 baidu 目录,然后再 baidu 目录下在新建 java 和 res 两个目录。


第一行代码(十五)_第11张图片
image.png

  这样我们就可以编写百度渠道特有的功能了,如果需要覆写 AndroidManifest 文件中的内容,还可以在 baidu 目录下再新建一个 AndroidManifest.xml 文件。我们这里演示一下给不同渠道的 APK 起一个不同的应用名字吧。
  应用名之前是定义在 main/res/values/string.xml 文件中的,我们在 baidu 目录下也建立一个相同的目录结构,然后进行修改:


    酷欧百度版

  然后生成多渠道 APK 文件,观察右侧工具栏的 Gradle Tasks 列表,你会发现里面多出了几个新的 Task。

第一行代码(十五)_第12张图片
image.png

  如果需要生成百度渠道的 APK 文件,就执行 assembleBaidu,同理想生成 360 渠道的 APK 文件,就执行 assembleQihoo,如果想一次性生成所有渠道的 APK 文件,就执行 assembleRelease。除了 Gradle 方式生成之外,还可以使用 Android Studio 提供的可视化工具也能生成多渠道的 APK 文件。
第一行代码(十五)_第13张图片
image.png

  生成后,就可以通过 adb install命令将生成好的 APK 文件安装到模拟器上。
adb install APK文件路径

注意:因为我们在 productFlavors 中覆写了各渠道的 applicationId 属性,保证每个 APK 文件的包名都不相同,因而它们可以安装到同一个设备上面。

三、上架360市场

  360应用商店的地址是:http://dev.360.cn,首先你要注册,然后登陆,然后根据步骤来进行上架,这里就不赘述了。

注意:360应用商店有个特殊需求,是需要对 APK 进行加固,在上架页面 360 会帮我们将 APK 进行加固并生成一个新的 APK 文件,但是这个加固后的文件是没有经过签名的,我们需要下载下来进行重新签名。
  遗憾的是,Android Studio 中没有提供对未签名的 APK 直接进行签名的功能,我们只能使用 jarsigner 命令来进行签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystore 文件路径] -storepass [keystore 文件密码] [待签名 APK 路径] [keystore 文件别名]
将[]中的描述替换成 keystore 文件的具体信息就能签名成功了,注意[]符号是不需要的。

四、嵌入广告进行盈利

  谷歌充分考虑到了可以在 Android 应用程序中嵌入广告来让开发者获得收入,在国内,这一领域做的比较好的移动广告平台不少,个人认为腾讯广告联盟(原广点通)特别专业。
  网址是:http://e.qq.com/dev/index.html,你需要先注册账号,然后填写一些个人信息。待他审核通过后,我们就可以进入腾讯广告联盟的后台,给我们的应用添加广告,首先进入媒体管理界面,新建媒体,填写应用相关信息,注意这里需要填写一个详情页地址,我们可以使用360应用商店上的详情页地址,打开http://zhushou.360.cn,搜索我们的 app,就能找到该地址了。
  填写完成后,我们需要下载 Android SDK,在此期间,如果我们的审核通过后,可以在媒体管理界面查看新建媒体的状态,注意,这里自动生成了一个应用 ID,稍后会用到。
  然后点击新建广告位,就可以创建一个广告位了,创建完成后,进入广告位管理界面,能看到我们刚刚新建的广告位了,同样,广告位 ID 也是我们稍后会用到的。
  以上工作都完成后,我们开始接入 SDK,现将 jar 包复制到你的项目中,然后根据文档来进行剩下的操作。
  接入完成后,我们要重新发布一下应用,修改一下app/build.gradle文件。

第一行代码(十五)_第14张图片
image.png

  然后进行更新上架。此后,每当有用户观看或点击了应用程序中的广告时,我们就能真正地得到收益,在腾讯广告联盟的后台管理界面可以查看每天的收益情况。

五、结束语

  已经接近尾声了,通过这一系列的学习,只能说你具备了一定的 Android 开发技术,但并不是说你就已经成为一个出色的 Android 开发者,你必须还要通过不断的努力和学习来充实完善自己。因为 Android 的世界还很大很深很广。

你可能感兴趣的:(第一行代码(十五))