Конвертировать .java в .smali - PullRequest
1 голос
/ 17 июня 2019

Как уже упоминалось в заголовке, я пытаюсь преобразовать java-файл в файл .smali, поэтому вот команды, которые я пытаюсь запустить из терминала студии Android:

javac HelloWorld.java

dx --dex --output=classes.dex HelloWorld.class

baksmali classes.dex

Но когда я запускаю вторую команду, я получаю эту ошибку:

bash: dx: команда не найдена

Кроме того, я попытался скомпилировать свой файл напрямую в smali, перейдя по адресу: Build/compile to smali на Android studio, и вот ошибка, которую я получаю:

Ошибка: внутренняя ошибка: (java.lang.ClassNotFoundException) com.google.wireless.android.sdk.stats.IntellijIndexingStats $ Index java.lang.ClassNotFoundException: com.google.wireless.android.sdk.stats.IntellijIndexingStats $ Index> на java.net.URLClassLoader.findClass (URLClassLoader.java:381) в java.lang.ClassLoader.loadClass (ClassLoader.java:424) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) на com.intellij.util.indexing.counters.IndexCounters. (IndexCounters.java:34) на com.intellij.util.indexing.impl.MapReduceIndex. (MapReduceIndex.java:86) в org.jetbrains.jps.backwardRefs.index.CompilerReferenceIndex $ CompilerMapReduceIndex. (CompilerReferenceIndex.java:214) в org.jetbrains.jps.backwardRefs.index.CompilerReferenceIndex. (CompilerReferenceIndex.java:73) в org.jetbrains.jps.backwardRefs.JavaCompilerBackwardReferenceIndex. (JavaCompilerBackwardReferenceIndex.java:12) в org.jetbrains.jps.backwardRefs.JavaBackwardReferenceIndexWriter.initialize (JavaBackwardReferenceIndexWriter.java:74) в org.jetbrains.jps.backwardRefs.JavaBackwardReferenceIndexBuilder.buildStarted (JavaBackwardReferenceIndexBuilder.java:40) в org.jetbrains.jps.incremental.IncProjectBuilder.runBuild (IncProjectBuilder.java:358) в org.jetbrains.jps.incremental.IncProjectBuilder.build (IncProjectBuilder.java:178) в org.jetbrains.jps.cmdline.BuildRunner.runBuild (BuildRunner.java:138) в org.jetbrains.jps.cmdline.BuildSession.runBuild (BuildSession.java:302) в org.jetbrains.jps.cmdline.BuildSession.run (BuildSession.java:135) в org.jetbrains.jps.cmdline.BuildMain $ MyMessageHandler.lambda $ channelRead0 $ 0 (BuildMain.java:229) в org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda $ executeOnPooledThread $ 0 (SharedThreadPoolImpl.java:42) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) at java.lang.Thread.run (Thread.java:745)

Любые идеи о том, как я могу сделать эту работу? или любой другой инструмент для преобразования .java в .smali?

1 Ответ

1 голос
/ 19 июня 2019

Это сработало для меня:

Мне просто нужно было найти команду dx, которая находится в ~/Android/Sdk/build-tools/$version в Linux, но сначала убедитесь, что android-sdk установлен (обычно находится в ~/android/sdk в Linux), затем запустите dx, используя

./dx --dex --output=classes.dex path_to_source_file.class, если вы находитесь в том же каталоге, что и dx

...