[實作講解] 摩斯密碼 (Smali繁化 & 去廣告)

這篇一樣是我之前打的私人教學
原檔因為還要找很麻煩就不附了


教學之前先大致看一下主介面

軟體的了解越深入會對翻譯工作有很好的幫助








初步判斷應該會是在 strings 和 arrays 裡面


Step #1


一樣是反編譯

反編譯後得到下圖的東西



Step #2


因為這次一樣是繁化軟體

所以直接進 res 資料夾

 


這邊我選擇先刪除其他語言再開始翻譯

一樣, 如果經驗不足的話建議刪除後先反編譯一次

精簡後體積差不多少了 400K 左右

Step #3

開始翻譯
首先我們先進入 values 裡面



打開之前判斷的 strings 和 arrays



arrays.xml
<?xml version="1.0"encoding="utf-8"?>
<resources>
    <string-array name="conversionSpeed">
        <item>Super fast •25</item>
        <item>Very fast •20</item>
        <item>Fast •15</item>
        <item>Normal •10</item>
        <item>Slow •5</item>
    </string-array>
    <string-array name="wpm">
        <item>25</item>
        <item>20</item>
        <item>15</item>
        <item>10</item>
        <item>5</item>
    </string-array>
</resources>

對比上面的圖可以發現,確定有需要翻的字
把 arrays.xml 複製到 values-zh-rTW 裡面


接下來看 strings


我反白的那些字在上面的圖有出現過,所以也能確定了
跟剛剛一樣,複製一份到繁中語系去


將字翻譯完畢之後就可以回編譯測試看看

(字不需要每個都翻)

測試之後會發現
文本翻譯部分在轉換後會變成英文
判斷文字應該是在 smali 裡面



Step #4

這時候我們用搜尋目錄的方式
搜尋 "Morse"
會出現很多結果
我們找最有可能的
把它替換成 "摩斯密碼" 的 unicode 代碼
Text 的部分也是一樣

修改完畢之後在回編譯一次

基本上繁化的工作就完成了

Step #5


最後說一下去廣告的部分

去廣告有很多種方法
就我個人來說
我每次處理廣告的方法也都不太一樣
這次我用的方法是把廣告的配置代碼刪除後再修改佈局


首先先打開 AndroidManifest.xml
<?xml version="1.0"encoding="utf-8"standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.pacioanudavid.morse"platformBuildVersionCode="21"platformBuildVersionName="5.0.1-1624448">
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-feature android:name="android.hardware.camera"android:required="false"/>
    <application android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme">
        <activity android:label="@string/app_name"android:launchMode="singleTask"android:name="com.pacioanudavid.morse.Main"android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:mimeType="text/plain"/>
            </intent-filter>
        </activity>
        <activity android:name="com.pacioanudavid.morse.MorseCode"android:theme="@style/SettingsTheme"/>
        <activity android:name="com.pacioanudavid.morse.Settings"android:theme="@style/SettingsTheme"/>
        <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:label="RecyclerViewTestActivity"android:name="android.support.v7.widget.TestActivity"/>
    </application>
</manifest>


找到這句
<activity android:name="com.google.android.gms.ads.AdActivity"/>
這是典型的 google 廣告配置代碼
刪除掉之後程式就沒辦法下載廣告了


不過雖然已經沒辦法下載廣告

但一般的程式都會寫入驗證代碼來檢驗是否有人把配置代碼刪除
這時我們可以選擇修改源碼或是修改廣告的大小

這邊我用比較簡單的修改佈局方式
使用搜尋目錄的方式搜尋 "adview"
一般只要搜尋 layout 資料夾就好了
不過為了保險起見最好還是把整個 res 都搜尋一下

會搜到類似下面的結果
<com.google.android.gms.ads.AdView android:id="@id/adView"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"fab:adSize="SMART_BANNER"fab:adUnitId="@string/banner_bottom_ad_unit_id"/>

找到高度 (height) 和寬度 (width)
把 fill_parent 和 wrap_content 都改成 0.0dip

這麼做是要把廣告的視窗修改到看不見

把搜尋到的代碼稍微處理完以後就可以算是完工了
再次回編譯測試看看




結語

這篇其實算是我到目前為止覺得最好的一個素材
包含Smali, xml繁化和去廣告
基本上掌握了這些之後就可以完成8成以上的軟體繁化了
剩下的只是經驗問題
這部分當然是要靠平時的練習


PS:可以的話留個心得或建議之類的



其他實作講解:


延伸閱讀
About Sean Chaox
Me

I'm soulless, so I'm recompiling my soul
I'm lifeless, so I'm enriching my life
I'm homeless, so I build this House
I am Sean, welcome to my House

1 則留言:

  1. 謝教學,過陣子之後想接觸這部分(๑・v・๑)

    回覆刪除