作者 pandada8987

update

正在显示 59 个修改的文件 包含 792 行增加6 行删除
@@ -67,6 +67,7 @@ games/ @@ -67,6 +67,7 @@ games/
67 /config/sdk/zhongjian/smali/ 67 /config/sdk/zhongjian/smali/
68 /config/sdk/qingcheng/smali/ 68 /config/sdk/qingcheng/smali/
69 /config/sdk/quick/smali/ 69 /config/sdk/quick/smali/
  70 +/config/sdk/669/smali/
70 71
71 # python打包缓存目录不需要提交 72 # python打包缓存目录不需要提交
72 **/__pycache__/ 73 **/__pycache__/
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<manifest
  3 + xmlns:android="http://schemas.android.com/apk/res/android" >
  4 + <permissionConfig>
  5 + <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  6 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  7 + <uses-permission android:name="android.permission.INTERNET" />
  8 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  9 + </permissionConfig>
  10 + <applicationConfig >
  11 + <activity
  12 + android:name="com.jhtools.union.app.MainActivity"
  13 + android:configChanges="orientation|keyboardHidden|screenSize"
  14 + android:label="@string/app_name"
  15 + android:screenOrientation="fullSensor">
  16 + </activity>
  17 + <meta-data android:name="stss_APPLICATION_PROXY_NAME"
  18 + android:value="com.stss.sdk.SsnAppListener" />
  19 + </applicationConfig>
  20 +</manifest>
不能预览此文件类型
  1 +qnAgg_GameId=qnAgg_GameId_1
  2 +qnAgg_appKey=qnAgg_appKey_987654321
  3 +qnAgg_Logcat=0
  4 +qnAgg_Req_Permission=0
  1 +#!/usr/bin/env python
  2 +# -*- coding: utf-8 -*-
  3 +
  4 +import os
  5 +import os.path
  6 +from xml.etree import ElementTree as ET
  7 +from xml.etree.ElementTree import SubElement
  8 +from xml.etree.ElementTree import Element
  9 +from xml.etree.ElementTree import ElementTree
  10 +import os
  11 +import os.path
  12 +import zipfile
  13 +import re
  14 +import subprocess
  15 +import platform
  16 +from xml.dom import minidom
  17 +import codecs
  18 +import sys
  19 +
  20 +androidNS = 'http://schemas.android.com/apk/res/android'
  21 +
  22 +def execute(channel, decompileDir, packageName):
  23 + modify_manifest(channel, decompileDir)
  24 + return 0
  25 +
  26 +def modify_manifest(channel,decompileDir):
  27 + manifestFile = decompileDir + "/AndroidManifest.xml"
  28 + print(manifestFile)
  29 + ET.register_namespace('android', androidNS)
  30 + key = '{' + androidNS + '}name'
  31 +
  32 + tree = ET.parse(manifestFile)
  33 + root = tree.getroot()
  34 +
  35 + applicationNode = root.find('application')
  36 + if applicationNode is None:
  37 + print("没有找到Application")
  38 + return
  39 +
  40 + applicationNode.set(key, 'com.stss.sdk.SsnApplication')
  41 + tree.write(manifestFile)
  42 +
  43 + activityNodeLst = applicationNode.findall('activity')
  44 + if activityNodeLst is None:
  45 + return
  46 +
  47 + mainActivityName = ''
  48 + for activityNode in activityNodeLst:
  49 + bMain = False
  50 + intentNodeLst = activityNode.findall('intent-filter')
  51 + if intentNodeLst is None:
  52 + break
  53 + for intentNode in intentNodeLst:
  54 + bFindAction = False
  55 + bFindCategory = False
  56 +
  57 + actionNodeLst = intentNode.findall('action')
  58 + if actionNodeLst is None:
  59 + break
  60 + for actionNode in actionNodeLst:
  61 + if actionNode.attrib[key] == 'android.intent.action.MAIN':
  62 + bFindAction = True
  63 + break
  64 +
  65 + categoryNodeLst = intentNode.findall('category')
  66 + if categoryNodeLst is None:
  67 + break
  68 + for categoryNode in categoryNodeLst:
  69 + if categoryNode.attrib[key] == 'android.intent.category.LAUNCHER':
  70 + bFindCategory = True
  71 + break
  72 +
  73 + if bFindAction and bFindCategory:
  74 + bMain = True
  75 + break
  76 +
  77 + if bMain:
  78 + mainActivityName = activityNode.attrib[key]
  79 + break
  80 +
  81 + if len(mainActivityName) == 0:
  82 + return
  83 +
  84 + mainActivityPath = mainActivityName.replace(".", "/")
  85 + mainActivityPath = decompileDir + '/smali/' + mainActivityPath + '.smali'
  86 +
  87 + f = open(mainActivityPath, 'r+', encoding='Utf-8')
  88 + mainActivityContent = str(f.read())
  89 + f.close()
  90 +
  91 + fl = open(mainActivityPath, 'r+')
  92 + lines = fl.readlines()
  93 + fl.close()
  94 +
  95 + superClassLine = lines[1]
  96 + superClassLine.strip()
  97 + superClassName = 'Landroid/app/Activity;'
  98 + if superClassLine.startswith(".super"):
  99 + blocks = superClassLine.split()
  100 + superClassName = blocks[len(blocks)-1]
  101 +
  102 + replaceTxt = 'invoke-super {p0, p1, p2, p3}, ' + superClassName + '->onRequestPermissionsResult(I[Ljava/lang/String;[I)V'
  103 +
  104 + idx = mainActivityContent.find(replaceTxt)
  105 + if idx == -1:
  106 + targetTxt = "\n.method public onRequestPermissionsResult(I[Ljava/lang/String;[I)V\n .locals 2\n\n invoke-super {p0, p1, p2, p3}, " + superClassName + "->onRequestPermissionsResult(I[Ljava/lang/String;[I)V\n\n invoke-static {p1, p2, p3}, Lcom/stss/sdk/STSSAggGame;->onRequestPermissionsResult(I[Ljava/lang/String;[I)V\n\n return-void\n.end method"
  107 + mainActivityContent = mainActivityContent + targetTxt
  108 + else:
  109 + targetTxt = " invoke-super {p0, p1, p2, p3}, " + superClassName + "->onRequestPermissionsResult(I[Ljava/lang/String;[I)V\n\n invoke-static {p1, p2, p3}, Lcom/stss/sdk/STSSAggGame;->onRequestPermissionsResult(I[Ljava/lang/String;[I)V"
  110 + mainActivityContent = mainActivityContent[:idx] + targetTxt + mainActivityContent[(idx + len(replaceTxt)):]
  111 +
  112 + f2 = open(mainActivityPath, 'w', encoding='Utf-8')
  113 + f2.write(mainActivityContent)
  114 + f2.close()
  115 +
  116 + return 0
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<config>
  3 + <params>
  4 + <param name="pay_notify_url" required="1" showName="NotifyUrl" desc="669 sdk game id" bWriteInManifest="0" bWriteInClient="1" />
  5 + </params>
  6 + <operations>
  7 + <operation step="1" type="mergeManifest" from="SDKManifest.xml" to="AndroidManifest.xml" />
  8 + <operation step="2" type="copyRes" from="assets" to="assets" />
  9 + <operation step="3" type="copyRes" from="libs" to="lib" />
  10 + <operation step="4" type="copyRes" from="res" to="res" />
  11 + <operation step="5" type="copyRes" from="root" to="" />
  12 + </operations>
  13 + <plugins>
  14 + <plugin name="com.stss.sdk.SsnUser" type="1" desc="用户登录接口"/>
  15 + <plugin name="com.stss.sdk.SsnPay" type="2" desc="用户支付接口"/>
  16 + </plugins>
  17 + <version>
  18 + <name>669</name>
  19 + <versionCode>1</versionCode>
  20 + <versionName>1.0.1</versionName>
  21 + </version>
  22 +</config>
