我正在以Cordova插件的形式编写到某些本地Android代码的桥梁。我对本地代码不是很熟悉,因此担心项目结构不完全正确。
为清楚起见;我有两个项目
注意:本机代码采用.aar文件的形式,我必须在我的插件中编写一个JavaScript接口,该接口可以访问Java类,然后可以使用.aar文件。
本机代码正在使用Proguard进行优化和混淆,当我在测试应用程序目录中运行命令“ cordova run android”时,会导致以下错误,该命令将下载插件并将其安装到项目中在我的手机上启动它:
(由于尺寸过大,我已排除了42个未解决的引用)
警告:有42个未解决的对类或接口的引用。 您可能需要添加缺少的库jar或更新其版本。 如果您的代码正常运行而没有缺少类,则可以取消 带“ -dontwarn”选项的警告。 http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
失败:生成失败,发生异常。 *出了什么问题:任务':app:transformClassesAndResourcesWithProguardForDebug'的执行失败。
我不知道问题是什么,但是我的理论是不使用我的proguard.cfg文件。当我浏览硬盘驱动器上的文件结构时可以找到它,因此它已包含在cordova插件下载中(我在我的plugin.xml文件中将其作为资源文件引用-可能是错误的,但是我已经尝试了此处列出的大多数选项:https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html)。
以前,我已经编写了一些Java测试方法,并已在我的测试应用程序中成功安装了该插件。唯一更改的是,我添加了.aar文件,该文件依赖Proguard并导致上述构建错误。
我有以下proguard.cfg文件:
-keepclassmembers class cordova.plugin.<name>.** { *;}
-keep class cordova.plugin.<name>.** { *;}
-dontwarn cordova.plugin.<name>;.**
-keep class ch.qos.** { *; }
-keep class org.slf4j.** { *; }
-keepattributes *Annotation*
-dontwarn javax.mail.**
-dontwarn javax.naming.Context
-dontwarn javax.naming.InitialContext
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault
-dontwarn okio.**
我的项目结构如下(Cordova插件):
我的build.gradle包含以下内容:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
"proguard.cfg"
}
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
"proguard.cfg"
}
}
正如开头所述,我不习惯使用本机代码,这是我的第一个cordova插件,因此我真的不知道从哪里开始调试。这是一些特别的问题: