Giter Club home page Giter Club logo

armscomponent's Introduction

Hi

Life is a fucking movie. 😈 😈 😈 😈 😈 😈

人生如戏。

armscomponent's People

Contributors

andych008 avatar jessyancoding avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

armscomponent's Issues

因为业务需要 重写了baseActivity,但是打包的时候说这个类被定义了多次,改怎么解决呢?

Type me.jessyan.armscomponent.commonsdk.base.IBaseActivity_MembersInjector is defined multiple times: F:\AndroidProjects\AppRepository\MobileSystem\JNRespiratory\module_system\build\intermediates\runtime_library_classes\release\classes.jar:me/jessyan/armscomponent/commonsdk/base/IBaseActivity_MembersInjector.class, F:\AndroidProjects\AppRepository\MobileSystem\JNRespiratory\module_replace\build\intermediates\runtime_library_classes\release\classes.jar:me/jessyan/armscomponent/commonsdk/base/IBaseActivity_MembersInjector.class

关于组件化dagger-android的使用疑惑

你好 目前在考虑使用组件化改造项目。所以进来学习一波

由于dagger android的初始化需要写在application当中
假如各个Moudle单独作为App运行的话需要些在各个moudle的的Application当中,
那moudle作为lib的时候,该如何初始化各个lib里 的dagger android呢。
希望能提供一些思路。
在appLifecylesImpl中初始化吗

奇怪的问题

javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
includeCompileClasspath true
}
}
放到 common_component_build.gradle 里老编译崩溃
image

放到module 里面 就不会崩溃

开始以为我的java问题...我看了看我的java版本
image
然后环境变量也是正确的....
试了很久没解决问题...就差重做系统了

实际公司组件化git部署用的哪种方式

你好,再麻烦问下,在实际公司组件化git部署用的哪种方式,gitsubmodule,repo,还是直接组件打包aar发布maven然后主项目引用,或者其他方式。最近再究竟选哪种方式。

JessYan: ArmsComponent 正在征集框架使用者信息,希望得到大家的支持 🙏

ArmsComponent 基于 MVPArms 开发,完善了整个 Arms 的生态链,为了让更多人开始使用 ArmsComponent,现在向全社会征集已经使用了 ArmsComponent 的线上项目,商业项目、公益项目、内部项目都可以,格式如下,复制并补全信息即可:

- [x] 公司名:
- [x] 项目名:
- [x] 公司官网/项目下载地址:

如果您的项目方便公开的的话,请尽量把信息补全,虽然 ArmsComponent 不够完美,也有很多各式各样的问题,但本人已经尽自己所能的把 ArmsComponent 做得足够的完善,努力的响应大家的优化建议,不光是代码,注释、文档、demo,我都在很努力的做到极致,以帮助大家可以更全面的理解并使用这个框架,所以请大家积极响应我的这个信息征集请求,将项目信息公布到在这里,您的项目和公司也可以获得更多的曝光度,感谢 🙏

重大bug

    //用反射, 将 AndroidManifest.xml 中带有 ConfigModule 标签的 class 转成对象集合(List<ConfigModule>)
    this.mModules = new ManifestParser(context).parse();

在5.0 以下 无法启动原因 是在dex 分包的情况下 dex2 文件还未加载 就去parse 的话会报错
所以要在parse 之前调用 MultiDex.install(context);
但是现有的框架的生命周期代理达不到要求 所以这行代码只能在框架底层加

ArmsMVP不支持Android5.0以下设备

