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 {
     

    }

  • 相关阅读:
    吴恩达深度学习第4课第3周编程作业 + PIL + Python3 + Anaconda环境 + Ubuntu + 导入PIL报错的解决
    Ubuntu 14.04 16.04 17.10 + Win10 双系统安装记录 + 分区大小选择办法
    NVIDIA Titan Xp Star Wars Collector's Edition显卡深度学习工作站 + Ubuntu17.10 + Tensorflow-gpu + Anaconda3 + Python 3.6 设置
    request.getParameter() request.getAttribute()
    Gson 数据解析
    级联查询
    mybatis 从入门到精通 读书笔记
    springboot 随笔
    springboot 跨域
    select
  • 原文地址:https://www.cnblogs.com/janehlp/p/3156578.html
Copyright © 2011-2022 走看看