Я создал приложение для Android, которое отправляет электронные письма через JavaMail , и оно отлично работает. Теперь мне нужно получить код Smali, чтобы поместить его в другое приложение (школьные проекты, не волнуйтесь).
Однако, если я "декомпилирую" файл apk с помощью apktool и (без внесения каких-либо изменений) перестрою его, приложение, похоже, не найдет необходимые классы.
adb logcat
показывает:
W javax.mail: expected resource not found: {0}
И, следовательно, ряд ошибок:
W System.err: javax.mail.MessagingException: IOException while sending message;
W System.err: nested exception is:
W System.err: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
W System.err: boundary="----=_Part_0_234635997.1537189564327"
W System.err: at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1365)
W System.err: at javax.mail.Transport.send0(Transport.java:255)
W System.err: at javax.mail.Transport.send(Transport.java:124)
W System.err: at com.example.sec.screentest.MainActivity$MailTask.doInBackground(MainActivity.java:164)
W System.err: at com.example.sec.screentest.MainActivity$MailTask.doInBackground(MainActivity.java:124)
W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:345)
W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
W System.err: at java.lang.Thread.run(Thread.java:784)
W System.err: Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
W System.err: boundary="----=_Part_0_234635997.1537189564327"
W System.err: at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:908)
W System.err: at javax.activation.DataHandler.writeTo(DataHandler.java:330)
W System.err: at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1694)
W System.err: at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1913)
W System.err: at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1315)
W System.err: ... 10 more
Глядя на код Smali, javax.mail
всегда вызывается из проекта "root" (например, Ljavax/mail/Authenticator;-><init>()V
), и это должно быть правильно, поскольку папка javax
находится в этой позиции.
Я использую: apktool d appname.apk
и apktool b project_dir
для восстановления.