Android4.3
java.lang.RuntimeException: Unable to start activity ComponentInfo{me.jessyan.mvparms.demo/me.jessyan.mvparms.demo.mvp.ui.activity.UserActivity}: java.lang.RuntimeException: Failed to call observer method at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2214) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264) at android.app.ActivityThread.access$600(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5136) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: Failed to call observer method at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:226) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185) at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361) at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300) at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339) at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145) at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131) at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123) at androidx.lifecycle.ReportFragment.onActivityCreated(ReportFragment.java:76) at android.app.Fragment.performActivityCreated(Fragment.java:1703) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:903) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039) at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1840) at android.app.Activity.performCreate(Activity.java:5136) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)  at android.app.ActivityThread.access$600(ActivityThread.java:144)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:5136)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:525)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.VerifyError: okhttp3/internal/platform/Android10Platform at okhttp3.internal.platform.Platform.findPlatform(Platform.java:201) at okhttp3.internal.platform.Platform.<clinit>(Platform.java:78) at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:292) at okhttp3.OkHttpClient.<init>(OkHttpClient.java:258) at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1040) at com.jess.arms.di.module.ClientModule.provideClient(ClientModule.java:132) at com.jess.arms.di.module.ClientModule_ProvideClientFactory.provideClient(ClientModule_ProvideClientFactory.java:68) at com.jess.arms.di.module.ClientModule_ProvideClientFactory.get(ClientModule_ProvideClientFactory.java:53) at com.jess.arms.di.module.ClientModule_ProvideClientFactory.get(ClientModule_ProvideClientFactory.java:14) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.jess.arms.di.module.ClientModule_ProvideRetrofitFactory.get(ClientModule_ProvideRetrofitFactory.java:48) at com.jess.arms.di.module.ClientModule_ProvideRetrofitFactory.get(ClientModule_ProvideRetrofitFactory.java:13) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.jess.arms.integration.RepositoryManager.obtainRetrofitService(RepositoryManager.java:96) at me.jessyan.mvparms.demo.mvp.model.UserModel.getUsers(UserModel.java:63) at me.jessyan.mvparms.demo.mvp.presenter.UserPresenter.request

关于数据库的疑问

首先感谢你的开源!
我在进行组件化拆分的时候,对于数据库的设计存在疑问。
我使用的是SQL原生数据库开发,对其进行组件拆分的时候目前只想到如下方式:

1.每个组件都维护各自一份db,其表定义在各自的组件中,但这样使用的时候每个组件都会存在一个数据
库实例,感觉存在性能问题。
2.独立一个数据库模块,只维护一份db,将所有的表及其操作都定义在其中,但这么做,内容都集中在一块了,感觉进行的组件化就有点变味了。
想请问下在配合该框架进行组件拆分的时候,有没更好的数据库拆分方式?

关于迁移AndroidX的问题

ArmsComponent现在的依赖的MVPArms版本是2.5.2.该版本并没有适配AndroidX.

希望及时迁移一下AndroidX.谢谢.

使用kotlin找不到Component

通过mvp全家桶新建kotlin活动时,无法找到Component,将dagger的 annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]改为 kapt rootProject.ext.dependencies["dagger2-compiler"]也没有解决

resourcePrefix要求加上前缀,导致需要给自定义view类名和attr都加前缀,导致类名不规范

为解决资源冲突,gradle里要求了resourcePrefix。一开始我以为是自动加的,没想到只是约束作用,需要自己手动加上。
这就导致了:原本写好的自定义view的attr属性里,要为declare-styleable 的name和所有属性加上前缀,又因为declare-styleable 的name要和类名一致,导致自定义view的类名也需要加上前缀。这样就造成了类名命名不规范的问题了(prefix_XXView)。
请问有什么其他正确的解决方法吗?

组件之间如何相互调用model

如组件A是积分module,组件B是优惠券module,怎么让A module调用 B module中的 model,用来调用里面的某个接口获取其数据

核心基础业务相关提问

当module依赖于宿主或者独立运行的时候,都需要进入启动业务和登录业务,那么这个我把这两个业务归类为核心基础业务,可否?

组件Application无效

组件里面的Application继承BaseApplication 由于有一个组件需要单独运行自己的Application 故在打包运行的时候组件化的Application没有执行 不知道有什么好的方法没有

AS3.1.2独立运行组件报错

isBuildModule为truer的情况下
#isBuildModule 为 true 时可以使每个组件独立运行, false 则可以将所有组件集成到宿主 App 中 isBuildModule=true

