GOOGLE告诉我说, 后续Eclipse将不再维护了, 所以, 赶紧下了个Android Studio。
刚开始使用, 各种不习惯,这里就不说了,今天讲讲,如何修改项目代码生成模板。
* 需说明, 我使用的是ubuntu下的开发环境。
相关目录:
安装目录/android-studio/plugins/android/lib/templates
drwxrwxr-x 18 anson anson 4096 9月 3 22:42 activities/ 默认Activity生成模版
-rw-r--r-- 1 anson anson 310 6月 3 11:25 build.gradle
drwxrwxr-x 6 anson anson 4096 7月 6 10:51 eclipse/
drwxrwxr-x 4 anson anson 4096 6月 3 13:57 gradle/
drwxrwxr-x 10 anson anson 4096 9月 4 15:30 gradle-projects/ 项目生成模板
-rw-r--r-- 1 anson anson 10695 6月 3 11:25 NOTICE
drwxrwxr-x 28 anson anson 4096 8月 1 09:38 other/
目前我只更改上面两个目录,其它的内容修改起来都相似。
* 修改过程,建议先将原有的模板进行备份, 以免出了问题后改不回来。
/plugins/android/lib/templates/gradle-projects/NewAndroidModule/
1. 不使用com.android.support:appcompat-v7, 不引用appcompat
|-- globals.xml.ftl
<global id="appCompat" type="boolean" value="${(hasDependency('com.android.support:appcompat-v7'))?string}" />
改为:
<global id="appCompat" type="boolean" value="false" />
2. 去掉test 部分的代码
|-- recipe.xml.ftl
删除以下代码
<instantiate from="test/app_package/ApplicationTest.java.ftl" to="${testOut}/ApplicationTest.java" />
以后生成的项目中就不再存在***.****.****(test)这个包和 ApplicationTest.java 了
3. 修改AndroidManifest.xml
|-- root/AndroidManifest.xml.ftl
<application <#if minApiLevel gte 4 && buildApi gte 4>android:allowBackup="true"</#if> android:label="@string/app_name"<#if copyIcons && !isLibraryProject> android:icon="@mipmap/ic_launcher"<#elseif assetName??> android:icon="@drawable/${assetName}"</#if> <#if baseTheme != "none" && !isLibraryProject> android:theme="@style/AppTheme"</#if>>
我想删除theme的声明,所以,删除
<#if baseTheme != "none" && !isLibraryProject> android:theme="@style/AppTheme"</#if>
* 判断语句: <#if ..........> xxx </#if>
接下来,修改Activity生成模板,我采用方法是增加一个模板。
/plugins/android/lib/templates/activities
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 AlwaysOnWearActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 AndroidTVActivity/
drwxrwxr-x 3 anson anson 4096 9月 3 22:58 ASActivity/
drwxrwxr-x 3 anson anson 4096 9月 4 14:43 BlankActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 BlankActivityWithFragment/
drwxrwxr-x 3 anson anson 4096 6月 3 13:57 BlankWearActivity/
drwxrwxr-x 3 anson anson 4096 6月 3 13:57 EmptyActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 FullscreenActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 GoogleAdMobAdsActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 GoogleMapsActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 GooglePlayServicesActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 LoginActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 MasterDetailFlow/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 NavigationDrawerActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 SettingsActivity/
drwxrwxr-x 3 anson anson 4096 8月 1 09:38 TabbedActivity/
每一个文件夹对就一个模板,ASActivity/ 是我的模板, 拷贝自:BlankActivity/
剩下的,就是修改ASActivity/中的内容
4. 修改布局文件:
|--ASActivity/root/res/layout/activity_simple.xml.ftl
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="${relativePackage}.${activityClass}">
删除:
xmlns:tools="http://schemas.android.com/tools" tools:context="${relativePackage}.${activityClass}">
*实在是用不惯这些代码...
其它资源文件类似, 默认都在这几个文件目录下改。
5. 修改Activity的JAVA源码:
|-- ASActivity/root/src/app_package/SimpleActivity.java.ftl
package ${packageName}; import ${superClassFqcn}; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; <#if applicationPackage??> import ${applicationPackage}.R; </#if> public class ${activityClass} extends ${superClass} { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.${layoutName}); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.${menuName}, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
该删除的删除, 该增加的增加....