Skip to content

Commit 3542a8a

Browse files
committed
1.可直接编辑APK中的resources.arsc文件并保存
2.修正数据库引用数的一个BUG
1 parent 8826311 commit 3542a8a

19 files changed

Lines changed: 796 additions & 42 deletions

QResArscEditorUI.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
</qresource>
66
<qresource prefix="/icon">
77
<file>ico/save.png</file>
8+
<file>ico/saveas.png</file>
89
<file>ico/open.png</file>
910
</qresource>
1011
<qresource prefix="/translation">

QtResArscEditor.vcxproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@
3737
</ImportGroup>
3838
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
3939
<QtInstall>QtBinary_5.15_x64</QtInstall>
40-
<QtModules>core;gui;widgets;xml</QtModules>
40+
<QtModules>core;gui;widgets;xml;gui-private</QtModules>
4141
<QtBuildConfig>debug</QtBuildConfig>
4242
</PropertyGroup>
4343
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
4444
<QtInstall>QtBinary_5.15_x64</QtInstall>
45-
<QtModules>core;gui;widgets;xml</QtModules>
45+
<QtModules>core;gui;widgets;xml;gui-private</QtModules>
4646
<QtBuildConfig>release</QtBuildConfig>
4747
</PropertyGroup>
4848
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -69,6 +69,10 @@
6969
<ClCompile>
7070
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
7171
</ClCompile>
72+
<Link>
73+
<AdditionalLibraryDirectories>.\lib</AdditionalLibraryDirectories>
74+
<AdditionalDependencies>zip.lib;%(AdditionalDependencies)</AdditionalDependencies>
75+
</Link>
7276
</ItemDefinitionGroup>
7377
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
7478
<ClCompile>
@@ -77,6 +81,8 @@
7781
</ClCompile>
7882
<Link>
7983
<Version>2.0</Version>
84+
<AdditionalDependencies>zipd.lib;%(AdditionalDependencies)</AdditionalDependencies>
85+
<AdditionalLibraryDirectories>.\lib</AdditionalLibraryDirectories>
8086
</Link>
8187
</ItemDefinitionGroup>
8288
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">

ico/save.png

-62 Bytes
Loading

ico/saveas.png

743 Bytes
Loading

lib/zip.dll

110 KB
Binary file not shown.

lib/zip.lib

28.9 KB
Binary file not shown.

lib/zipd.dll

267 KB
Binary file not shown.

lib/zipd.lib

29 KB
Binary file not shown.

lib/zipd.pdb

1.71 MB
Binary file not shown.

src/QResArscEditor.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ QResArscEditor::~QResArscEditor()
2828
void QResArscEditor::onOpenReleased_Slot(void)
2929
{
3030
QString t_FileName = QFileDialog::getOpenFileName(this, tr("Open ARSC File"), m_basePath,
31-
tr("ARSC File (*.arsc)"), NULL, QFileDialog::DontConfirmOverwrite);
31+
tr("ARSC File (*.arsc);;APK File (*.apk)"), NULL, QFileDialog::DontConfirmOverwrite);
3232
if (t_FileName.isEmpty())
3333
return;
3434
m_basePath = QFileInfo(t_FileName).absolutePath();
@@ -40,10 +40,26 @@ void QResArscEditor::onOpenReleased_Slot(void)
4040
}
4141
void QResArscEditor::onSaveReleased_Slot(void)
4242
{
43+
if (!m_parser->writeFile(m_LE_filePath->text()))
44+
QMessageBox::warning(this, tr("warning"), tr("The specified file cannot be written in !"));
45+
else
46+
QMessageBox::information(this, tr("information"), tr("File write completed !"));
47+
}
48+
void QResArscEditor::onSaveAsReleased_Slot(void)
49+
{
50+
QString t_filter = m_LE_filePath->text().endsWith(".apk", Qt::CaseInsensitive) ? tr("ARSC File (*.arsc);;APK File (*.apk)") : tr("ARSC File (*.arsc)");
51+
4352
QString t_FileName = QFileDialog::getSaveFileName(this, tr("OutPut ARSC File"), m_basePath,
44-
tr("ARSC File (*.arsc)"), NULL, QFileDialog::DontConfirmOverwrite);
53+
t_filter, NULL, QFileDialog::DontConfirmOverwrite);
4554
if (t_FileName.isEmpty())
4655
return;
56+
57+
if (t_FileName.endsWith(".apk", Qt::CaseInsensitive) && !QFile::copy(m_LE_filePath->text(), t_FileName))
58+
{
59+
QMessageBox::warning(this, tr("warning"), tr("The specified file cannot be written in !"));
60+
return;
61+
}
62+
4763
m_basePath = QFileInfo(t_FileName).absolutePath();
4864
m_LE_filePath->setText(t_FileName);
4965
if (!m_parser->writeFile(t_FileName))

0 commit comments

Comments
 (0)