不能预览此文件类型
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<alpha xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:fromAlpha="0"
  4 + android:toAlpha="1"
  5 + android:fillAfter="true"
  6 + android:fillEnabled="true"
  7 + android:duration="@android:integer/config_shortAnimTime">
  8 +</alpha>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<alpha xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:fromAlpha="1"
  4 + android:toAlpha="0"
  5 + android:fillAfter="true"
  6 + android:fillEnabled="true"
  7 + android:duration="@android:integer/config_shortAnimTime">
  8 +</alpha>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:state_pressed="true">
  4 + <shape xmlns:android="http://schemas.android.com/apk/res/android">
  5 + <solid android:color="@color/qnAgg_color_ea6e00" />
  6 +
  7 + <corners android:radius="25dp" />
  8 + </shape>
  9 + </item>
  10 + <item>
  11 + <shape xmlns:android="http://schemas.android.com/apk/res/android">
  12 + <solid android:color="@color/qnAgg_color_ff7800" />
  13 +
  14 + <corners android:radius="25dp" />
  15 + </shape>
  16 + </item>
  17 +</selector>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:shape="rectangle">
  4 + <!-- 填充的颜色 -->
  5 + <solid android:color="@color/qnAgg_gray" />
  6 + <!-- 设置按钮的四个角为弧形 -->
  7 + <!-- android:radius 弧形的半径 -->
  8 + <corners android:radius="30dip" />
  9 + <!--边框的宽度及颜色-->
  10 + <stroke android:width="2px" android:color="@color/qnAgg_login_btn_color" />
  11 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <solid android:color="#FFFFFF" />
  4 + <corners android:radius="12dp" />
  5 + <stroke android:width="1dp" android:color="#EFD4A9" />
  6 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <solid android:color="#FFFFFF" />
  4 + <stroke android:width="1dp" android:color="#000000" />
  5 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +
  3 +
  4 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  5 + <solid android:color="#ac000000"/>
  6 + <corners android:radius="8dp"/>
  7 + <stroke
  8 + android:width="1dp"
  9 + android:color="#5b5c61"/>
  10 +
  11 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <solid android:color="#ac000000"/>
  4 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + android:shape="rectangle">
  5 +
  6 + <corners
  7 + android:bottomLeftRadius="8dp"
  8 + android:bottomRightRadius="8dp"
  9 + android:topLeftRadius="8dp"
  10 + android:topRightRadius="8dp"/>
  11 +
  12 + <!--<stroke-->
  13 + <!--android:width="1dp"-->
  14 + <!--android:color="#fbfbfb"/>-->
  15 +
  16 + <solid android:color="@android:color/transparent"/>
  17 +
  18 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + android:shape="rectangle">
  5 +
  6 + <corners
  7 + android:bottomLeftRadius="8dp"
  8 + android:bottomRightRadius="8dp"
  9 + android:topLeftRadius="8dp"
  10 + android:topRightRadius="8dp"/>
  11 +
  12 + <!--<stroke-->
  13 + <!--android:width="1dp"-->
  14 + <!--android:color="#fbfbfb"/>-->
  15 +
  16 + <solid android:color="@android:color/transparent"/>
  17 +
  18 +</shape>
  1 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2 + android:layout_width="match_parent"
  3 + android:layout_height="wrap_content"
  4 + android:paddingLeft="10dp"
  5 + android:orientation="horizontal" >
  6 +
  7 + <ImageView
  8 + android:id="@+id/qnAgg_permission_icon"
  9 + android:layout_width="@dimen/qnAgg_px_180"
  10 + android:layout_height="@dimen/qnAgg_px_180"
  11 + android:src="@drawable/qnagg_float" />
  12 +
  13 + <LinearLayout
  14 + android:layout_width="match_parent"
  15 + android:layout_height="match_parent"
  16 + android:orientation="vertical" >
  17 + <TextView
  18 + android:id="@+id/qnAgg_permission_name"
  19 + android:layout_width="match_parent"
  20 + android:layout_height="@dimen/qnAgg_px_90"
  21 + android:text="@string/qnAgg_premission_statement"
  22 + android:textSize="@dimen/qnAgg_px_60"
  23 + android:textColor="@color/qnAgg_color_000000"/>
  24 + <TextView
  25 + android:id="@+id/qnAgg_permission_statment"
  26 + android:layout_width="match_parent"
  27 + android:layout_height="@dimen/qnAgg_px_75"
  28 + android:text="@string/qnAgg_premission_statement"
  29 + android:textSize="@dimen/qnAgg_px_45"
  30 + android:textColor="@color/qnAgg_color_000000"/>
  31 + </LinearLayout>
  32 +
  33 + <LinearLayout
  34 + android:layout_width="match_parent"
  35 + android:layout_height="1px"
  36 + android:background="@color/qnAgg_color_000000"
  37 + />
  38 +
  39 +</LinearLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + android:layout_width="match_parent"
  5 + android:layout_height="match_parent"
  6 + android:gravity="center_vertical">
  7 +
  8 + <View
  9 + style="@style/qnAgg_vertical_empty_view"
  10 + android:layout_weight="2" />
  11 +
  12 +
  13 + <LinearLayout
  14 + android:layout_width="@dimen/qnAgg_px_1024"
  15 + android:layout_height="@dimen/qnAgg_px_960"
  16 + android:gravity="center"
  17 + android:background="@drawable/qnagg_shape_main_dialog"
  18 + android:orientation="vertical">
  19 +
  20 + <ImageView
  21 + android:id="@+id/iv_company_logo"
  22 + android:layout_width="@dimen/qnAgg_px_390"
  23 + android:layout_height="@dimen/qnAgg_px_120"
  24 + android:src="@drawable/qnagg_logo"
  25 + android:layout_gravity="center"/>
  26 +
  27 +
  28 + <LinearLayout
  29 + android:layout_width="match_parent"
  30 + android:layout_height="wrap_content"
  31 + android:layout_marginLeft="@dimen/qnAgg_px_30"
  32 + android:layout_marginRight="@dimen/qnAgg_px_30"
  33 + android:orientation="horizontal"
  34 + android:padding="5dp">
  35 +
  36 + <LinearLayout
  37 + android:layout_width="match_parent"
  38 + android:layout_height="wrap_content"
  39 + android:orientation="vertical"
  40 + android:padding="5dp">
  41 +
  42 + <ListView
  43 + android:id="@+id/qnAgg_lv_permission"
  44 + android:layout_width="match_parent"
  45 + android:orientation="horizontal"
  46 + android:layout_height="@dimen/qnAgg_px_390"
  47 + android:maxHeight="@dimen/qnAgg_px_390"
  48 + android:background="@drawable/qnagg_shape_permission_lv" />
  49 +
  50 + </LinearLayout>
  51 +
  52 + <View
  53 + style="@style/qnAgg_vertical_empty_view"
  54 + android:layout_weight="2" />
  55 +
  56 + </LinearLayout>
  57 +
  58 + <View
  59 + style="@style/qnAgg_vertical_empty_view"
  60 + android:layout_weight="2" />
  61 +
  62 + <TextView
  63 + android:id="@+id/qnAgg_all_permission_desc"
  64 + android:layout_width="match_parent"
  65 + android:layout_height="wrap_content"
  66 + android:layout_marginLeft="@dimen/qnAgg_px_30"
  67 + android:layout_marginRight="@dimen/qnAgg_px_30"
  68 + android:textColor="@color/qnAgg_color_000000"
  69 + android:textSize="@dimen/qnAgg_px_36"
  70 + android:text="@string/qnAgg_permission_desc"/>
  71 +
  72 + <View
  73 + style="@style/qnAgg_vertical_empty_view"
  74 + android:layout_weight="2" />
  75 +
  76 + <LinearLayout
  77 + android:layout_width="match_parent"
  78 + android:layout_height="wrap_content"
  79 + android:orientation="horizontal"
  80 + android:padding="5dp">
  81 + <View
  82 + style="@style/qnAgg_vertical_empty_view"
  83 + android:layout_weight="2" />
  84 + <Button
  85 + android:id="@+id/qnAgg_btn_unAgree"
  86 + android:layout_width="wrap_content"
  87 + android:layout_height="@dimen/qnAgg_px_105"
  88 + android:background="@drawable/qnagg_shape_gray"
  89 + android:text="@string/qnAgg_reject"
  90 + android:textColor="@color/qnAgg_color_ffffff"/>
  91 + <View
  92 + style="@style/qnAgg_vertical_empty_view"
  93 + android:layout_weight="2" />
  94 + <Button
  95 + android:id="@+id/qnAgg_btn_sure"
  96 + android:layout_width="wrap_content"
  97 + android:layout_height="@dimen/qnAgg_px_105"
  98 + android:background="@drawable/qnagg_selector_btn_submit"
  99 + android:text="@string/qnAgg_agree"
  100 + android:textColor="@color/qnAgg_color_000000"/>
  101 + <View
  102 + style="@style/qnAgg_vertical_empty_view"
  103 + android:layout_weight="2" />
  104 +
  105 + </LinearLayout>
  106 +
  107 + <View style="@style/qnAgg_vertical_empty_view"
  108 + android:layout_weight="2" />
  109 +
  110 + </LinearLayout>
  111 +
  112 + <View
  113 + style="@style/qnAgg_vertical_empty_view"
  114 + android:layout_weight="2" />
  115 +
  116 +</LinearLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + style="@style/qnAgg_layoutStyle_commonActivity"
  5 + android:gravity="center_horizontal"
  6 + android:paddingLeft="@dimen/qnAgg_px_30"
  7 + android:paddingTop="@dimen/qnAgg_px_30"
  8 + android:paddingRight="@dimen/qnAgg_px_30"
  9 + android:background="@drawable/qnagg_shape_main_dialog">
  10 +
  11 + <LinearLayout
  12 + android:layout_width="match_parent"
  13 + android:layout_height="wrap_content"
  14 + android:gravity="center"
  15 + >
  16 +
  17 + <ImageView
  18 + android:id="@+id/iv_company_logo"
  19 + android:layout_width="@dimen/qnAgg_px_180"
  20 + android:layout_height="1px"
  21 + android:src="@drawable/qnagg_logo"
  22 + android:layout_gravity="center"/>
  23 +
  24 + <View
  25 + style="@style/qnAgg_vertical_empty_view"
  26 + android:layout_weight="2" />
  27 +
  28 + <TextView
  29 + android:id="@+id/qnAgg_tv_title"
  30 + android:layout_width="wrap_content"
  31 + android:layout_height="wrap_content"
  32 + android:textColor="@color/qnAgg_color_000000"
  33 + android:textSize="@dimen/qnAgg_px_75"
  34 + android:text="@string/qnAgg_polices"
  35 + android:gravity="center"
  36 + />
  37 +
  38 + <View
  39 + style="@style/qnAgg_vertical_empty_view"
  40 + android:layout_weight="2" />
  41 +
  42 + <TextView
  43 + android:id="@+id/qnAgg_tv_right"
  44 + android:layout_width="wrap_content"
  45 + android:layout_height="wrap_content"
  46 + android:layout_marginLeft="@dimen/qnAgg_px_3"
  47 + android:textColor="@color/qnAgg_color_000000"
  48 + android:textSize="@dimen/qnAgg_px_45"
  49 + android:text="@string/qnAgg_agreement"
  50 + android:gravity="center"
  51 + />
  52 +
  53 + </LinearLayout>
  54 +
  55 + <View
  56 + style="@style/qnAgg_vertical_empty_view"
  57 + android:layout_weight="2" />
  58 +
  59 + <LinearLayout
  60 + android:layout_width="match_parent"
  61 + android:layout_height="wrap_content"
  62 + tools:ignore="WebViewLayout"
  63 + android:orientation="vertical">
  64 + <WebView
  65 + android:id="@+id/qnAgg_webview"
  66 + android:layout_width="match_parent"
  67 + android:layout_height="150dp"
  68 + android:layout_margin="@dimen/qnAgg_px_3"
  69 + android:background="@color/qnAgg_color_ea6e00"
  70 + android:scrollbars="none" />
  71 + </LinearLayout>
  72 +
  73 + <View
  74 + style="@style/qnAgg_vertical_empty_view"
  75 + android:layout_weight="2" />
  76 + <TextView
  77 + android:layout_width="match_parent"
  78 + android:layout_height="wrap_content"
  79 + android:textColor="@color/qnAgg_color_000000"
  80 + android:textSize="@dimen/qnAgg_px_45"
  81 + android:text="@string/qnAgg_touch_agree"
  82 + />
  83 + <View
  84 + style="@style/qnAgg_vertical_empty_view"
  85 + android:layout_weight="2" />
  86 +
  87 + <LinearLayout
  88 + android:layout_width="match_parent"
  89 + android:layout_height="wrap_content"
  90 + android:orientation="horizontal"
  91 + android:padding="5dp">
  92 + <View
  93 + style="@style/qnAgg_vertical_empty_view"
  94 + android:layout_weight="2" />
  95 + <Button
  96 + android:id="@+id/qnAgg_btn_reject"
  97 + android:layout_width="wrap_content"
  98 + android:layout_height="@dimen/qnAgg_px_105"
  99 + android:background="@drawable/qnagg_shape_gray"
  100 + android:text="@string/qnAgg_reject"
  101 + android:textColor="@color/qnAgg_color_ffffff"/>
  102 + <View
  103 + style="@style/qnAgg_vertical_empty_view"
  104 + android:layout_weight="2" />
  105 + <Button
  106 + android:id="@+id/qnAgg_btn_agreement"
  107 + android:layout_width="wrap_content"
  108 + android:layout_height="@dimen/qnAgg_px_105"
  109 + android:background="@drawable/qnagg_selector_btn_submit"
  110 + android:text="@string/qnAgg_agree"
  111 + android:textColor="@color/qnAgg_color_000000"/>
  112 + <View
  113 + style="@style/qnAgg_vertical_empty_view"
  114 + android:layout_weight="2" />
  115 +
  116 + </LinearLayout>
  117 +
  118 +</LinearLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + android:id="@+id/qnAgg_splash_layout"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + >
  8 + <ImageView
  9 + android:id="@+id/qnAgg_splash_img"
  10 + android:layout_width="match_parent"
  11 + android:layout_height="match_parent"
  12 + android:background="@drawable/fd_splash"
  13 + />
  14 +
  15 +</RelativeLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_gravity="center"
  4 + android:gravity="center"
  5 + android:orientation="vertical"
  6 + android:background="@drawable/sevencattle_corners_white"
  7 + android:layout_width="280dp"
  8 + android:layout_height="200dp">
  9 +
  10 + <TextView
  11 + android:id="@+id/hw_tv_quick_popupwindow_title"
  12 + android:layout_marginTop="15dp"
  13 + android:text="温馨提示"
  14 + android:textSize="17sp"
  15 + android:layout_width="wrap_content"
  16 + android:layout_height="wrap_content"
  17 + android:textColor="@android:color/white"/>
  18 + <View
  19 + android:layout_marginTop="10dp"
  20 + android:layout_width="match_parent"
  21 + android:layout_height="1px"
  22 + android:background="@android:color/darker_gray"/>
  23 + <TextView
  24 + android:gravity="center_vertical|left"
  25 + android:id="@+id/hw_tv_quick_popupwindow_info"
  26 + android:layout_marginLeft="22dp"
  27 + android:layout_marginRight="20dp"
  28 + android:layout_width="match_parent"
  29 + android:layout_height="100dp"
  30 +
  31 + android:textColor="@android:color/white"/>
  32 +
  33 +
  34 + <LinearLayout
  35 + android:layout_width="match_parent"
  36 + android:layout_height="match_parent"
  37 + android:gravity="center_horizontal"
  38 + android:layout_marginTop="4dp"
  39 + android:orientation="horizontal">
  40 +
  41 + <TextView
  42 +
  43 + android:id="@+id/hw_tv_quick_popupwindow_cancel"
  44 + android:gravity="center"
  45 + android:text="取消"
  46 + android:background="@drawable/sevencattle_shape_button_tourist_back"
  47 + android:layout_width="0dp"
  48 + android:layout_weight="1"
  49 + android:layout_height="35dp"
  50 + android:textColor="@android:color/white"/>
  51 +
  52 +
  53 + <TextView
  54 + android:id="@+id/hw_tv_quick_popupwindow_ok"
  55 + android:gravity="center"
  56 + android:text="确定"
  57 + android:background="@drawable/sevencattle_shape_button_tourist_gamenow"
  58 + android:textColor="@android:color/white"
  59 + android:layout_width="match_parent"
  60 + android:layout_weight="1"
  61 + android:layout_height="35dp"/>
  62 + </LinearLayout>
  63 +</LinearLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <dimen name="qnAgg_px_180">60.00dp</dimen>
  4 + <dimen name="qnAgg_px_90">30.00dp</dimen>
  5 + <dimen name="qnAgg_px_60">20.00dp</dimen>
  6 + <dimen name="qnAgg_px_45">15.00dp</dimen>
  7 + <dimen name="qnAgg_px_75">25.00dp</dimen>
  8 + <dimen name="qnAgg_px_960">320.00dp</dimen>
  9 + <dimen name="qnAgg_px_1024">480.00dp</dimen>
  10 + <dimen name="qnAgg_px_390">130.00dp</dimen>
  11 + <dimen name="qnAgg_px_120">40.00dp</dimen>
  12 + <dimen name="qnAgg_px_30">10.00dp</dimen>
  13 + <dimen name="qnAgg_px_36">12.00dp</dimen>
  14 + <dimen name="qnAgg_px_105">35.00dp</dimen>
  15 + <dimen name="qnAgg_px_3">1.00dp</dimen>
  16 +
  17 + <string name="qnAgg_permission_desc">为保证您正常的应用体验,本应用现向你说明以上权限的使用用途。可通过手机系统的隐私设置关闭授权,但会影响部分功能的体验。请阅读并同意《隐私政策》和《用户协议》。点击“同意”即代表您已阅读并了解本应用将要使用的权限情况。</string>
  18 + <string name="qnAgg_permission_use">本应用可能需要使用以下权限:</string>
  19 + <string name="qnAgg_agreement">用户协议</string>
  20 + <string name="qnAgg_polices">隐私政策</string>
  21 + <string name="qnAgg_touch_agree">点击"同意"即代表您已阅读并同意上述协议及文件。</string>
  22 + <string name="qnAgg_touch_permission">点击\"同意\"即代表您已阅读并了解本应用将要使用的权限情况。</string>
  23 + <string name="qnAgg_reject">不同意</string>
  24 + <string name="qnAgg_agree">同 意</string>
  25 + <string name="qnAgg_sure">确 定</string>
  26 + <string name="qnAgg_premission_statement">本app需要如下权限及其使用说明:</string>
  27 +
  28 + <color name="qnAgg_color_000000">#000000</color>
  29 + <color name="qnAgg_color_ea6e00">#ea6e00</color>
  30 + <color name="qnAgg_color_ffffff">#ffffff</color>
  31 + <color name="qnAgg_gray">#918F92</color>
  32 + <color name="qnAgg_login_btn_color">#E7D2AC</color>
  33 + <color name="qnAgg_color_ff7800">#ff7800</color>
  34 +
  35 +
  36 + <style name="qnAgg_pluginDialogStyle" parent="@android:style/Theme.Dialog">
  37 + <item name="android:windowIsTranslucent">true</item>
  38 + <item name="android:windowNoTitle">true</item>
  39 + <item name="android:windowBackground">@android:color/transparent</item>
  40 + <item name="android:backgroundDimEnabled">false</item>
  41 + <item name="android:windowContentOverlay">@null</item>
  42 + <item name="android:windowCloseOnTouchOutside">false</item>
  43 + <item name="android:windowIsFloating">true</item>
  44 + <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
  45 + <item name="android:windowActionBar">false</item>
  46 + <item name="android:windowFullscreen">true</item>
  47 + </style>
  48 + <!--部分界面适配,用权重空白界面填充-->
  49 + <style name="qnAgg_vertical_empty_view">
  50 + <item name="android:layout_width">match_parent</item>
  51 + <item name="android:layout_height">0dp</item>
  52 + <item name="android:layout_weight">1</item>
  53 + </style>
  54 + <style name="qnAgg_layoutStyle_commonActivity">
  55 + <item name="android:layout_width">match_parent</item>
  56 + <item name="android:layout_height">match_parent</item>
  57 + <item name="android:orientation">vertical</item>
  58 + <item name="android:background">@drawable/qnagg_shape_main_dialog</item>
  59 + </style>
  60 +
  61 +</resources>
  1 +<resources>
  2 + <string name="permission_rationale_message">您已拒绝我们的授权申请,请同意授权,否则该功能将无法正常使用!</string>
  3 + <string name="permission_denied_forever_message">我们需要一些权限您拒绝或系统申请失败,请您手动设置为页面授权,否则该功能无法正常使用!</string>
  4 +</resources>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 +
  4 + <style name="qnAgg_ActivityTranslucent">
  5 + <item name="android:background">@android:color/transparent</item>
  6 + <item name="android:colorBackgroundCacheHint">@null</item>
  7 + <item name="android:windowActionBar">false</item>
  8 + <item name="android:windowNoTitle">true</item>
  9 +<!-- <item name="android:statusBarColor">@android:color/transparent</item>-->
  10 + <item name="android:backgroundDimEnabled">false</item>
  11 + <item name="android:windowBackground">@android:color/transparent</item>
  12 + <item name="android:windowContentOverlay">@null</item>
  13 + <item name="android:windowIsTranslucent">true</item>
  14 + <item name="android:windowAnimationStyle">@null</item>
  15 + <item name="android:windowDisablePreview">true</item>
  16 + </style>
  17 +
  18 + <style name="qnAgg_hw_full_screen_dialog">
  19 + <item name="android:windowFullscreen">true</item>
  20 + <item name="android:windowNoTitle">true</item>
  21 + <item name="android:windowBackground">@drawable/sevencattle_dialog_background</item>
  22 + <item name="android:windowAnimationStyle">@style/qnAgg_hw_dialog_anim</item>
  23 + </style>
  24 +
  25 + <style name="qnAgg_hw_dialog_anim">
  26 + <item name="android:windowEnterAnimation">@anim/sevencattle_dialog_enter</item>
  27 + <item name="android:windowExitAnimation">@anim/sevencattle_dialog_exit</item>
  28 +
  29 +
  30 + </style>
  31 +
  32 +</resources>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<network-security-config>
  3 + <base-config cleartextTrafficPermitted="true" />
  4 +</network-security-config>
  1 +#!/usr/bin/env python
  2 +# -*- coding: utf-8 -*-
  3 +
  4 +import argparse
  5 +import os
  6 +import os.path
  7 +import json
  8 +import os
  9 +import os.path
  10 +import codecs
  11 +import sys
  12 +
  13 +import channel_action
  14 +
  15 +
  16 +if __name__ == "__main__":
  17 +
  18 + parser = argparse.ArgumentParser(u"渠道专用操作")
  19 + parser.add_argument('-c', '--channel', help=u"渠道参数", action="store", dest="channel")
  20 + parser.add_argument('-d', '--decompileDir', help=u"反编译路径", action='store', dest="decompileDir")
  21 + parser.add_argument('-p', '--packageName', help=u"应用包名", action='store', dest="packageName")
  22 +
  23 + args = parser.parse_args()
  24 +
  25 + # print(args)
  26 +
  27 + channel = json.loads(args.channel)
  28 +
  29 + channel_action.execute(channel, args.decompileDir, args.packageName)
