重新編譯生成R檔案
1.生成smali資料夾
使用打包指令碼生成一個合併ACfunSDK後的無簽名apk包,使用apktool d xx.apk解壓apk,生成smali資料夾
2.生成R檔案
把步驟1獲得的AndroidManifest.xml檔案和res資料夾複製到一個新建的資料夾裡,使用aapt命令生成R.java檔案,命令如下:
aapt package -f -m -J /Users/Dexlin/Desktop/ -S res -I /Users/Dexlin/Library/Android/sdk/platforms/android-19/android.jar-M AndroidManifest.xml
紅色部分為需要修改的地方:
第一個紅色部分:R檔案生成後存放路徑(R檔案會自動儲存在遊戲包名目錄下)
第一個紅色部分:使用的SDK編譯版本
出現問題總結:
1.如drawable-mdpi與drawable-mdpi-v4中同時存在相同檔名的檔案,需要刪除drawable-mdpi中的檔案
2.如果遊戲的AndroidManifest.xml檔案中存在android:isGame="true"屬性,需要把它去除
3.如提示values-v21中存在不支援的樣式,去除即可
3.編譯R.java檔案
javac -source 1.6 -target 1.6 R.java)
4.生成的R檔案的jar
把R檔案所在的目錄生成為JAR
命令 jar cvf all.jar com
5.生成 dex檔案
把R檔案生成的JAR編譯為dex檔案
命令: dx --dex --output=classes.dex all.jar
*如果出現下面錯誤需要下載dx.jar(把dx.bat檔案拷貝到android-sdk\build-tools\23.0.2\lib目錄下
):
java.lang.RuntimeException: Exceptionparsing classes
atcom.android.dx.command.dexer.Main.processClass(Main.java:752)
atcom.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
atcom.android.dx.command.dexer.Main.access$1200(Main.java:85)
atcom.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
6、生成smali檔案
使用baksmali-2.0.3.jar把獲得的dex檔案轉換為smali檔案
命令:java -jar baksmali-2.0.3.jar classes.dex
7.替換smali檔案
把生成的smali檔案替換到步驟1中相同的目錄下
如:生成的smali檔案路徑為:com.test,即需要替換到步驟1中的com.test