zoukankan      html  css  js  c++  java
  • AndroidManifest修改重打包全过程

    AndroidManifest修改重打包全过程:

    作者: 蔡建良 2013-06-26

    准备工具:
    apktool.jar和signapk.jar

    下载:

    http://download.csdn.net/detail/janehlp/5651605

    1)采用apktool命令行反编译apk资源文件。
    >apktool d c:GPS.Test.Plus_1.2.4.apk D:Javaandroid_apkcrackedGPS.Test.Plus_1.2.4

    2)修改androidAndroidManifest.xml文件,修改主程序activity配置。
    添加两处:
    android:exported="true"

     <intent-filter>
          <action android:name="com.eclipsim.gpsstatus.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>


    完整配置如下:
    <activity android:label="@string/app_label" android:icon="@drawable/icon" android:name="GPSStatus" android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
                <intent-filter>
                    <action android:name="com.eclipsim.gpsstatus.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
    </activity>

    被调用的包名为: com.eclipsim.gpsstatus。
    被调用的Action名为: com.eclipsim.gpsstatus.VIEW。


    3)采用apktool命令行将修改后资源打包成apk。
    >apktool b D:Javaandroid_apkcrackedGPS.Test.Plus_1.2.4 mynew.apk


    4)采用signapk对apk进行签名。
    >java -jar signapk.jar testkey.x509.pem testkey.pk8 mynew.apk mynew2.apk


    最后,mynew2.apk为最终安装包文件,安装后就能被其它程序调用。

    5) android程序调用代码。
    String gpsStatusAction = "com.chartcross.gpstestplus.VIEW";
    String gpsStatusPackage = "com.chartcross.gpstestplus";


    boolean hasGpsStatus = false;
    List<PackageInfo> installedPackages = new ArrayList<PackageInfo>();

    installedPackages = context.getPackageManager().getInstalledPackages(0);
    if (installedPackages.size() == 0)
        installedPackages = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);


    if (installedPackages.size() > 0) {
        for( PackageInfo packageInfo : installedPackages ) {
     String packageName = packageInfo.packageName;
     
     if (packageName.startsWith(gpsStatusPackage)) {
         hasGpsStatus = true;
         break;
     }
        }
    } else {
        hasGpsStatus = true;
    }

    if (hasGpsStatus) {
        Intent intent = new Intent(gpsStatusAction);
        context.startActivity(intent);
    } else {
     

    }

  • 相关阅读:
    zigbee设备在Zstack中的体现
    第十一章 多态性练习
    IAR 下载 Fatal error: Failed to identify device. Check connections and/or reset hardware
    第十章 继承与派生练习题
    第九章 类和对象练习题(下)
    代码实现判断主机字节序(大端 or小端 )-- 面试题
    winrar解压时出现诊断信息怎么办?
    在线编译网站(持续更新)
    离线环境升级python及安装模块
    Zabbix监控DB,Tomcat
  • 原文地址:https://www.cnblogs.com/janehlp/p/3156578.html
Copyright © 2011-2022 走看看