@@ -51,9 +51,13 @@ def modify_manifest(manifest_path): @@ -51,9 +51,13 @@ def modify_manifest(manifest_path):
51 if action is not None and action.get('{' + namespace + '}name') == 'android.intent.action.MAIN': 51 if action is not None and action.get('{' + namespace + '}name') == 'android.intent.action.MAIN':
52 origin_activity_name = activity.get('{' + namespace + '}name') 52 origin_activity_name = activity.get('{' + namespace + '}name')
53 print(origin_activity_name) 53 print(origin_activity_name)
  54 +
  55 + orientation = activity.attrib.get('{' + namespace + '}screenOrientation', "unspecified")
  56 +
54 activity.remove(intent_filter) 57 activity.remove(intent_filter)
55 tree.write(manifest_path) 58 tree.write(manifest_path)
56 manifest_add(manifest_path, tree, root, origin_activity_name) 59 manifest_add(manifest_path, tree, root, origin_activity_name)
  60 + replace_screen_orientation(orientation,manifest_path)
57 break 61 break
58 62
59 63
@@ -80,3 +84,19 @@ def manifest_add(manifest_path, tree, root, origin_activity_name): @@ -80,3 +84,19 @@ def manifest_add(manifest_path, tree, root, origin_activity_name):
80 meta_data.set('android:value', origin_activity_name) 84 meta_data.set('android:value', origin_activity_name)
81 85
82 tree.write(manifest_path) 86 tree.write(manifest_path)
  87 +
  88 +
  89 +def replace_screen_orientation(orientation,manifest_path):
  90 + if orientation=='portrait':
  91 + with open(manifest_path, 'rt') as f:
  92 + manifest_content = f.read()
  93 +
  94 + # 将所有 android:screenOrientation="portrait" 替换为 android:screenOrientation="landscape"
  95 + new_manifest_content = re.sub(r'android:screenOrientation="landscape"', 'android:screenOrientation="portrait"',
  96 + manifest_content)
  97 +
  98 + # 将修改后的内容写入新的清单文件
  99 + with open(manifest_path, 'wt') as f:
  100 + f.write(new_manifest_content)
  101 +
  102 +
