Apkparser
前言
Android開發(fā)中的技術(shù)選型,針對某一領(lǐng)域的App,看看某些主流App是如何解決的筷黔,是自己解決還是使用開源框架。
有的框架非常優(yōu)秀但卻不為人所知仗颈,現(xiàn)在是大數(shù)據(jù)時代佛舱,各種雜亂的信息,很多信息都不是我們需要的挨决。
雖然不鼓勵這兩種行為:
- 只做API的調(diào)用者
- 造重復的輪子
但是某些框架的原理是必須深入的理解的请祖,同樣地,更多的框架如UI類型的開源庫不建議花費過多的時間去自己研究脖祈。
畢竟人的精力是有限的肆捕,我們把有限的精力花費在更有價值的事情上,而不是重復的勞動力盖高。
該 小工具 就是為了快速尋找到成熟優(yōu)秀的框架福压,學習其使用的同時掏秩,更好地學習其優(yōu)秀的設(shè)計,解析某個App時荆姆,也許會有
意外的收獲,這也是我前期不斷花費大量精力學習一些雜亂的技術(shù)不斷磨刀到現(xiàn)在的初衷映凳,為了后期少走彎路胆筒,更快的進步....
該項目的代碼不值一提,因為硬盤多次壞掉诈豌,僅做備份使用仆救,為省事把PlantUML和ApkParser工具合并在了一起。
相對Android和Swing而言矫渔,JavaFX太容易了彤蔽,Api簡潔好用,缺點就是build成exe的時候包實在太大了庙洼,60M左右顿痪,所以僅僅上傳了可運行的Jar,
你只需要 antbuild/dist
目錄中的文件下載下來即可運行(確保JRE已安裝)油够。
tips
項目代碼就無需研究了蚁袭,UI只用了一個類,沒什么可看的石咬,不過JavaFX值得一看揩悄,如果你懂Android,僅需一天即可掌握基礎(chǔ)鬼悠。
項目截圖
導入簡書apk為例:
================================
packageName: com.douyu.hd.air.douyutv
label: 斗魚HD
icon: res/drawable-xxhdpi-v4/ic_launcher.png
versionName: 1.1.9
versionCode: 169
minSdkVersion: 16
targetSdkVersion: 23
maxSdkVersion: null
================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="169" android:versionName="1.1.9" package="com.douyu.hd.air.douyutv" platformBuildVersionCode="23" platformBuildVersionName="6.0-2704002">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:theme="resourceId:0x7f080110" android:label="斗魚HD" android:icon="res/drawable-xxhdpi-v4/ic_launcher.png" android:name="com.douyu.hd.air.douyutv.control.singleton.DouyuTvHD" android:allowBackup="false">
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.LiveActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.ScannerActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.SearchActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" android:windowSoftInputMode="0x2" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.GameSelectActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.RegisterActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.SearchResultActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.HistoryActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.RoomActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" android:windowSoftInputMode="0x10" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.MainActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.SplashActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.WebViewActivity" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" android:windowSoftInputMode="0x2" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.FollowActivity" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" android:windowSoftInputMode="0x2" />
<activity android:theme="resourceId:0x7f08010d" android:name="com.douyu.hd.air.douyutv.control.activity.GameCenterDetailsActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:configChanges="0x4a0" />
<meta-data android:name="UMENG_APPKEY" android:value="xxx" />
<meta-data android:name="UMENG_CHANNEL" android:value="portal" />
<meta-data android:name="AID" android:value="androidhd1" />
<meta-data android:name="APP_VERSION" android:value="50000119" />
<meta-data android:name="APP_UPDATE_CODE" android:value="2" />
<meta-data android:name="BIZ_TYPE" android:value="16" />
<activity android:theme="resourceId:0x7f08012a" android:name="com.umeng.socialize.editorpage.ShareActivity" android:excludeFromRecents="false" />
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name="com.tencent.tauth.AuthActivity" android:launchMode="standard" android:screenOrientation="sensorLandscape" android:noHistory="false">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="xxx" />
</intent-filter>
</activity>
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name="com.tencent.connect.common.AssistActivity" android:configChanges="0x4a0" />
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name="tv.douyu.wxapi.WBShareActivity" android:screenOrientation="portrait" android:configChanges="0xa0">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser" android:exported="false" android:configChanges="0xa0" android:windowSoftInputMode="0x10" />
<service android:name="com.sina.weibo.sdk.net.DownloadService" android:exported="false" />
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name="tv.douyu.wxapi.WXEntryActivity" android:exported="false" android:screenOrientation="portrait" android:configChanges="0x4a0" />
</application>
</manifest>
================================
com.facebook.fbcore
tv.danmaku.ijk
com.tencent.mm
com.facebook.datasource
tv.douyu.wxapi
com.douyu.lib
com.tencent.map
okhttp3.internal.tls
com.facebook.imageformat
com.tencent.stat
com.facebook.drawee
com.nineoldandroids.util
com.facebook.common
com.tencent.open
okhttp3.internal.platform
android.support.v4
android.support.v7
android.support.design
okhttp3.internal.framed
tv.douyu.b
tv.douyu.a
com.orhanobut.logger
tv.douyu.model
com.facebook.imagepipeline
okhttp3.internal.io
com.alibaba.fastjson
android.support.annotation
com.facebook.cache
com.facebook.imageutils
tv.douyu.widget
com.tencent.connect
com.sina.weibo
com.umeng.analytics
com.sina.sso
okhttp3.internal.cache
com.tencent.wxop
com.bigkoo.convenientbanner
tv.douyu.library
com.douyu.hd
tv.douyu.singleton
org.apache.http
com.facebook.drawable
com.harreke.easyapp
com.google.zxing
com.umeng.socialize
com.tencent.weibo
okhttp3.internal.connection
com.tencent.a
okhttp3.internal.http
com.facebook.binaryresource
com.tencent.qqconnect
com.tencent.tauth