介绍

这篇教程会为你展示如何创建属于你自己的代码模板。大多数的Android开发者都至少一次使用过Android代码模板来新建工程。但是你有没有尝试过创建自己的Android代码模板?
在这篇教程中,我们将会为你展示可用于从Android Studio IDE生成包含Google Analytics配置的Android工程模板。

源码

在这里下载源码

代码生成过程图解

具体创建步骤

要创建自己的模板,请确保:

  1. 你已经了解上述代码生成过程图解;
  2. 你有一些关于FreeMarker的知识;
  3. 你有一些关于Android IDE模板格式的知识,你可以在这里查看相关文档。

第一步:创建Google Analytics应用程序文件夹

这是你的模板目录,在Windows上,${android studio 安装路径}/plugins/android/lib/templates/,其他平台Linux,Mac OS请自行查找;
在GoogleAnalyticApplication文件夹中创建根文件夹和其他文件,如下所示:


第二步:创建template.xml文件

每个模板目录必须包含一个template.xml文件,这其中包含有关模板的一些元数据,包括名称,描述,类别和用户可见参数这些IDE将作为选项呈现给用户。
文件中还会在指明FreeMarker处理的recipe文件名称和全局变量文件,如果除了模板参数值之外还有全局变量应该对所有FreeMarker处理的文件可见。
Template.xml

<?xml version="1.0"?>

其中的一些参数比如: activityClass, layoutName, classApplication, googleAnalyticID, dispatchPeriod, autoActivityTracking,将在创建项目时显示在弹出窗口中。

第三步:创建globals.xml.ftl文件

这是一个可选的文件,里面包含全局变量的定义,用于此模板的所有FreeMarker处理任务。
globals.xml.ftl

<?xml version="1.0"?>                    

第四步:在root文件夹中创建相关文件和文件夹

root文件夹中包含模板源代码

1.创建AndroidManifest.xml.ftl
<?xml version="1.0" encoding="utf-8"?>                                                                                                

其中的packageName,classApplication是在template.xml文件中定义的。

2.创建Application.java.ftl文件
package ${packageName};import android.app.Application;import com.google.android.gms.analytics.GoogleAnalytics;import com.google.android.gms.analytics.Tracker;/** * Created by TungDX on 5/29/2015. */public class ${classApplication} extends Application {    private static GoogleAnalytics analytics;    private static Tracker tracker;    @Override    public void onCreate() {       analytics = GoogleAnalytics.getInstance(this);       tracker = analytics.newTracker("${googleAnalyticID}");    }    public static GoogleAnalytics getGoogleAnalytics() {       return analytics;    }    public static Tracker getTracker() {        return tracker;    }}

其中的packageName,googleAnalyticID是在template.xml文件中定义的。

3.创建MainActivity.java.ftl文件
package ${packageName}.activities;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import ${packageName}.${classApplication};import ${packageName}.R;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    protected void onStart() {        super.onStart();        ${classApplication}.getGoogleAnalytics().reportActivityStart(this);    }    @Override    protected void onStop() {        super.onStop();        ${classApplication}.getGoogleAnalytics().reportActivityStop(this);    }}

其中的packageName,classApplication是在template.xml文件中定义的。

4.创建activity_main.xml.ftl文件
    
5.创建strings.xml.ftl文件
    <#if !isNewProject>    ${escapeXmlString(activityTitle)}        Google Analytic is ready!
6.创建dimens.xml文件
        16dp    16dp
7.创建recipe.xml.ftl文件

recipe.xml文件中包含了从该模板生成代码时应执行的各个命令。比如,你可以复制某些文件或目录,或者通过FreeMarker运行源文件,并要求IDE在代码生成后打开一个文件。

<?xml version="1.0"?>                
8.检查依赖
9.检查AndroidManifest.xml.ftl
10.检查Application.java.ftl
https://robusttechhouse.com/wp-admin/post.php?post=6937&action=edit&message=10#
11.检查MainActivity.java.ftl

12.检查analytics_global_config.xml.ftl
13.从模板中生成 activity_main.xml, dimens.xml, strings.xml文件
14.工程创建成功后打开对应文件

如果你的Android Studio IDE运行,请重新启动它看到自己的模板如下图



如果从模板生成项目时遇到此错误:AssertionError: Wrong line separators: ‘…plication;\r\n\r\nimport…’ at offset 29:
请检查模板中所有文件的行分隔符是否正确,请确保使用正确的行分隔符在对应的的计算机的操作系统中。

原文链接

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android移植成功:linux-2.6.25.8+U盘挂载
  4. Android应用程序换肤实现系列(一)
  5. 精通android2第一章学习
  6. [Android]LayoutInflater的inflate方法半详解
  7. Android(安卓)创建与解析XML(一)—— 概述
  8. 如何将Android默认的Camra程序导入到eclipse中
  9. Android加固技术分析与多渠道打包实践

随机推荐

  1. Android(安卓)获取wifi信号强度
  2. Android(安卓)Button按钮两个页面切换
  3. android > TimePicker 时间设置控件
  4. java android 环境变量配置备忘录
  5. Android实现拍照功能实例
  6. Android(安卓)NDK 各版本地址大全
  7. Android(安卓)undefined reference to `s
  8. Android接收短信
  9. 在Eclipse中进行Android单元测试
  10. Android学习笔记之——UI组件