Sle*_*ole 37 plugins android cordova android-studio aar
我是cordova插件开发的新手.我想写一个插件,它能够打开一个新的android激活并显示一些广告.
所以我在这里遵循一个简单的教程.这非常有效并且符合预期.
下一步是将此Android Studio Gradle项目包含在我的插件中.
我的第一次尝试:将gradle项目添加到我的cordova插件的子文件夹中,并将以下行添加到plugin.xml文件中:
<framework src="libs/Broper/build.gradle" custom="true" type="gradleReference" />
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<framework src="libs/Broper/app/build.gradle" custom="true" type="gradleReference" />
Run Code Online (Sandbox Code Playgroud)
gradova文件被cordova识别.但有些东西不起作用.所以我无法将android studio项目的类导入到我的插件java文件中.
然后一个更好的解决方案(我认为是)是添加一个AAR.但在那里,我甚至不知道如何在我的cordova插件中添加AAR.
所以,问题是:如何以正确的方式将android atudio aroject(或库)添加到我的cordova插件中?
Nik*_*iko 62
以下是我使用带有Cordova插件的gradle引用所做的工作,我认为这可能会对您有所帮助.
全球结构:
pluginFolder/
build-extras.gradle
plugin.xml
yourDirContainingYourAAR/
src/
android/
yourFile.gradle
myPlugin.java
Run Code Online (Sandbox Code Playgroud)
比如把你的库放在目录中(如果需要的话foo.aar,yourDirContainingYourAAR创建它)
在plugin.xml文件中:
<platform name="android">
<!-- your configuration elements, references, source files, etc... -->
<framework src="src/android/yourFile.gradle" custom="true" type="gradleReference" />
<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />
</platform>
Run Code Online (Sandbox Code Playgroud)在gradle文件中yourFile.gradle:
repositories{
jcenter()
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'foo', ext:'aar')
}
android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Run Code Online (Sandbox Code Playgroud)在插件的根文件夹中(与级别相同plugin.xml)创建一个build-extras.gradle.如果需要,添加或删除minSdkVersion,并targetSdkVersion根据您的项目需求:
android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 22
}
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Run Code Online (Sandbox Code Playgroud)Ame*_*gar 16
Niko的答案必须略有修改
当gradle使用Niko的答案运行编译时,它会搜索app/libs项目中不存在的库(它在标准的Android Studio项目中执行,但在Cordova Android项目结构中,libs文件夹不同).然而,插件复制了aar库app/src/main/libs,可以让我们认为它正在复制aarapp/libs
<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />
因此gradle文件应该是
repositories{
jcenter()
flatDir {
dirs 'src/main/libs'
}
}
dependencies {
compile(name:'foo', ext:'aar')
}
android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供成功的应用程序编译
干杯!!
| 归档时间: |
|
| 查看次数: |
16482 次 |
| 最近记录: |