private File[] parseUsesFramework(Map<String, Object> usesFramework) throws AndrolibException { if (usesFramework == null) { return null; } List<Integer> ids = (List<Integer>) usesFramework.get("ids"); if (ids == null || ids.isEmpty()) { return null; } String tag = (String) usesFramework.get("tag"); File[] files = new File[ids.size()]; int i = 0; for (int id : ids) { files[i++] = mAndRes.getFrameworkApk(id, tag); } return files; }
public void aaptPackage( File apkFile, File manifest, File resDir, File rawDir, File assetDir, File[] include, boolean update, boolean framework) throws AndrolibException { List<String> cmd = new ArrayList<String>(); cmd.add("aapt"); cmd.add("p"); cmd.add("-v"); // mega debug mode.@todo REMOVE ON FINAL if (update) { cmd.add("-u"); } if (mMinSdkVersion != null) { cmd.add("--min-sdk-version"); cmd.add(mMinSdkVersion); } if (mTargetSdkVersion != null) { cmd.add("--target-sdk-version"); cmd.add(mTargetSdkVersion); } if (mMaxSdkVersion != null) { cmd.add("--max-sdk-version"); cmd.add(mMaxSdkVersion); } cmd.add("-F"); cmd.add(apkFile.getAbsolutePath()); if (framework) { cmd.add("-x"); // cmd.add("-0"); // cmd.add("arsc"); } if (include != null) { for (File file : include) { cmd.add("-I"); cmd.add(file.getPath()); } } if (resDir != null) { cmd.add("-S"); cmd.add(resDir.getAbsolutePath()); } if (manifest != null) { cmd.add("-M"); cmd.add(manifest.getAbsolutePath()); } if (assetDir != null) { cmd.add("-A"); cmd.add(assetDir.getAbsolutePath()); } if (rawDir != null) { cmd.add(rawDir.getAbsolutePath()); } try { OS.exec(cmd.toArray(new String[0])); } catch (BrutException ex) { throw new AndrolibException(ex); } }