我需要使用命令行从资源构建R.java文件。我使用以下Java程序执行此操作。 我得到了错误:
无效的资源目录名称:C:\ Users \ Muzammil-Husnain \ testing \ Soothing-snow-fall \ res / drawable-tvdpi
和
无效的资源目录名称:C:\ Users \ Muzammil-Husnain \ testing \ Soothing-snow-fall \ res / drawable-xhdpi
如果我从res文件夹中删除这两个文件夹,则说
错误:输入目录“文件”不存在
这是我的代码:
public static String ProjectPath = "C:\\Users\\Muzammil-Husnain\\testing\\Soothing-snow-fall";
public static String ANDROID_HOME = "C:/Program Files (x86)/Android/android-sdk";
public static void generateRfile() {
try {
File projectDirectoryFile = new File(ProjectPath);
String command = "aapt package -v -f -m "+
" -S \""+projectDirectoryFile.getCanonicalPath()+"/res\"" +
" -J \""+projectDirectoryFile.getCanonicalPath()+"/gen\"" +
" -M \""+projectDirectoryFile.getCanonicalPath()+"/AndroidManifest.xml\"" +
" -I C:\\Program Files (x86)\\Android\\android-sdk\\platforms\\android-21\\android.jar\"";
System.out.println("Directory Path : "+projectDirectoryFile.getCanonicalPath());
System.out.println(command);
ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", command);
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) {
break;
}
System.out.println(line);
}
} catch (IOException ex) {
Logger.getLogger(RunApplicationOnPrject.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:3)
您正在安装命令行来调用cmd.exe,并且该目录不在双引号内,因此cmd.exe正在解释"文件"在C:\ Program Files中作为不同的参数。尝试将目录/文件规范放在双引号之间,如下所示:
String command = "aapt package -v -f -m "+
" -S \""+projectDirectoryFile.getCanonicalPath()+"/res\"" +
" -J \""+projectDirectoryFile.getCanonicalPath()+"/gen\"" +
" -M \""+projectDirectoryFile.getCanonicalPath()+"/AndroidManifest.xml\"" +
" -I \""+ANDROID_HOME+"/platforms/android-18/android.jar\"";
答案 1 :(得分:1)
修改强>
我的一位朋友指着我gradle。它是一种复杂的构建自动化工具,也可以从命令行使用。由于为Android设置资源和资产始终是一场噩梦,您可能需要查看它。似乎有一些教程可用于创建this one或this one等Android应用。
根据this SO post,您可能需要跳过一些环节才能将资源文件夹正确添加到项目中。
sometimes comes up过时和/或Android SDK版本过时的另一个问题。您应该检查是否可以将这些更新到任何更新的版本。
答案 2 :(得分:0)
android jar文件未被aapt定位问题是代码中缺少启动引用
" -I C:\\Program Files (x86)\\Android\\android-sdk\\platforms\\android-21\\android.jar\""
虽然结束引用存在并且android.jar的url被破坏所以我改变了。所以我将代码更改为
" -I \"C:\\Program Files (x86)\\Android\\android-sdk\\platforms\\android-21\\android.jar\""
并且问题得到解决: - )