Upon upgraded aTalk to use smack-4.4.0-alpha3 release on 20200404, the aTalk project can logger be built under Android Studio (AS). The build throws incompatible types for all the aTalk classes implementation of the interface ExtensionElement.
Please see comments in Issue Tracker:
https://issuetracker.google.com/issues/153594531
The problem does not seems to relate to the AS release version nor the gradle versions.
The problem remains even I have downgraded the AS from 3.6.2 to 3.5.3 and also all the gradle tools versions.
It seems that AS is unable to relate aTalk classes implementation to its ExtensionElement interface defined in smack library. Eventually I have to extract both the below 2 files from smack-core library and placed them into the aTalk local project directory (using jarjar.repackage). Only then, AS is able to build aTalk project sucessfully i.e.
‘org.jivesoftware.smack.packet.stanza’ and ‘org.jivesoftware.smack.packet.stanzaView’
I have no idea which one is the cause of the problem i.e. AS or smack.
Note: there is no build problem with smack-4.4.0-alphas3 released on 20190916.
jarjar.repackage {
from("org.igniterealtime.smack:smack-core:$smackVersion") {
transitive = false
}
destinationDir new File("${projectDir}/../aTalk/third_party/m2/org/igniterealtime/smack/smack-core-jarjar/${smackVersion}")
destinationName "smack-core-jarjar-${smackVersion}.jar"
// smack-core
classDelete 'org.jivesoftware.smack.packet.stanza'
classDelete 'org.jivesoftware.smack.packet.stanzaView'
classDelete 'org.jivesoftware.smack.provider.AbstractProvider'
classDelete 'org.jivesoftware.smack.util.StringUtils**'
classDelete 'org.jivesoftware.smack.AbstractXMPPConnection**'
},
====== Android Studio IDE reported build errors =============
> Task :aTalk:compileFdroidDebugJavaWithJavac
Gradle may disable incremental compilation as the following annotation processors are not incremental: jetified-butterknife-compiler-10.1.0.jar (com.jakewharton:butterknife-compiler:10.1.0).
Consider setting the experimental feature flag android.enableSeparateAnnotationProcessing=true in the gradle.properties file to run annotation processing in a separate task and make compilation incremental.
Note: [1] Wrote GeneratedAppGlideModule with: []
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicTelephonyJabberImpl.java:780: error: incompatible types: ExtensionElement cannot be converted to TransferExtensionElement
= jingle.getExtension(TransferExtensionElement.ELEMENT, TransferExtensionElement.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicTelephonyJabberImpl.java:782: error: incompatible types: ExtensionElement cannot be converted to CallIdExtensionElement
= jingle.getExtension(CallIdExtensionElement.ELEMENT, CallIdExtensionElement.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/CallJabberImpl.java:705: error: incompatible types: ExtensionElement cannot be converted to TransferExtensionElement
= jingle.getExtension(TransferExtensionElement.ELEMENT, TransferExtensionElement.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/CallJabberImpl.java:734: error: incompatible types: ExtensionElement cannot be converted to CoinExtensionElement
CoinExtensionElement coin = jingle.getExtension(CoinExtensionElement.ELEMENT, CoinExtensionElement.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java:297: error: incompatible types: ExtensionElement cannot be converted to JingleReason
JingleReason reason = responseIQ.getExtension(JingleReason.ELEMENT, JingleReason.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/jivesoftware/smackx/httpauthorizationrequest/HTTPAuthorizationRequestManager.java:92: error: incompatible types: ExtensionElement cannot be converted to Body
Message.Body bodyExt = message.getExtension(Message.Body.ELEMENT, Message.Body.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/jivesoftware/smackx/httpauthorizationrequest/element/ConfirmExtension.java:104: error: incompatible types: ExtensionElement cannot be converted to ConfirmExtension
return message.getExtension(ELEMENT, NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java:948: error: incompatible types: ExtensionElement cannot be converted to DelayInformation
DelayInformation delayInfo = msg.getExtension(DelayInformation.ELEMENT, DelayInformation.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/OperationSetMultiUserChatJabberImpl.java:781: error: incompatible types: ExtensionElement cannot be converted to DelayInformation
= msg.getExtension(DelayInformation.ELEMENT, DelayInformation.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2012: error: incompatible types: ExtensionElement cannot be converted to DelayInformation
DelayInformation delayInfo = message.getExtension(DelayInformation.ELEMENT, DelayInformation.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2046: error: incompatible types: ExtensionElement cannot be converted to MultipleAddresses
MultipleAddresses mAddress = message.getExtension(MultipleAddresses.ELEMENT, MultipleAddresses.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2733: error: incompatible types: ExtensionElement cannot be converted to MUCUser
MUCUser mucUser = presence.getExtension(MUCUser.ELEMENT, MUCUser.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2830: error: incompatible types: ExtensionElement cannot be converted to Nick
Nick nickExtension = presence.getExtension(Nick.ELEMENT_NAME, Nick.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2835: error: incompatible types: ExtensionElement cannot be converted to Email
Email emailExtension = presence.getExtension(Email.ELEMENT_NAME, Email.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2840: error: incompatible types: ExtensionElement cannot be converted to AvatarUrl
AvatarUrl avatarUrl = presence.getExtension(AvatarUrl.ELEMENT_NAME, AvatarUrl.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java:2845: error: incompatible types: ExtensionElement cannot be converted to StatsId
StatsId statsId = presence.getExtension(StatsId.ELEMENT_NAME, StatsId.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/atalk/android/gui/chat/conference/CaptchaDialog.java:137: error: incompatible types: ExtensionElement cannot be converted to Body
Body bodyExt = mMessage.getExtension(Body.ELEMENT, Body.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/atalk/android/gui/chat/conference/CaptchaDialog.java:280: error: incompatible types: ExtensionElement cannot be converted to Captcha
Captcha captcha = mMessage.getExtension(CaptchaIQ.ELEMENT, CaptchaIQ.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/atalk/android/gui/chat/conference/CaptchaDialog.java:288: error: incompatible types: ExtensionElement cannot be converted to BoBExt
BoBExt bob = mMessage.getExtension(BoBExt.ELEMENT, BoBExt.NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/jivesoftware/smackx/avatar/vcardavatar/VCardAvatarManager.java:273: error: incompatible types: ExtensionElement cannot be converted to VCardTempXUpdate
VCardTempXUpdate vCardXExtension = stanza.getExtension(ELEMENT, NAMESPACE);
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java:540: error: incompatible types: ExtensionElement cannot be converted to DataPacketExtension
DataPacketExtension data = packet.getExtension(
^
/home/cmeng/workspace/android/atalk-android/aTalk/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java:595: error: incompatible types: ExtensionElement cannot be converted to DataPacketExtension
data = packet.getExtension(
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
22 errors
> Task :aTalk:compileFdroidDebugJavaWithJavac FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':aTalk:compileFdroidDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2m 1s
22 actionable tasks: 20 executed, 2 up-to-date
1:50:04 PM: Task execution finished 'build'.