package com.su.shrinkResource
import org.gradle.api.Project
import java.nio.file.Files
import java.nio.file.Paths
/**
* 建立一个文件夹
* 文件夹模式如下:
* /shrink/../国家/ 语言和默认语言
*
*/
public class ShrinkResource {
String mVariantResourcePath;
ArrayList<String> mShrinkResources;
String mApptPath;
String mCompileVersion;
public String mProjectPath;
public ShrinkResource(String variantResourcePath, ArrayList<String> shrinkResources, String compileVersion) {
mVariantResourcePath = variantResourcePath;
mShrinkResources = shrinkResources;
this.mCompileVersion = compileVersion;
}
public ShrinkResource init(Project project) {
if (project == null) {
println("project is null");
return null;
}
String sdkDir = getSDKDir(project);
mProjectPath = project.projectDir.getAbsolutePath();
println("============SDK Dir============" + sdkDir);
this.mApptPath = new StringBuilder(sdkDir + File.separator + "build-tools" + File.separator + mCompileVersion + File.separator + "aapt").toString();
println("============AAPT Path==========" + mApptPath);
return this;
}
def String getSDKDir(Project project) {
if (project == null) {
return null;
}
Properties props = new Properties();
props.load(new FileInputStream(project.rootProject.file("local.properties")));
String dir = props.get('sdk.dir');
return dir;
}
def boolean isEmpty(String str) {
return null == str || str.length() == 0;
}
def void makeDir(String path) {
if (isEmpty(path)) {
return;
}
File file = new File(path);
if (file != null) {
file.mkdirs();
}
}
def void executeCommand(String cmd) {
if (isEmpty(cmd)) {
return;
}
try {
def execute = cmd;
execute.execute();
execute.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
def void makeResourceDirs() {
if (mShrinkResources == null) {
return;
}
for (String res : mShrinkResources) {
String path = getResShrinkPath(res);
makeDir(path)
}
}
def void copyFiles(String fromPath, String targetPath) {
if (isEmpty(fromPath) || isEmpty(targetPath)) {
return;
}
try {
Files.copy(Paths.get(fromPath), Paths.get(targetPath));
} catch (Exception ex) {
ex.printStackTrace();
}
}
def String getResShrinkPath(String s) {
return mProjectPath + File.separator + "shrinkResource" + File.separator + s + File.separator;
}
def void startShrinking() {
// first make tmp Workpath
makeTmpWorkSpace();
// 第二个拷贝文件
copyResToTmpWorkSpace();
// 准备 Android MainFest 以及 R 文件等
prepareAndroidMainFest();
prepareStringResources();
// startToCompile
compileStringResources();
}
def void compileStringResources() {
println("======================COMPILE STRING RESOURCE==============================");
}
def void prepareStringResources() {
println("=====================PREPARE STRING RESOURCE===============================");
}
def void prepareAndroidMainFest() {
println("=====================PREPARE AndroidMainfest===============================");
}
def void copyResToTmpWorkSpace() {
println("=================START TO COPY FILES ===========================");
println("=================END TO COPY FILES ===========================");
}
private final static String S_TMP_WORKSPACE = "tmp";
def void makeTmpWorkSpace() {
String tmpWorkPath = getResShrinkPath(S_TMP_WORKSPACE);
log("tmp path" + tmpWorkPath)
deleteFiles(tmpWorkPath);
try {
makeDir(tmpWorkPath);
} catch (Exception e) {
e.printStackTrace();
}
}
def void log(Object object) {
println(object);
}
def void deleteFiles(String path) {
if (isEmpty(path)) {
return;
}
try {
new File(path).deleteDir();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Android字符串动态加载
最新推荐文章于 2024-04-08 22:12:42 发布