dependencies { classpath 'com.android.tools.build:gradle:3.1.2' classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0' }
把这里改为3.0.1运行没问题3.1.2报如下错
Could not get unknown property 'packageForR' for task ':ModuleGold:processDebugResources' of type com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.

整体编译,报Program type already present

在me.jessyan.armscomponent.commonres.base中,BaseLazyFragment继承BaseFragment,然后在其他业务组件(两个或两个以上的业务module)模块下去实现BaseLazyFragment,编译后出现Error: Program type already present: me.jessyan.armscomponent.commonres.base.BaseLazyFragment_MembersInjector

gradle4.0.1 isBuildModule=false时Dagger不工作,Component不生成

isBuildModule=true时dagger是ok的,component也能生成,可是改为false出宿主包就不行了。
博主的demo gradle 3.x是没问题的,但是升到4.x就不行了

/home/zhaize/StudioProjects/ArmsComponent/module_gold/src/main/java/me/jessyan/armscomponent/gold/mvp/ui/activity/GoldHomeActivity.java:39: 错误: 找不到符号
import me.jessyan.armscomponent.gold.di.component.DaggerGoldHomeComponent;
^
符号: 类 DaggerGoldHomeComponent
位置: 程序包 me.jessyan.armscomponent.gold.di.component

组件的module里无法预览自定义view

在集成到宿主的情况下(isBuildModule=false),写在组件module的布局xml里的自定义控件是无法预览的。尝试过点击preview的Force Refresh Layout,也没用。(写在宿主module里是可以预览的。)
请问作者是否遇到过该情况?

不同模块下资源引用问题

感谢作者对该库的贡献
我在测试的时候发现一个问题,如果我组件Test中有一个布局文件main.xml,而这时候假设宿主app中也有个相同名称main.xml时,组件Test会使用宿主app中的那个main.xml布局文件

你好。能不能更新成AndroidX.

我个人把代码改成AndroidX库好像会报错。
报错如下:
����: �� DaggerZhihuHomeComponent
�: ����� me.jessyan.armscomponent.zhihu.di.component;
config.gradle用的是Arms的

ArmsMVP不支持Android5.0以下的设备

Android4.3系统

java.lang.RuntimeException: Unable to start activity ComponentInfo{me.jessyan.mvparms.demo/me.jessyan.mvparms.demo.mvp.ui.activity.UserActivity}: java.lang.RuntimeException: Failed to call observer method
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2214)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
        at android.app.ActivityThread.access$600(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5136)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.RuntimeException: Failed to call observer method
        at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:226)
        at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194)
        at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185)
        at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36)
        at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
        at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300)
        at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339)
        at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
        at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
        at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123)
        at androidx.lifecycle.ReportFragment.onActivityCreated(ReportFragment.java:76)
        at android.app.Fragment.performActivityCreated(Fragment.java:1703)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039)
        at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1840)
        at android.app.Activity.performCreate(Activity.java:5136)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264at android.app.ActivityThread.access$600(ActivityThread.java:144at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259at android.os.Handler.dispatchMessage(Handler.java:99at android.os.Looper.loop(Looper.java:137at android.app.ActivityThread.main(ActivityThread.java:5136at java.lang.reflect.Method.invokeNative(Native Methodat java.lang.reflect.Method.invoke(Method.java:525at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553at dalvik.system.NativeStart.main(Native MethodCaused by: java.lang.VerifyError: okhttp3/internal/platform/Android10Platform
        at okhttp3.internal.platform.Platform.findPlatform(Platform.java:201)
        at okhttp3.internal.platform.Platform.<clinit>(Platform.java:78)
        at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:292)
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:258)
        at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1040)
        at com.jess.arms.di.module.ClientModule.provideClient(ClientModule.java:132)
        at com.jess.arms.di.module.ClientModule_ProvideClientFactory.provideClient(ClientModule_ProvideClientFactory.java:68)
        at com.jess.arms.di.module.ClientModule_ProvideClientFactory.get(ClientModule_ProvideClientFactory.java:53)
        at com.jess.arms.di.module.ClientModule_ProvideClientFactory.get(ClientModule_ProvideClientFactory.java:14)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.jess.arms.di.module.ClientModule_ProvideRetrofitFactory.get(ClientModule_ProvideRetrofitFactory.java:48)
        at com.jess.arms.di.module.ClientModule_ProvideRetrofitFactory.get(ClientModule_ProvideRetrofitFactory.java:13)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.jess.arms.integration.RepositoryManager.obtainRetrofitService(RepositoryManager.java:96)
        at me.jessyan.mvparms.demo.mvp.model.UserModel.getUsers(UserModel.java:63)
    	at me.jessyan.mvparms.demo.mvp.presenter.UserPresenter.request

关于使用productFlavor定义API_DOMAIN的问题

在app的build.gralde的productFlavor里定义了API_DOMAIN后生成的BuildConfig是在app下的, 但是API_DOMAIN却是在commonSDK里用。我尝试把productFlavor定义在commonSDK下,构建的时候会报无法处理commonSDK,请问大佬有什么解决办法吗?

新建model没有效果,具体log请看下面 - AndroidStudio 最新的稳定版的, 目前是 v3.1.2, 我在 README.md 也说明了只会支持最新的稳定版

Error executing FreeMarker template: The following has evaluated to null or missing:
==> ktOrJavaExt [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 72]

Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??

The failing instruction:
==> ${ktOrJavaExt} [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 70]
FreeMarker template error:
The following has evaluated to null or missing:
==> ktOrJavaExt [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 72]

Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??

The failing instruction (FTL stack trace):

==> ${ktOrJavaExt} [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 70]

Java stack trace (for programmers):

freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98)
at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:382)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:115)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:265)
at freemarker.core.MixedContent.accept(MixedContent.java:93)
at freemarker.core.Environment.visit(Environment.java:265)
at freemarker.core.Environment.process(Environment.java:243)
at freemarker.template.Template.process(Template.java:277)
at com.android.tools.idea.templates.FreemarkerUtils.processFreemarkerTemplate(FreemarkerUtils.java:96)
at com.android.tools.idea.templates.Template.executeRecipeFile(Template.java:557)
at com.android.tools.idea.templates.Template.access$200(Template.java:73)
at com.android.tools.idea.templates.Template$3.startElement(Template.java:519)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at com.android.tools.idea.templates.Template.processXml(Template.java:484)
at com.android.tools.idea.templates.Template.processFile(Template.java:468)
at com.android.tools.idea.templates.Template.lambda$doRender$2(Template.java:368)
at com.android.tools.idea.templates.Template$1.run(Template.java:347)
at com.intellij.openapi.application.RunResult.run(RunResult.java:35)
at com.intellij.openapi.command.WriteCommandAction.lambda$null$1(WriteCommandAction.java:171)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1023)
at com.intellij.openapi.command.WriteCommandAction.lambda$performWriteCommandAction$2(WriteCommandAction.java:170)
at com.intellij.openapi.command.WriteCommandAction.lambda$doExecuteCommand$4(WriteCommandAction.java:210)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:149)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:119)
at com.intellij.openapi.command.WriteCommandAction.doExecuteCommand(WriteCommandAction.java:212)
at com.intellij.openapi.command.WriteCommandAction.performWriteCommandAction(WriteCommandAction.java:168)
at com.intellij.openapi.command.WriteCommandAction.execute(WriteCommandAction.java:151)
at com.android.tools.idea.templates.Template.runWriteCommandAction(Template.java:349)
at com.android.tools.idea.templates.Template.doRender(Template.java:367)
at com.android.tools.idea.templates.Template.render(Template.java:232)
at com.android.tools.idea.npw.module.NewModuleModel$ModuleTemplateRenderer.renderModule(NewModuleModel.java:312)
at com.android.tools.idea.npw.module.NewModuleModel$ModuleTemplateRenderer.doDryRun(NewModuleModel.java:274)
at com.android.tools.idea.npw.template.MultiTemplateRenderer.countDown(MultiTemplateRenderer.java:58)
at com.android.tools.idea.npw.template.MultiTemplateRenderer.skipRender(MultiTemplateRenderer.java:82)
at com.android.tools.idea.npw.template.RenderTemplateModel.handleSkipped(RenderTemplateModel.java:181)
at com.android.tools.idea.wizard.model.ModelWizard.handleFinished(ModelWizard.java:401)
at com.android.tools.idea.wizard.model.ModelWizard.goForward(ModelWizard.java:324)
at com.android.tools.idea.wizard.model.ModelWizardDialog$FinishAction.doAction(ModelWizardDialog.java:307)
at com.intellij.openapi.ui.DialogWrapper$DialogWrapperAction.actionPerformed(DialogWrapper.java:1838)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6541)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6306)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4897)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:827)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.awt.Dialog.show(Dialog.java:1084)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:736)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:458)
at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1696)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1645)
at com.android.tools.idea.actions.AndroidNewModuleAction.actionPerformed(AndroidNewModuleAction.java:64)
at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:215)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:232)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:309)
at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:929)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:136)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:299)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:116)
at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:86)
at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:109)
at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:118)
at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:122)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:116)
at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533)
at java.awt.Component.processMouseEvent(Component.java:6541)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6306)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4897)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:827)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

