1.下載最新版的apktool的jar包:
https://ibotpeaches.github.io/Apktool/install/
https://bitbucket.org/iBotPeaches/apktool/downloads
(可配置apktool運行環(huán)境,Mac os: 把下載的文件copy到/usr/local/bin目錄下,修改權(quán)限為可執(zhí)行chmod a+x apktool.jar apktool)
2.反編譯:java -jar apktool.jar d xxx.apk
3.重新打包:java -jar apktool_2.2.4.jar b xxx慧耍。(在xxx目錄dist目錄下生成重新打包的apk文件)
(修改包名重新打包,注意有些布局自定義屬性要更改對應(yīng)包名馒铃,不然打包通不過)
4.簽名:
生成簽名文件, keytool -genkey -keystore test.keystore-alias test -keyalg RSA -validity 10000
簽名 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore -signedjar signed.apk t.apk 'test'
(最后的'test'要跟生成簽名 -alias 后面的test保持一致的命名)
(上傳GP要求zipalign区宇,命令:/Library/Android/sdk/build-tools/23.0.3/zipalign -v 4 test.apk zip.apk)
5.修改smali文件
注意.line 行號不能亂(只是追蹤堆棧有用)娃殖,函數(shù)調(diào)用基類不能寫錯(例如 Activity)
6.加入友盟統(tǒng)計
com 目錄下添加友盟反編譯文件夾<umeng>
Manifest中添加如下配置:
<meta-data android:value="XXXXXX" android:name="UMENG_APPKEY"></meta-data>
<meta-data android:value="test" android:name="UMENG_CHANNEL"/>
最好定義一個基類添加追蹤代碼,然后修改smail文件的基類议谷。
7.加入AdMob廣告.
com 目錄下添加AdMod反編譯文件夾<google>
Manifest中添加如下配置:
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
跟添加友盟統(tǒng)計一樣在基類里面初始化:
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
最好通過自定義View
public class MyAdView extends LinearLayout {
public MyAdView(Context context) {
super(context);
}
public MyAdView(Context context, AttributeSet attrs) {
super(context, attrs);
addAdView(context);
}
public MyAdView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void addAdView(Context context){
AdView adView = new AdView(context);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
addView(adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
}