mirror of
https://github.com/RfidResearchGroup/RFIDtools.git
synced 2026-05-12 11:19:59 -07:00
Merge pull request #33 from xianglin1998/master
Removed some resource to maven(gitpack.io)
This commit is contained in:
@@ -52,7 +52,9 @@ dependencies {
|
||||
|
||||
annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'
|
||||
|
||||
implementation project(':io_redirect')
|
||||
// This my project maven from github release!
|
||||
implementation 'com.github.xianglin1998:IORedirector:1.0'
|
||||
|
||||
implementation project(':utils')
|
||||
implementation project(':mfkey_32_64')
|
||||
implementation project(':libnfc_pn53x')
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
# Built application files
|
||||
*.apk
|
||||
*.ap_
|
||||
|
||||
# Files for the ART/Dalvik VM
|
||||
*.dex
|
||||
|
||||
# Java class files
|
||||
*.class
|
||||
|
||||
# Generated files
|
||||
bin/
|
||||
gen/
|
||||
out/
|
||||
|
||||
# Cmake gen
|
||||
.cxx/
|
||||
|
||||
# Gradle files
|
||||
.gradle/
|
||||
build/
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
# Proguard folder generated by Eclipse
|
||||
proguard/
|
||||
|
||||
# Log Files
|
||||
*.log
|
||||
|
||||
# Android Studio Navigation editor temp files
|
||||
.navigation/
|
||||
|
||||
# Android Studio captures folder
|
||||
captures/
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
.idea/
|
||||
|
||||
# Keystore files
|
||||
# Uncomment the following line if you do not want to check your keystore files in.
|
||||
#*.jks
|
||||
|
||||
# External native build folder generated in Android Studio 2.2 and later
|
||||
.externalNativeBuild
|
||||
|
||||
# Google Services (e.g. APIs or Firebase)
|
||||
google-services.json
|
||||
|
||||
# Freeline
|
||||
freeline.py
|
||||
freeline/
|
||||
freeline_project_description.json
|
||||
|
||||
# fastlane
|
||||
fastlane/report.xml
|
||||
fastlane/Preview.html
|
||||
fastlane/screenshots
|
||||
fastlane/test_output
|
||||
fastlane/readme.md
|
||||
@@ -1,44 +0,0 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion "29.0.2"
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 29
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments '-DANDROID_STL=c++_static'
|
||||
abiFilters "x86", "x86_64", "armeabi-v7a", "arm64-v8a"
|
||||
}
|
||||
//abiFilters "armeabi"
|
||||
/*abiFilters "arm64-v8a"*/
|
||||
/*abiFilters "x86_64"*/
|
||||
/*abiFilters "arm64-v8a"
|
||||
abiFilters "mips"
|
||||
abiFilters "mips64"
|
||||
abiFilters "x86"
|
||||
abiFilters "x86_64"*/
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
version '3.10.2'
|
||||
path 'src/main/cpp/CMakeLists.txt'
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
}
|
||||
Vendored
-21
@@ -1,21 +0,0 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
@@ -1,2 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="cn.rrg.freo" />
|
||||
@@ -1,11 +0,0 @@
|
||||
#需要的最cmake版本
|
||||
cmake_minimum_required(VERSION 3.4.1)
|
||||
|
||||
#添加动态库定义
|
||||
add_library(freopen SHARED util.c)
|
||||
|
||||
#添加头文件配置
|
||||
target_include_directories(freopen PRIVATE)
|
||||
|
||||
#添加动态库链接!
|
||||
target_link_libraries(freopen android)
|
||||
@@ -1,228 +0,0 @@
|
||||
//
|
||||
// Created by DXL on 2019/3/4.
|
||||
//
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <zconf.h>
|
||||
#include <malloc.h>
|
||||
#include <jni.h>
|
||||
|
||||
/*
|
||||
* 全局的重定向文件句柄缓存!
|
||||
* */
|
||||
static FILE *ofp;
|
||||
static FILE *efp;
|
||||
static FILE *ifp;
|
||||
|
||||
/*
|
||||
* 从文件指针获得文件路径!
|
||||
* *//*
|
||||
static char *GetPathFromFP(FILE *FP) {
|
||||
if (!FP) return NULL;
|
||||
//取得文件描述符!
|
||||
int fdi = fileno(FP);
|
||||
char proclnk[512] = {0};
|
||||
char path[512] = {0};
|
||||
//进行链接路径拼接!
|
||||
sprintf(proclnk, "/proc/self/fd/%d", fdi);
|
||||
ssize_t r = readlink(proclnk, path, sizeof(path));
|
||||
//LOGD("底层打印ResetStdEO路径: %s", path);
|
||||
if (r <= 0) {
|
||||
//LOGD("GetPathFromFP获取路径失败!");
|
||||
return NULL;
|
||||
}
|
||||
return strdup(path);
|
||||
}*/
|
||||
|
||||
/*
|
||||
* 标准输出重定向!
|
||||
* */
|
||||
jboolean SetStdEO(JNIEnv *env, jclass clz, jstring file, jint type) {
|
||||
//判断传入的参数的可用性!
|
||||
if (!file) return false;
|
||||
jboolean isCopy = false;
|
||||
//解析为char *;
|
||||
const char *_file = (*env)->GetStringUTFChars(env, file, &isCopy);
|
||||
//尝试打开文件
|
||||
switch (type) {
|
||||
case 0:
|
||||
//尝试关闭句柄!
|
||||
if (ofp) {
|
||||
fclose(ofp);
|
||||
ofp = NULL;
|
||||
}
|
||||
if (!(ofp = freopen(_file, "w+", stdout))) {
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return false;
|
||||
}
|
||||
//TODO 非常重要,必须清空文件!
|
||||
ftruncate(fileno(ofp), 0);
|
||||
setbuf(stdout, NULL);
|
||||
break;
|
||||
case 1:
|
||||
//尝试关闭句柄!
|
||||
if (efp) {
|
||||
fclose(efp);
|
||||
efp = NULL;
|
||||
}
|
||||
if (!(efp = freopen(_file, "w+", stderr))) {
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return false;
|
||||
}
|
||||
//TODO 非常重要,必须清空文件!
|
||||
ftruncate(fileno(efp), 0);
|
||||
setbuf(stderr, NULL);
|
||||
break;
|
||||
default:
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return false;
|
||||
}
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* 标准输出重定向!
|
||||
* */
|
||||
jboolean SetStdIN(JNIEnv *env, jclass clz, jstring file) {
|
||||
//判断传入的参数的可用性!
|
||||
if (!file) return false;
|
||||
jboolean isCopy = false;
|
||||
//解析为char *;
|
||||
const char *_file = (*env)->GetStringUTFChars(env, file, &isCopy);
|
||||
//尝试打开文件
|
||||
//尝试关闭句柄!
|
||||
if (ifp) {
|
||||
fclose(ifp);
|
||||
ifp = NULL;
|
||||
}
|
||||
if (!(ifp = freopen(_file, "w+", stdin))) {
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return false;
|
||||
}
|
||||
//TODO 非常重要,必须清空文件!
|
||||
ftruncate(fileno(ifp), 0);
|
||||
setbuf(stdin, NULL);
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* 标准输出重定向!
|
||||
* */
|
||||
jboolean Close(JNIEnv *env, jclass clz, jstring file, jint type) {
|
||||
//判断传入的参数的可用性!
|
||||
if (!file) return false;
|
||||
jboolean isCopy = false;
|
||||
//解析为char *;
|
||||
const char *_file = (*env)->GetStringUTFChars(env, file, &isCopy);
|
||||
bool ret = true;
|
||||
//尝试打开文件
|
||||
switch (type) {
|
||||
case 0:
|
||||
//尝试关闭句柄!
|
||||
if (ofp) {
|
||||
if (fclose(ofp) == 0) {
|
||||
ret = false;
|
||||
} else {
|
||||
ret = true;
|
||||
}
|
||||
ofp = NULL;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
//尝试关闭句柄!
|
||||
if (efp) {
|
||||
if (fclose(efp) == 0) {
|
||||
ret = false;
|
||||
} else {
|
||||
ret = true;
|
||||
}
|
||||
efp = NULL;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
//尝试关闭句柄!
|
||||
if (ifp) {
|
||||
if (fclose(ifp) == 0) {
|
||||
ret = false;
|
||||
} else {
|
||||
ret = true;
|
||||
}
|
||||
ifp = NULL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return false;
|
||||
}
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, file, _file);
|
||||
return (jboolean) ret;
|
||||
}
|
||||
|
||||
//清空标准输入缓冲区!
|
||||
void clearStdIN(JNIEnv *env, jclass clz) {
|
||||
if (ifp) {
|
||||
//在循环中读取有效字符,相当于清空缓冲区!
|
||||
char tmp[1];
|
||||
int fd = fileno(ifp);
|
||||
if (fd != -1) {
|
||||
while (read(fd, tmp, 1) > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 更改工作目录
|
||||
* */
|
||||
jboolean chdir_m(JNIEnv *env, jclass clz, jstring path) {
|
||||
//判断传入的参数的可用性!
|
||||
if (!path) return false;
|
||||
jboolean isCopy = false;
|
||||
//解析为char *;
|
||||
const char *_path = (*env)->GetStringUTFChars(env, path, &isCopy);
|
||||
// 更改工作目录
|
||||
jboolean ret = (jboolean) (chdir(_path) != 0);
|
||||
//谨记释放内存!
|
||||
(*env)->ReleaseStringUTFChars(env, path, _path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* jvm加载so时的映射回调
|
||||
* */
|
||||
JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
JNIEnv *jniEnv = NULL;
|
||||
//得到当前的jvm环境指针
|
||||
if ((*vm)->GetEnv(vm, (void **) &jniEnv, JNI_VERSION_1_4) != JNI_OK) return -1;
|
||||
//初始化全局的jvm函数指针
|
||||
(*jniEnv)->GetJavaVM(jniEnv, &vm);
|
||||
//得到native函数的定义类
|
||||
jclass clazz = (*jniEnv)->FindClass(jniEnv, "cn/rrg/freo/IORedirector");
|
||||
if (clazz == NULL) {
|
||||
return -1;
|
||||
}
|
||||
//构建和初始化函数结构体,分别是java层的函数名称,签名,对应的函数指针
|
||||
JNINativeMethod methods[] = {
|
||||
{"setStdEO", "(Ljava/lang/String;I)Z", (void *) SetStdEO},
|
||||
{"setStdIN", "(Ljava/lang/String;)Z", (void *) SetStdIN},
|
||||
{"clearStdIN", "()V", (void *) clearStdIN},
|
||||
{"close", "(Ljava/lang/String;I)Z", (void *) Close},
|
||||
{"chdir", "(Ljava/lang/String;)Z", (void *) chdir_m}
|
||||
};
|
||||
//注册函数
|
||||
if ((*jniEnv)->RegisterNatives(jniEnv, clazz, methods, sizeof(methods) / sizeof(methods[0])) !=
|
||||
JNI_OK) {
|
||||
return -1;
|
||||
}
|
||||
//最后一定要返回jni的版本。
|
||||
return JNI_VERSION_1_4;
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
package cn.rrg.freo;
|
||||
|
||||
/*
|
||||
* 标准流重定向工具!
|
||||
* */
|
||||
public class IORedirector {
|
||||
|
||||
static {
|
||||
//加载动态库!
|
||||
System.loadLibrary("freopen");
|
||||
}
|
||||
|
||||
/**
|
||||
* 规范化类型传递!
|
||||
* STD_OUT 标准输出
|
||||
* STD_ERR 标准异常
|
||||
* STD_IN 标准输入!
|
||||
*/
|
||||
public static final int STD_OUT = 0;
|
||||
public static final int STD_ERR = 1;
|
||||
public static final int STD_IN = 2;
|
||||
|
||||
/**
|
||||
* 设置STDOUT、STDERR的重定向!
|
||||
*
|
||||
* @param file 文件地址,绝对路径!
|
||||
* @param type 类型,O或者E,对应{STD_OUT}、{STD_ERR}
|
||||
* @return 设置结果,可能的结果:文件不存在、文件无权限、文件被占用 or 成功!
|
||||
*/
|
||||
public static native boolean setStdEO(String file, int type);
|
||||
|
||||
/**
|
||||
* 设置的STD_IN重定向!
|
||||
*
|
||||
* @param file 文件地址,绝对路径!
|
||||
* @return 设置结果,可能的结果:文件不存在、文件无权限、文件被占用 or 成功!
|
||||
*/
|
||||
public static native boolean setStdIN(String file);
|
||||
|
||||
//清空标准输入的缓冲区,防止多次执行stop的误判!
|
||||
public static native void clearStdIN();
|
||||
|
||||
/**
|
||||
* 关闭重定向,实际是关闭底层的文件!
|
||||
* * @param file 文件地址,绝对路径!
|
||||
*/
|
||||
public static native boolean close(String file, int type);
|
||||
|
||||
/* *//*
|
||||
* 进行重定向的流的flush,根据系统的实现不一定可用!
|
||||
* @param 0 = out, 1 = err
|
||||
* *//*
|
||||
public static native void flushStdEO(int type);
|
||||
|
||||
*//*
|
||||
* 进行重定向文件的清空,与BUF的清空
|
||||
* @param type 需要被清空的标准流的类型,同上!
|
||||
* *//*
|
||||
public static native void resetStdEO(int type);*/
|
||||
|
||||
/**
|
||||
* 更改工作目录,使一些相对路径的函数可以发现相关的文件
|
||||
*
|
||||
* @param path 绝对路径,最终程序的工作目录
|
||||
* @return 设置结果,如果参数不符合需求或者没有权限将会返回false,
|
||||
* 设置成功返回true
|
||||
*/
|
||||
public static native boolean chdir(String path);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
<resources>
|
||||
<string name="app_name">freo</string>
|
||||
</resources>
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
include ':app_main', ':utils', ':io_redirect', ':crapto1', ':mfkey_32_64', ':console', ':chameleon', ':communication', ':libnfc_pn53x', ':pm3official', ':pm3iceman', ':pm3rdv4rrg', ':mifaretag'
|
||||
include ':app_main', ':utils', ':crapto1', ':mfkey_32_64', ':console', ':chameleon', ':communication', ':libnfc_pn53x', ':pm3official', ':pm3iceman', ':pm3rdv4rrg', ':mifaretag'
|
||||
include ':pm3flasher'
|
||||
|
||||
Reference in New Issue
Block a user