1 -13:1.4.7:ce08072d529fe32cc25f2e1584c93756:c8223ad3e3a6fb421c28f092095f69e1  
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 <LinearLayout 9 <LinearLayout
10 android:layout_width="@dimen/qb_px_1024" 10 android:layout_width="@dimen/qb_px_1024"
11 android:layout_height="@dimen/qb_px_960" 11 android:layout_height="@dimen/qb_px_960"
  12 + android:id="@+id/ll_permission"
12 android:background="@drawable/shape_main_dialog" 13 android:background="@drawable/shape_main_dialog"
13 android:gravity="center" 14 android:gravity="center"
14 android:orientation="vertical"> 15 android:orientation="vertical">
@@ -21,13 +21,11 @@ import argparse @@ -21,13 +21,11 @@ import argparse
21 namespace = 'http://schemas.android.com/apk/res/android' 21 namespace = 'http://schemas.android.com/apk/res/android'
22 androidNS = 'http://schemas.android.com/apk/res/android' 22 androidNS = 'http://schemas.android.com/apk/res/android'
23 23
24 -  
25 def execute(channel, decompileDir, packageName): 24 def execute(channel, decompileDir, packageName):
26 modify_main_activity_smali(decompileDir) 25 modify_main_activity_smali(decompileDir)
27 return 0 26 return 0
28 27
29 def modify_main_activity_smali(decompileDir): 28 def modify_main_activity_smali(decompileDir):
30 -  
31 manifestFile = decompileDir + "/AndroidManifest.xml" 29 manifestFile = decompileDir + "/AndroidManifest.xml"
32 # manifestFile = file_utils.getFullPath(manifestFile) 30 # manifestFile = file_utils.getFullPath(manifestFile)
33 ET.register_namespace('android', androidNS) 31 ET.register_namespace('android', androidNS)
@@ -40,7 +38,9 @@ def modify_main_activity_smali(decompileDir): @@ -40,7 +38,9 @@ def modify_main_activity_smali(decompileDir):
40 if applicationNode is None: 38 if applicationNode is None:
41 return 39 return
42 40
43 - applicationNode.set('name', 'com.stss.sdk.ChangYouApplication') 41 + applicationNode.set(key, 'com.stss.sdk.ChangYouApplication')
  42 + tree.write(manifestFile)
  43 +
