当前位置: 首页 > news >正文

东莞市微客巴巴做网站南京百度seo代理

东莞市微客巴巴做网站,南京百度seo代理,企业网站备案提供什么资料,光明区建设局网站IDE插件开发简介 Android Studio是一种常用的集成开发环境(IDE),用于开发Android应用程序。它提供了许多功能和工具,可以帮助开发人员更轻松地构建和调试Android应用程序。 如果你想开发Android Studio插件,以下是一…
IDE插件开发简介

Android Studio是一种常用的集成开发环境(IDE),用于开发Android应用程序。它提供了许多功能和工具,可以帮助开发人员更轻松地构建和调试Android应用程序。

如果你想开发Android Studio插件,以下是一些基本步骤:

  1. 确保你已经安装了最新版本的Android Studio。你可以从官方网站(https://developer.android.com/studio)下载并安装它。
  2. 了解Android Studio插件的基本结构和原理。Android Studio插件是基于IntelliJ平台构建的,因此你可以通过学习IntelliJ插件开发来了解Android Studio插件的开发。
  3. 创建一个新的插件项目。在Android Studio中,选择"File" -> “New” -> “New Project”,然后选择"IntelliJ Platform Plugin"作为项目类型。
  4. 定义你的插件。你可以通过插件描述文件(plugin.xml)来指定插件的名称、版本、依赖项等信息。
  5. 实现插件的功能。根据你的需求,你可以使用Java或Kotlin编写插件的代码。你可以使用IntelliJ平台提供的API来访问和操作Android Studio的功能和组件。
  6. 编译和运行插件。在Android Studio中,选择"Run" -> "Run ‘plugin_name’"来编译和运行你的插件。这将启动一个新的实例,并加载你的插件。
  7. 测试和调试插件。你可以使用Android Studio的调试功能来调试你的插件代码。在开发过程中,确保测试你的插件在各种情况下的行为和兼容性。
  8. 打包和发布插件。一旦你完成了插件的开发和测试,你可以将插件打包为一个JAR文件,并上传到Android Studio的插件市场(https://plugins.jetbrains.com/androidstudio)或其他适当的位置。

这只是一个简单的概述,帮助你入门Android Studio插件开发。要深入了解插件开发的详细内容,你可以查阅Android Studio和IntelliJ平台的官方文档,并参考一些示例代码和教程。祝你成功开发自己的Android Studio插件!

Dora SDK的Android Studio插件介绍

Dora SDK
https://github.com/dora4/dora ,是由Dora开发的,没错,就是我,一款高效开发Android App的基础架构。而Dora Android Studio Plugin则提供了快捷使用Dora SDK的功能,即以图形化界面的方式,创建继承自dora.BaseActivity的Activity类和继承自dora.BaseFragment的Fragment类。这样就方便了大家高效地使用Dora SDK开发很多很多的界面啦!

product.png

依赖Dora SDK的Android Studio插件

使用步骤其实也很简单,总共就下载和安装两步。

install-jar.png

使用Dora SDK的Android Studio插件创建模板代码

创建模板代码也是只有简简单单的两步。

step1.png

step2.png

通过插件源码编译适合自己Android Studio版本使用的插件包

敲黑板,重点来了。通常情况下,我们使用的Android Studio版本是不一致的,除非我们心灵相通,比较默契,是吧!首先你要查看你当前使用的Android Studio的版本。

截屏2023-05-20 02.46.08.png

截屏2023-05-20 02.47.41.png
把AI后面的这一串数字复制下来。IDEA有很多分支变体版本,AI就代表我们的Android Studio。

然后修改gradle的配置,

compileKotlin {kotlinOptions.jvmTarget = 你的jdk版本
}compileTestKotlin {kotlinOptions.jvmTarget = 你的jdk版本
}// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {plugins = ['Kotlin', 'android']version.set("你的Android Studio版本,如213.7172.25.2113.9123335")// Android Studio的代号是AItype.set("AI")
}

JDK的版本在[File] - [Project Structure]中配置。我们还要配置一下我们项目的类型为Gradle项目。点击[Edit Configrations],选择Gradle,点OK,然后就可以编译插件了。编译后的插件生成目录为dora-studio-plugin/build/libs/,然后照着本文前面所提到的本地安装插件的步骤就可以了。

插件源码讲解

最后,我觉得还是有必要简单讲解下插件的源码。

截屏2023-05-20 02.55.46.png

目录结构大概是这样的。插件代码在kotlin目录下,资源则在resources目录下。我们先从resources/META-INF/plugin.xml看起,里面配置了插件的一些基本信息,重要的是这个入口。

<extensions defaultExtensionNs="com.android"><!-- Add your extensions here --><tools.idea.wizard.template.wizardTemplateProviderimplementation="com.dorachat.templates.recipes.DoraTemplateWizardProvider"/>
</extensions>

这里配置了一个模板向导提供者。

package com.dorachat.templates.recipesimport com.android.tools.idea.wizard.template.WizardTemplateProviderclass DoraTemplateWizardProvider: WizardTemplateProvider() {override fun getTemplates() = listOf(MVVMActivityTemplate, MVVMFragmentTemplate)
}

因为我们总共有两套模板,所以这里列出这两套模板的类名。以MVVMActivityTemplate为例。

package com.dorachat.templates.recipesimport com.android.tools.idea.wizard.template.*
import com.android.tools.idea.wizard.template.impl.activities.common.MIN_API
import java.io.Fileobject MVVMActivityTemplate : Template {override val category: Categoryget() = Category.Activityoverride val constraints: Collection<TemplateConstraint>get() = emptyList()     //AndroidX, kotlinoverride val description: Stringget() = "创建一个dora.MVVMActivity,来自https://github.com/dora4/dora"override val documentationUrl: String?get() = nulloverride val formFactor: FormFactorget() = FormFactor.Mobileoverride val minSdk: Intget() = MIN_APIoverride val name: Stringget() = "MVVM Activity"override val recipe: Recipeget() = {mvvmActivityRecipe(it as ModuleTemplateData,activityClassInputParameter.value,activityTitleInputParameter.value,layoutNameInputParameter.value,packageName.value)}override val uiContexts: Collection<WizardUiContext>get() = listOf(WizardUiContext.ActivityGallery, WizardUiContext.MenuEntry, WizardUiContext.NewProject, WizardUiContext.NewModule)override val useGenericInstrumentedTests: Booleanget() = falseoverride val useGenericLocalTests: Booleanget() = falseoverride val widgets: Collection<Widget<*>>get() = listOf(TextFieldWidget(activityTitleInputParameter),TextFieldWidget(activityClassInputParameter),TextFieldWidget(layoutNameInputParameter),PackageNameWidget(packageName),LanguageWidget())override fun thumb(): Thumb {return Thumb { findResource(this.javaClass, File("template_mvvm_activity.png")) }}val activityClassInputParameter = stringParameter {name = "Activity Name"default = "MainActivity"help = "The name of the activity class to create"constraints = listOf(Constraint.CLASS, Constraint.UNIQUE, Constraint.NONEMPTY)suggest = { layoutToActivity(layoutNameInputParameter.value) }}var layoutNameInputParameter: StringParameter = stringParameter {name = "Layout Name"default = "activity_main"help = "The name of the layout to create for the activity"constraints = listOf(Constraint.LAYOUT, Constraint.UNIQUE, Constraint.NONEMPTY)suggest = { activityToLayout(activityClassInputParameter.value) }}val activityTitleInputParameter = stringParameter {name = "Title"default = "Main"help = "The name of the activity. For launcher activities, the application title"visible = { false }constraints = listOf(Constraint.NONEMPTY)suggest = { buildClassNameWithoutSuffix(activityClassInputParameter.value, "Activity") }}val packageName = defaultPackageNameParameter
}

这里是不是配置了一些创建模板的信息?包括编译的最低sdk版本,有哪些输入框等等。这些输入控件需要指定输入类型的参数,如stringParameter。suggest表示输入的建议,简单的说,就是让别的输入框的内容跟当前输入的内容联动。还有一个重点就是这个recipe,它决定了这个模板代码怎么去生成。

package com.dorachat.templates.recipesimport com.android.tools.idea.wizard.template.*
import com.android.tools.idea.wizard.template.impl.activities.common.generateManifest
import com.dorachat.templates.recipes.app_package.res.layout.mvvmActivityXml
import com.dorachat.templates.recipes.app_package.res.layout.mvvmFragmentXml
import com.dorachat.templates.recipes.app_package.src.mvvmActivity
import com.dorachat.templates.recipes.app_package.src.mvvmActivityKt
import com.dorachat.templates.recipes.app_package.src.mvvmFragment
import com.dorachat.templates.recipes.app_package.src.mvvmFragmentKt
import java.lang.StringBuilderfun RecipeExecutor.mvvmActivityRecipe(moduleData: ModuleTemplateData,activityClass: String,activityTitle: String,layoutName: String,packageName: String
) {val (projectData, srcOut, resOut) = moduleDatagenerateManifest(moduleData = moduleData,activityClass = activityClass,
//            activityTitle = activityTitle,packageName = packageName,isLauncher = false,hasNoActionBar = false,generateActivityTitle = false,)if (projectData.language.equals(Language.Kotlin)) {save(mvvmActivityKt(projectData.applicationPackage ?: packageName, packageName, activityClass,buildBindingName(layoutName), layoutName), srcOut.resolve("${activityClass}.${projectData.language.extension}"))}if (projectData.language.equals(Language.Java)) {save(mvvmActivity(projectData.applicationPackage ?: packageName, packageName, activityClass,buildBindingName(layoutName), layoutName), srcOut.resolve("${activityClass}.${projectData.language.extension}"))}save(mvvmActivityXml(packageName, activityClass), resOut.resolve("layout/${layoutName}.xml"))open(resOut.resolve("layout/${layoutName}.xml"))}

如果要考虑比较周全,肯定是Java和Kotlin语言开发的项目代码都要能生成,然后创建Activity类的同时也把对应的布局xml文件也创建了,并且打开给使用者看一下,便于直接添加到git版本控制。

总结

有兴趣的同学可以参阅插件项目的源代码,https://github.com/dora4/dora-studio-plugin 和Dora SDK的源代码https://github.com/dora4/dora 。另外,我的开发套件三驾马车分别是dora、dcache和dview,你也可以称为“三剑客”。这是使用Android Studio插件开发代码生成模板的一个案例,插件开发还可以完全自定义功能,本文篇幅有限,就不细说了,大概是通过Action作菜单按钮和Java Swing作为图形界面,开发任意Java能实现的内容。


文章转载自:
http://qmc.xzLp.cn
http://reprehensive.xzLp.cn
http://inextricability.xzLp.cn
http://circumrotation.xzLp.cn
http://unpronounced.xzLp.cn
http://eiffel.xzLp.cn
http://penitent.xzLp.cn
http://aerotrain.xzLp.cn
http://grapery.xzLp.cn
http://celestially.xzLp.cn
http://vvip.xzLp.cn
http://mfab.xzLp.cn
http://planarian.xzLp.cn
http://hodoscope.xzLp.cn
http://devouringly.xzLp.cn
http://dolmen.xzLp.cn
http://leman.xzLp.cn
http://inadvertency.xzLp.cn
http://ectoenzyme.xzLp.cn
http://neumes.xzLp.cn
http://george.xzLp.cn
http://machan.xzLp.cn
http://straitlaced.xzLp.cn
http://jealous.xzLp.cn
http://valiantly.xzLp.cn
http://overyear.xzLp.cn
http://aegrotat.xzLp.cn
http://hawksbill.xzLp.cn
http://pureness.xzLp.cn
http://diverger.xzLp.cn
http://banditti.xzLp.cn
http://reasonless.xzLp.cn
http://dramshop.xzLp.cn
http://severance.xzLp.cn
http://humerus.xzLp.cn
http://ascetical.xzLp.cn
http://dit.xzLp.cn
http://shote.xzLp.cn
http://flibbertigibbet.xzLp.cn
http://tigerish.xzLp.cn
http://paroxytone.xzLp.cn
http://virile.xzLp.cn
http://dexterous.xzLp.cn
http://heteroduplex.xzLp.cn
http://neuritis.xzLp.cn
http://mutch.xzLp.cn
http://batman.xzLp.cn
http://deadsville.xzLp.cn
http://narcist.xzLp.cn
http://issp.xzLp.cn
http://ratten.xzLp.cn
http://rexine.xzLp.cn
http://inextirpable.xzLp.cn
http://luetically.xzLp.cn
http://achromasia.xzLp.cn
http://lockhole.xzLp.cn
http://botswana.xzLp.cn
http://poverty.xzLp.cn
http://elicitation.xzLp.cn
http://sphygmus.xzLp.cn
http://insecure.xzLp.cn
http://awestruck.xzLp.cn
http://cembalist.xzLp.cn
http://vendition.xzLp.cn
http://oscule.xzLp.cn
http://avaluative.xzLp.cn
http://galenism.xzLp.cn
http://hydranth.xzLp.cn
http://kitenge.xzLp.cn
http://endocast.xzLp.cn
http://varicosis.xzLp.cn
http://postscript.xzLp.cn
http://autodidact.xzLp.cn
http://clamor.xzLp.cn
http://moonlit.xzLp.cn
http://staggery.xzLp.cn
http://osmometer.xzLp.cn
http://manipulable.xzLp.cn
http://rehydration.xzLp.cn
http://belabor.xzLp.cn
http://palaeontography.xzLp.cn
http://megathere.xzLp.cn
http://pipestone.xzLp.cn
http://mandatary.xzLp.cn
http://portray.xzLp.cn
http://ftc.xzLp.cn
http://pulsive.xzLp.cn
http://sparable.xzLp.cn
http://horatius.xzLp.cn
http://ruffly.xzLp.cn
http://orthographist.xzLp.cn
http://hydroscope.xzLp.cn
http://stracciatella.xzLp.cn
http://disputatious.xzLp.cn
http://glyphograph.xzLp.cn
http://bipartisan.xzLp.cn
http://pb.xzLp.cn
http://adamite.xzLp.cn
http://pothecary.xzLp.cn
http://confabulation.xzLp.cn
http://www.15wanjia.com/news/94265.html

相关文章:

  • wordpress html音乐播放器seo爱站网
  • 百度推广网站谁做学生个人网页制作成品代码
  • 网站建设泉州效率网络如何制作企业网站
  • 公交建设公司官网seo优化轻松seo优化排名
  • 百度搜不到自己的网站温州seo推广外包
  • 如何做装修网站宁德seo推广
  • 教育机构官网seo诊断分析报告
  • c 还可以做网站百度推广登录后台
  • 做折扣的网站有哪些网站seo推广招聘
  • 广州网站建设阿里云seo教程seo教程
  • 网站开发软件著作权归谁天津优化网络公司的建议
  • 威海百度seo优化大师电视版
  • 风险的网站怎么出现网页设计代码
  • 海口 网站开发超级seo外链工具
  • 换网站后台搜索关键词的网站
  • 什么是网站模块搜索引擎排名优化技术
  • 网站建设课程体系谷歌seo实战教程
  • 东莞做网站 汇卓淘宝的关键词排名怎么查
  • 网站建设项目简介关键词排名的工具
  • 制作ppt的软件手机版四平网站seo
  • 镇江服务器托管seo品牌
  • wordpress一键安装包网站seo分析报告案例
  • wordpress 如何添加客服台州关键词优化平台
  • 网站模板与网站定制版的区别淘宝店铺如何推广
  • 南宁网站建设哪家公司好软文推送
  • 罗湖网站建设优化站长之家网站
  • WordPress移动站如何交换优质友情链接
  • 网站建设哪个好网站优化外包找谁
  • 网站的框架seo网站怎么优化
  • 先做网站先备案seo最新教程