JavaFX工具 | 主流App的技術選型

Apkparser

前言

Android開發中的技術選型,針對某一領域的App,看看某些主流App是如何解決的,是自己解決還是使用開源框架。

有的框架非常優秀但卻不為人所知,現在是大數據時代,各種雜亂的信息,很多信息都不是我們需要的。

雖然不鼓勵這兩種行為:

  1. 只做API的調用者
  2. 造重復的輪子

但是某些框架的原理是必須深入的理解的,同樣地,更多的框架如UI類型的開源庫不建議花費過多的時間去自己研究。
畢竟人的精力是有限的,我們把有限的精力花費在更有價值的事情上,而不是重復的勞動力。
小工具 就是為了快速尋找到成熟優秀的框架,學習其使用的同時,更好地學習其優秀的設計,解析某個App時,也許會有
意外的收獲,這也是我前期不斷花費大量精力學習一些雜亂的技術不斷磨刀到現在的初衷,為了后期少走彎路,更快的進步....

該項目的代碼不值一提,因為硬盤多次壞掉,僅做備份使用,為省事把PlantUML和ApkParser工具合并在了一起。

相對Android和Swing而言,JavaFX太容易了,Api簡潔好用,缺點就是build成exe的時候包實在太大了,60M左右,所以僅僅上傳了可運行的Jar,
你只需要 antbuild/dist 目錄中的文件下載下來即可運行(確保JRE已安裝)。

tips
項目代碼就無需研究了,UI只用了一個類,沒什么可看的,不過JavaFX值得一看,如果你懂Android,僅需一天即可掌握基礎。

項目截圖

image.png

image.png

image.png

image.png

導入簡書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

項目地址:https://github.com/coding-dream/Apkparser

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 這篇文章主要講述在Mobile BI(移動商務智能)開發過程中,在網絡通信、數據存儲、登錄驗證這幾個方面涉及的加密...
    雨_樹閱讀 2,603評論 0 6
  • Node.js是目前非常火熱的技術,但是它的誕生經歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,638評論 2 41
  • Installation of gnuplot and gnuplot-x11 on the DELL serve...
    hchencoder閱讀 984評論 0 0
  • 晚安!
    高崤閱讀 220評論 0 0