java.lang.RuntimeException: com.android.tools.idea.templates.FreemarkerUtils$TemplateProcessingException: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> ktOrJavaExt [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 72]

Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??

The failing instruction:
==> ${ktOrJavaExt} [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 70]
at com.intellij.util.ExceptionUtil.rethrowAllAsUnchecked(ExceptionUtil.java:183)
at com.intellij.openapi.application.RunResult.run(RunResult.java:43)
at com.intellij.openapi.command.WriteCommandAction.lambda$null$1(WriteCommandAction.java:171)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1023)
at com.intellij.openapi.command.WriteCommandAction.lambda$performWriteCommandAction$2(WriteCommandAction.java:170)
at com.intellij.openapi.command.WriteCommandAction.lambda$doExecuteCommand$4(WriteCommandAction.java:210)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:149)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:119)
at com.intellij.openapi.command.WriteCommandAction.doExecuteCommand(WriteCommandAction.java:212)
at com.intellij.openapi.command.WriteCommandAction.performWriteCommandAction(WriteCommandAction.java:168)
at com.intellij.openapi.command.WriteCommandAction.execute(WriteCommandAction.java:151)
at com.android.tools.idea.templates.Template.runWriteCommandAction(Template.java:349)
at com.android.tools.idea.templates.Template.doRender(Template.java:367)
at com.android.tools.idea.templates.Template.render(Template.java:232)
at com.android.tools.idea.npw.module.NewModuleModel$ModuleTemplateRenderer.renderModule(NewModuleModel.java:312)
at com.android.tools.idea.npw.module.NewModuleModel$ModuleTemplateRenderer.doDryRun(NewModuleModel.java:274)
at com.android.tools.idea.npw.template.MultiTemplateRenderer.countDown(MultiTemplateRenderer.java:58)
at com.android.tools.idea.npw.template.MultiTemplateRenderer.skipRender(MultiTemplateRenderer.java:82)
at com.android.tools.idea.npw.template.RenderTemplateModel.handleSkipped(RenderTemplateModel.java:181)
at com.android.tools.idea.wizard.model.ModelWizard.handleFinished(ModelWizard.java:401)
at com.android.tools.idea.wizard.model.ModelWizard.goForward(ModelWizard.java:324)
at com.android.tools.idea.wizard.model.ModelWizardDialog$FinishAction.doAction(ModelWizardDialog.java:307)
at com.intellij.openapi.ui.DialogWrapper$DialogWrapperAction.actionPerformed(DialogWrapper.java:1838)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6541)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6306)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4897)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:827)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.awt.Dialog.show(Dialog.java:1084)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:736)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:458)
at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1696)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1645)
at com.android.tools.idea.actions.AndroidNewModuleAction.actionPerformed(AndroidNewModuleAction.java:64)
at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:215)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:232)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:309)
at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:929)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:136)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:299)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:116)
at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:86)
at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:109)
at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:118)
at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:122)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:116)
at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533)
at java.awt.Component.processMouseEvent(Component.java:6541)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6306)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4897)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:827)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: com.android.tools.idea.templates.FreemarkerUtils$TemplateProcessingException: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> ktOrJavaExt [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 72]

Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??

