이것은 매우 흥미로운 일입니다. APK 파일 com.company.app.apk가 있습니다. APK에의 파일 이름을 얻기 위해 다음 코드를 사용하여, Eclipse를 사용하여 에뮬레이터에 설치하는 경우 :apk 파일의 코드는 마켓에서 어디에서 설치 되었습니까?
String fileName = activity.getPackageManager().getApplicationInfo(
activity.getPackageName(), PackageManager.GET_META_DATA).publicSourceDir;
을 나는이 com.company.app-1.apk
같은 경로 이름을 얻는다. 파일 크기는 내가 만든 apk 파일과 같습니다.
이제 Market에이 앱을 게시하고 실제 기기 (Android 2.3)에 설치하면 같은 코드가 com.company.app-2.zip
과 같은 경로 이름을 반환했습니다. 파일 확장명이 .zip으로 변경되었으며 가장 중요한 점은 파일 크기가 원본 크기보다 상당히 작습니다.
이클립스에 의해 에뮬레이터에 설치 한 내가 예상 한대로 정확히 같은 물건을 가지고 : 내 PC에이 두 파일을 전송하고이를 열 윈집을 사용하는 경우
는 지금, 나는 하나 개의 정말 흥미로운 점을 발견했다. 코드 ('com'폴더), 리소스 ('res'폴더), 서명 ('META-INF'폴더), 자산 ('assets'폴더) 및 매니페스트 파일 (AndroidManifest.xml) 그러나 Market에 의해 실제 장치에 설치된 장치에는 리소스와 매니페스트 파일의 두 부분 만 있습니다.질문 : Market에서 설치하면 .apk 파일이 2 개 (또는 그 이상) 파일로 분할됩니다. 하나의 파일은 리소스 만 포함하는 ApplicationInfo.publicSourceDir
에 의해 지정됩니다. 다른 파일에 대한 경로 이름은 어떻게 얻을 수 있습니까?
추가 : 두 버전의 동일한 앱이 있습니다. 하나는 Google의 공급 업체 라이선스 서비스를 사용하여, 다른 하나는 무료이며 다른 하나는 무료입니다. 위에서 언급 한 현상은 유료 버전에서만 발생합니다. 왜?
수정 : 첫 번째 경우에 설치된 apk 파일에 'com'폴더가 있다고 말했을 때 나는 분명해야합니다. * .java 파일 자체는 'com'폴더에 없습니다. 사실, 'com'폴더에는 빌드 프로세스 중에 부주의로 남아있는 가비지 파일이 몇 개 있습니다. 그 쓰레기 파일이 아니라면, 나는 'com'폴더가 처음에는있을 것이라고 생각하지 않는다.
이것은 매우 흥미 롭습니다. 해결해 주셔서 감사합니다. 그것은 불법 복제 방지 조치로 작동하고있는 것처럼 보입니까? – edthethird