2017-09-01 49 views
0

我是Android SDK新手。我使用Emacs作为IDE(我了解Android Studio)。我创建了一个项目,并从一个名为gradlew的脚本编译它(它是在创建项目时自动创建的)。 APK已成功创建。现在,我试图实现(使用FlyMake)语法错误检查器。用于执行此命令如下:Android SDK找不到一些.java源代码

javac "main.java"

main.java其中是主应用程序的(仅存在一个文件)。

很明显,javac不知道SDK(API级别20)在哪里。所以我告诉它如下:

javac -sourcepath "~/opt/android/sources/android-20" "main.java"

但它会引发很多错误,如“找不到类”。例如:

/home/carlos/opt/android/sources/android-20/android/app/Activity.java:29: error: cannot find symbol

import android.content.IIntentSender;

   ^

symbol: class IIntentSender location: package android.content

当我看到android/content的内容,没有一个名为IIntentSender

那么,发生了什么事的.java?感谢您的阅读和回答!

+0

上次我手工使用'javac'时,我使用'-classpath',而不是'-sourcepath'。假设'〜/ opt/android /'是你的Android SDK的安装目录,'-classpath'的适当JAR应该是'〜/ opt/android/platforms/android-20/android.jar'。 'IIntentSender'是生成的Java源代码(来自AIDL),并且在SDK'sources'目录中不会以Java形式存在。所以,如果FlyMake需要'-sourcepath',我预计你将会处于一个受到伤害的世界。 – CommonsWare

+0

Jaja ok。我会记住 –

回答

1

这个问题被回答了CommonsWare

The last time I used javac by hand, I used -classpath, not -sourcepath. The appropriate JAR for -classpath would be ~/opt/android/platforms/android-20/android.jar, assuming that ~/opt/android/ is where your Android SDK is installed. IIntentSender is generated Java source code (from AIDL) and will not be in Java form in the SDK sources directory. So, if FlyMake requires -sourcepath, I expect that you're going to be in a world of hurt.

谢谢!