The failing instruction:
==> ${ktOrJavaExt} [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 70]
at com.android.tools.idea.templates.FreemarkerUtils.processFreemarkerTemplate(FreemarkerUtils.java:111)
at com.android.tools.idea.templates.Template.executeRecipeFile(Template.java:557)
at com.android.tools.idea.templates.Template.access$200(Template.java:73)
at com.android.tools.idea.templates.Template$3.startElement(Template.java:519)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at com.android.tools.idea.templates.Template.processXml(Template.java:484)
at com.android.tools.idea.templates.Template.processFile(Template.java:468)
at com.android.tools.idea.templates.Template.lambda$doRender$2(Template.java:368)
at com.android.tools.idea.templates.Template$1.run(Template.java:347)
at com.intellij.openapi.application.RunResult.run(RunResult.java:35)
... 118 more
Caused by: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> ktOrJavaExt [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 72]

Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??

The failing instruction:
==> ${ktOrJavaExt} [in template "root://gradle-projects/NewArmsComponent/recipe.xml.ftl" at line 39, column 70]
at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98)
at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:382)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:115)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:265)
at freemarker.core.MixedContent.accept(MixedContent.java:93)
at freemarker.core.Environment.visit(Environment.java:265)
at freemarker.core.Environment.process(Environment.java:243)
at freemarker.template.Template.process(Template.java:277)
at com.android.tools.idea.templates.FreemarkerUtils.processFreemarkerTemplate(FreemarkerUtils.java:96)
... 137 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.