I fixed the problem. the reason is that all files of org.jivesoftware.smack and org.jivesoftware.smacx folders won't be packaged when gradle build.
I added some code in build.gradle to fix it.
task preBuild(overwrite:true) { copy { from('src/main/java/org.jivesoftware.smack') { include "**" } into('build/intermediates/classes/debug/org.jivesoftware.smack') } copy { from('src/main/java/org.jivesoftware.smack') { include "**" } into('build/intermediates/classes/release/org.jivesoftware.smack') } copy { from('src/main/java/org.jivesoftware.smackx') { include "**" } into('build/intermediates/classes/debug/org.jivesoftware.smackx') } copy { from('src/main/java/org.jivesoftware.smackx') { include "**" } into('build/intermediates/classes/release/org.jivesoftware.smackx') } }