Android studio 4.1.x模板开发一些问题
Andoird studio 4.1.x自定义模板
4.1以前自定义代码模板,模板文件的路径一般是在/Applications/Android Studio.app/Contents/plugins/android/lib/templates这个目录下的,但是在4.1版本中是没有这个目录的。
但是查了很多帖子没找到方便,前端时间发现有大佬写了这篇文章:AndroidStudio4.1 自定义模板
解决了这个问题,很激动可以写开始开自己的模板,习惯了模板开发,可以为项目节省很多时间,对团队带来的效益也是毋庸置疑的。
但是在开发的时候遇到了一些问题,和改动希望能为需要编写模板的同学少走弯路。
Plugin ‘XX‘ is incompatible with this installation
开始跟着大佬学习编写模板,生成了jar文件,激动的开始运行。一安装就遇到第一个问题,提示 “Plugin ‘XX‘ is incompatible with this installation”,纳闷为什么会不行?看评论也有人遇到。应该是环境问题,查了资料,发现就因为插件的版本和Android studio 版本问题,插件自己开发的为什么会不支持?带着疑问去看代码。
版本问题就是要看自己编写的插件支持的版本是多少?
1.查看自己Android studio 版本是多少 ,用的4.1.3,build 201?是这样吗?
2.去检查模板插件的版本,模板是在 git模板地址我同步的模板版本就是这个202。我把它改成201发现编译的jar就可以安装了。
模板TemplateBuilder增加图片
如何添加模板图片?
在4.1之前在目录下放一张图片
然后在template.xml指定就行
而在4.1之后 需要通过 TemplateBuilder 的 thumb 属性,来为模板添加图片
thumb { File("template_empty_activity.png") }
我的template_empty_activity其实就是在wizard-template.jar的图片
如何Activity直接添加到AndroidManifest里
4.1之前会写一个AndroidManifest.xml.ftl
<merge from="root/AndroidManifest.xml.ftl"
to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" />
4.1以后可以在xxxxRecipe中 找到 mergeXml 是不是和之前的很像?就是它了
manifestDir(File)的AndroidManifest目录地址,通过 ModuleTemplateData 获得。
manifestXml 是自己编码的一个xml ,这样就可以了。
mergeXml(manifestXml(isNewModule,ativityPackageName,"${pageName}Activity"), manifestDir.resolve("AndroidManifest.xml"))
fun manifestXml(isNewModule: Boolean, ativityPackageName: String, activityClass: String) = """
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application>
""" + if (isNewModule){
"""
<activity android:name="${ativityPackageName}.${activityClass}"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
"""
}else{
"""<activity android:name="${ativityPackageName}.${activityClass}"/>"""
} +
"""
</application>
</manifest>
"""