44 activityNodeLst = applicationNode.findall('activity') 44 activityNodeLst = applicationNode.findall('activity')
45 if activityNodeLst is None: 45 if activityNodeLst is None:
46 return 46 return
@@ -307,6 +307,22 @@ @@ -307,6 +307,22 @@
307 <param name="splash_copy_to_unity" value="0" /> 307 <param name="splash_copy_to_unity" value="0" />
308 </channel> 308 </channel>
309 <channel> 309 <channel>
  310 + <param name="id" value="42" />
  311 + <param name="name" value="zhongjian2" />
  312 + <param name="sdk" value="zhongjian2" />
  313 + <param name="desc" value="重剑2" />
  314 + <param name="splash" value="0" />
  315 + <param name="splash_copy_to_unity" value="0" />
  316 + </channel>
  317 + <channel>
  318 + <param name="id" value="43" />
  319 + <param name="name" value="669" />
  320 + <param name="sdk" value="669" />
  321 + <param name="desc" value="669" />
  322 + <param name="splash" value="0" />
  323 + <param name="splash_copy_to_unity" value="0" />
  324 + </channel>
  325 + <channel>
310 <param name="id" value="1000" /> 326 <param name="id" value="1000" />
311 <param name="name" value="replace-old-sevencattle" /> 327 <param name="name" value="replace-old-sevencattle" />
312 <param name="sdk" value="replace-old-sevencattle" /> 328 <param name="sdk" value="replace-old-sevencattle" />
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 <uses-permission android:name="android.permission.WRITE_SETTINGS"/> 13 <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
14 </permissionConfig> 14 </permissionConfig>
15 <applicationConfig android:usesCleartextTraffic="true" 15 <applicationConfig android:usesCleartextTraffic="true"
16 - proxyApplication="com.stss.sdk.AiLeQuAppListener"> 16 + proxyApplication="com.stss.sdk.ZhongJian2AppListener">
17 <uses-library android:name="org.apache.http.legacy" android:required="false" /> 17 <uses-library android:name="org.apache.http.legacy" android:required="false" />
18 <meta-data 18 <meta-data
19 android:name="STSS_CHANNEL_APPLICATION_CLASS" 19 android:name="STSS_CHANNEL_APPLICATION_CLASS"
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <plugin name="com.stss.sdk.ZhongJian2Pay" type="2" desc="用户支付接口"/> 17 <plugin name="com.stss.sdk.ZhongJian2Pay" type="2" desc="用户支付接口"/>
18 </plugins> 18 </plugins>
19 <version> 19 <version>
20 - <name>爱乐趣</name> 20 + <name>重剑2</name>
21 <versionCode>1</versionCode> 21 <versionCode>1</versionCode>
22 <versionName>1.0.1</versionName> 22 <versionName>1.0.1</versionName>
23 </version> 23 </version>