task ndkBuild(type: Exec) {
def Properties localProps = new Properties()
localProps.load(new FileInputStream("local.properties"))
def ndk_dir=localProps['ndk.dir']
def ndk_build_cmd = "$ndk_dir/ndk-build"
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
ndk_build_cmd = "$ndk_dir/ndk-build.cmd"
}
if(ndkBuild_Debug_Enabled) {
commandLine ndk_build_cmd,
'-j', Runtime.runtime.availableProcessors(),
"NDK_PROJECT_PATH=$rootDir/app/src/main",
"NDK_OUT=$buildDir/native/obj",
"NDK_DEBUG=1"
} else{
commandLine ndk_build_cmd,
'-j', Runtime.runtime.availableProcessors(),
"NDK_PROJECT_PATH=$rootDir/app/src/main",
"NDK_OUT=$buildDir/native/obj"
}
doLast {
/* com.android.build.gradle.tasks.PackageApplication->doFullTaskAction->getBuilder().packageApk
*Android Studio\gradle\m2repository\com\android\tools\build\builder\1.3.0\builder-1.3.0-sources.jar!\com\android\builder\internal\packaging\Packager.java
*中的过滤变量 private static final Pattern PATTERN_NATIVELIB_EXT = Pattern.compile("^.+\\.so$",Pattern.CASE_INSENSITIVE);
* 不能包含名字不是SO的其他文件
*/
File file = new File("$rootDir/app/src/main/libs");
File[] files = file.listFiles(new FilenameFilter() {
/**
* 测试指定文件是否应该包含在某一文件列表中。
*
* @param dir
* 被找到的文件所在的目录。
* @param name
* 文件的名称。
* @return 当且仅当该名称应该包含在文件列表中时返回 true;否则返回
* false。返回true时,该文件将被允许添加到文件列表中,否则不能添加到文件列表中。
*/
public boolean accept(File dir, String name) {
File f = new File(dir, name);
if (f.isDirectory()) {
File rf = new File(f.getPath(), "Standalone");
if(rf.exists()){
return true;
}
return false;
}
else {
return false;// 否则返回false。
}
}
});
for(File f : files) {
File src_file = new File(f.getAbsolutePath(), "Standalone");
File dst_file = new File(f.getAbsolutePath(), "Standalone.so");
dst_file.delete();
src_file.renameTo(dst_file)
}
}
}