Andoird 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>
"""
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值