2013-10-14 1 views
3

나는 7z 아카이브를 추출해야하는 안드로이드 응용 프로그램을 작성 중입니다. 제 시간에, 내 프로젝트에서 사용할 수있는 타사 라이브러리 또는 소스 코드를 검색했습니다.안드로이드에서 p7zip - 안드로이드에서 7z 아카이브를 추출

먼저 J7zip을 http://sourceforge.net/projects/p7zip/files/J7Zip/에서 찾았습니다. 두 개의 샘플 클래스를 수정 한 후 내 프로젝트에서 작동합니다. 흥미 롭습니다! 그러나 문제는 다음과 같습니다. 1. 더 큰 아카이브 압축을 풀 때 메모리 부족 오류가 발생합니다. 2. 복사 또는 LZMA 코덱을 사용하는 아카이브 만 지원합니다. 나는 이것에 대해 너무 슬퍼 ...

그런 다음이 발견 : "J7zip on Android - Extracting From an Archive and Listing Contents"in StackOverflow. 내 요구 사항은이 질문과 심각하게 비슷합니다. andro7z에 언급 된 것처럼 C/C++ 코드가 포함되어 있습니다 : http://sourceforge.net/projects/p7zip/files/p7zip/; 나는 이것이 나를위한 좋은 해결책이라고 생각한다.

andro7z에는 "doc 사용 방법"이 포함되어 있지 않으며 JNI에 대해 새로운 점이 있습니다. 내 프로젝트에 맞는 andro7z를 수정하는 방법에 대해서는 잘 모릅니다. 그래서 누구나 andro7z와 함께 7z 압축 파일을 압축 해 냈습니다. 데모 코드 또는이 단계를 구현하기위한 단계를 나에게 알려주시겠습니까? 감사!

+0

누군가가 7z 소스 코드를 사용하여 7z 압축 파일을 압축 해제 한 C++ 방법을 보여줄 수 있습니까? –

답변

2

"jni/7z"및 "src"폴더 아래에있는 클래스는 사용자가 직접 구현해야하며 암호화 된 아카이브를 지원해야하는 경우 7z.dll에서 메소드를 호출하거나 소스를 수정해야합니다 C/CPP 폴더의 코드, C/CPP는 7z 소스 코드입니다.

+0

관리 해 주셔서 감사합니다. 좀 더 자세한 정보와 코드를 제공해 주시겠습니까? –

+0

jni C++ 코드 : const char * args [5] = { "7za", "x", tarPath, extFile, 0}; jint 결과 = andro7za_main (ARGC, args); 자바 호출 코드 : public static native int extract (String targetPath, String extractFilePath); int result = 추출 ("- O"+ targetPath, 추출 파일); –