示例#1
0
        //开始打包
        private void packing()
        {
            int progress = 0;

            progressBar1.Value = 0;
            label5.Text        = progress++ + " / " + mChooseChannelTable.Count;
            ApkUtils apkUtils = new ApkUtils(logListBox);

            //1. 解包
            apkUtils.unApk(apkPath);
            foreach (String channelName in mChooseChannelTable.Keys)
            {
                progressBar1.Value = 0;
                progressBar1.Value++;
                String channelId = (String)mChooseChannelTable[channelName];
                label5.Text = progress++ + " / " + mChooseChannelTable.Count;
                //2. 修改包名
                if (textBox2.Text.Length != 0)
                {
                    //logListBox.AppendText("修改包名:" + "\r\n");
                    modifiPackageName();
                }
                progressBar1.Value++;
                //3. 修改渠道号
                //logListBox.AppendText("修改渠道号:" + "\r\n");
                modifiChannelId(channelId);
                progressBar1.Value++;
                //4. 合包
                apkUtils.joinApk(apkName);
                progressBar1.Value++;
                //5. 签名
                apkUtils.signApk(apkName);
                progressBar1.Value++;
                //6. 优化
                apkUtils.alignApk(apkName, "package" + "\\" + apkName + "_" + channelId);
                progressBar1.Value++;
            }
            //7. 删除临时文件
            apkUtils.deleteFile(apkName);
            timer1.Enabled = false;
            MessageBox.Show("打包完成,打包时间:" + label6.Text, "提示", MessageBoxButtons.OK);
            logListBox.AppendText("打包完成");
            packingBtn.Enabled = true;
        }
示例#2
0
 //反编译操作
 private void button3_Click(object sender, EventArgs e)
 {
     if (radioButton1.Checked) //反编译APK
     {
         String safeName = textBox1.Text.Substring(textBox1.Text.LastIndexOf("\\") + 1);
         apkName = safeName.Substring(0, safeName.LastIndexOf("."));
         apkUtils.unApk(textBox1.Text);
         apkUtils.moveFile(apkName, textBox1.Text.Substring(0, textBox1.Text.IndexOf('.')));
     }
     else if (radioButton2.Checked) //重打包APK
     {
         apkUtils.joinApk(textBox1.Text);
         apkUtils.moveFile(apkName, textBox1.Text);
     }
     else if (radioButton5.Checked) //jar2dex
     {
         //apkUtils.jar2dex();
         apkUtils.moveFile(apkName, textBox1.Text);
     }
 }
        //开始打包
        private void doPackingAPK()
        {
            ApkUtils apkUtils = new ApkUtils(logList);

            //11.删除临时文件
            //apkUtils.deleteFile(apkName + " temp out");
            //1.解包命令
            apkUtils.unApk(apkPath);
            //2.复制assets命令
            apkUtils.copyFile("sdk_res\\" + channel + "\\assets", apkName + "\\assets");
            apkUtils.copyFile("temp", apkName + "\\assets");
            //3.修改Manifest文件
            updateManifest();
            //4.复制res命令
            apkUtils.copyFile("sdk_res\\" + channel + "\\res", apkName + "\\res");
            //4.复制多渠道jar包命令
            //apkUtils.copyFile("sdk_res\\*.jar" + channel + "\\res", "sdk_res\\" + channel + "\\libs");
            //5.jar to dex

            apkUtils.jar2dex("sdk_res\\*.jar");
            //6.dex to smali
            apkUtils.dex2smali();

            //5.jar to dex
            apkUtils.jar2dex("sdk_res\\" + channel + "\\libs\\*.jar");
            //6.dex to smali
            apkUtils.dex2smali();

            //7.复制smali文件
            apkUtils.copyFile("out", apkName + "\\smali");
            //8.合包
            apkUtils.joinApk(apkName);
            //9.签名
            apkUtils.signApk(apkName);
            //10.优化
            apkUtils.alignApk(apkName, "package\\" + apkName + "_" + channel);
            //11.删除临时文件
            //apkUtils.deleteFile(apkName + " temp out classes.dex");
            //MessageBox.Show("打包完成!", "提示", MessageBoxButtons.OK);
        }