나는 지금 내가 겪었던 모든 문제를 해결할 수 있다고 생각합니다.
- 라이센스를 보유하기 위해 그룹 요소 제목을 사용하는 것이 가장 좋은 것 같습니다 (이는 iWork 앱에서 Apple이 수행하는 작업입니다). 그러나 이들의 길이에는 제한이 있으므로 (정확히 제한이 무엇인지는 아직 알지 못함) 각 라이센스 파일을 여러 문자열로 분리해야합니다.
- 리터럴 캐리지 리턴 (예 : ^ M, \ r 또는 0x0A라고도 함)을 포함하여이 안에 줄 바꿈을 만들 수 있습니다.
- 리터럴 "의 중간 텍스트를 포함하지 않도록하십시오. 이렇게하면 파일의 일부 또는 모든 문자열이 자동으로 무시됩니다.
아래에 표시된 .plist 및 .strings 파일을 생성하는 데 사용하는 편리한 스크립트가 있습니다.
그것을 사용하려면 :
- 프로젝트 아래에 'licenses'디렉토리를 만듭니다.
- 해당 디렉토리에 스크립트 넣기
- .license로 끝나는 파일 이름을 사용하여 각 라이센스를 해당 디렉토리에 파일 당 하나씩 넣습니다.
- 라이센스에서 필요한 재 포맷을 수행하십시오. (예 : 줄 시작 부분에 추가 공백을 제거하고 단락 중간에 줄 바꿈이 없는지 확인). 각 단락 사이에 빈 줄이 있어야합니다.
- 라이센스 디렉토리로 변경하고 스크립트를 실행하십시오.
- 'Acknowledgements'라는 하위 섹션을 포함하도록 설정 번들 Root.plist를 편집합니다.
다음은 스크립트입니다.
#!/usr/bin/perl -w
use strict;
my $out = "../Settings.bundle/en.lproj/Acknowledgements.strings";
my $plistout = "../Settings.bundle/Acknowledgements.plist";
unlink $out;
open(my $outfh, '>', $out) or die $!;
open(my $plistfh, '>', $plistout) or die $!;
print $plistfh <<'EOD';
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>StringsTable</key>
<string>Acknowledgements</string>
<key>PreferenceSpecifiers</key>
<array>
EOD
for my $i (sort glob("*.license"))
{
my $value=`cat $i`;
$value =~ s/\r//g;
$value =~ s/\n/\r/g;
$value =~ s/[ \t]+\r/\r/g;
$value =~ s/\"/\'/g;
my $key=$i;
$key =~ s/\.license$//;
my $cnt = 1;
my $keynum = $key;
for my $str (split /\r\r/, $value)
{
print $plistfh <<"EOD";
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>$keynum</string>
</dict>
EOD
print $outfh "\"$keynum\" = \"$str\";\n";
$keynum = $key.(++$cnt);
}
}
print $plistfh <<'EOD';
</array>
</dict>
</plist>
EOD
close($outfh);
close($plistfh);
Settings.bundle 설정
Settings.bundle을 만들지 않은 경우 파일-> 새로 만들기-> 새 파일 ...으로 이동합니다.
리소스 섹션에서 설정 번들을 찾습니다. 기본 이름을 사용하고 프로젝트의 루트에 저장합니다.
Settings.bundle
그룹을 확장하고을 선택 Root.plist
합니다. 키 Preference Items
유형 이 될 새 섹션을 추가해야 합니다 Array
. 다음 정보를 추가하십시오.
Filename
이 스크립트에 의해 생성 된 PLIST에 핵심 포인트. title
원하는대로 변경할 수 있습니다 .
빌드시 스크립트 실행
또한 프로젝트를 빌드 할 때마다이 스크립트를 실행하려면 대상에 빌드 단계를 추가 할 수 있습니다.
- 프로젝트 파일로 이동
- 대상 선택
- 빌드 단계 탭을 클릭합니다.
- 해당 창의 오른쪽 하단에서 'Add Build Phase'를 클릭합니다.
- '실행 스크립트 추가'를 선택하십시오.
- perl 스크립트를 스크립트 섹션으로 끌어다 놓습니다. 다음과 같이 수정하십시오.
cd $SRCROOT/licenses
( $SRCROOT
프로젝트의 루트를 가리킴)
./yourScriptName.pl
완료 한 후에 Run Script
는 빌드 프로세스에서 빌드 단계를 더 빨리 드래그 할 수 있습니다 . Compile Sources
설정 번들에 대한 업데이트가 컴파일되고 복사되도록 이전에 위로 이동하는 것이 좋습니다.
iOS 7 업데이트 : iOS 7은 "제목"키를 다르게 처리하는 것으로 보이며 렌더링 된 텍스트를 엉망으로 만듭니다. 생성 된 Acknowledgements.plist를 수정하려면 "Title"대신 "FooterText"키를 사용해야합니다. 스크립트를 변경하는 방법은 다음과 같습니다.
for my $str (split /\r\r/, $value)
{
print $plistfh <<"EOD";
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>FooterText</key> # <= here is the change
<string>$keynum</string>
</dict>
EOD
print $outfh "\"$keynum\" = \"$str\";\n";
$keynum = $key.(++$cnt);
}