|
|
如果本人免费教程有用请多多分享,转载请注明作者,By:函少,转载推介直接复制本贴地址!因为有课程关联
课程关联:
第一课【入门必修】
第三课【实战进阶】
第四课【实用技巧】
第五课【实用技巧】
第六课【会员演示】
增加转载博客内容:
深入理解Dalvik字节码指令及Smali文件
注:点击蓝色字体直接跳转哦
虽然上篇视频教程已经带新人怎么使用MT管理器以及简单实战了,还想了解就继续深入吧!
前言:如果要转载本篇内容,请直接复制本贴地址。By:函少讲解
我一向要么不发教程,重复内容更不会发,要么潜水,要么大爆发,顶不顶帖,摸着良心。我又不能置顶,让先上车的看了,后上车的的新人怎么办?论坛的创建不就是为了方便新人吗?
我又来慷慨解囊,继续第二课,【深入认识】 由于东西内容太多只能代码格式,加顶部说明大概了。不重要的留最后
去广告去布局去启动页最常用是吧好先插一波
- 主入口定义条件。没这俩个定义就不是主Activity
- <intent-filter>
- <action
- android:name="android.intent.action.MAIN" />
- <category
- android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- 举例说明
- <activity #开始
- android:theme="@7f09013a"
- android:name="com.kuxuexi.base.core.ui.SplashActivity‘’
- android:screenOrientation="portrait"
- android:windowSoftInputMode="adjustPan">
- <intent-filter> #定义开始
- <action
- android:name="android.intent.action.MAIN" />
- <category
- android:name="android.intent.category.LAUNCHER" />
- </intent-filter> # 定义结束
- </activity> #结束语,一般含定义的只能用这个结束方法, </activity>
-
- 没带定义的
- 举例说明
- <activity #开始
- android:name="cc.binmt.mtestapp.MainActivity" /> #结束这次这个结束语是 /> 对没错因为里面没定义所有可以用这个结束语也同时可以用 </activity> 不过编译完又会变回 />
- 结论:所有可以利用MT的activity记录,查看最后那个活动是哪个,把原来启动活动下的所有定义放到主界面的活动下就可以了。(注:原来启动活动下必须要要有结束语</activity> 或者 />)
- 咦咦咦咦是不是发现什么了,对哈没错 < 这是开始,带 / 的都是结束,理论XML所有文件都这个形式。所有去布局先找到开始
- 还是不懂吗???我举例吧!
- <LinearLayout 这是开始
- </LinearLayout> 这是结束
- <RelativeLayout 这是开始
- </RelativeLayout> 这是结束
- <application 这是开始
- </application> 这是结束
- <provider 这是开始
- </provider> 这是结束
- 还不懂也无言以对了!
复制代码
了解APK构造
屏幕方向修改
- 屏幕旋转修改
- 通过AndroidManifest.xml設置屏幕方向android:screenOrientation详解
- 申明:少部分小应用会没有android:screenOrientation="xxxxx">
- 记得手动加入,什么手动加入这么多活动加到何年马月。
- 不急可以选择替换功能一键替换比如查找 <activity
- 替换内容 <activity android:screenOrientation="xxxxx">
- 注意的是中间一定要多空格,不要担心他不换行,编译完自动换行的,相信我。
- <activity
- android:name=".MyActivity"
- android:label="@string/app_name"
- android:screenOrientation="portrait">
- android:screenOrientation引号里的设定该活动的方向, 该值可以是任何一个下面的字符串:
- landscape:固定界面为横屏,打开旋转屏幕也不会改变当前状态。
- reverseLandscape与正常的横屏屏,方向相反显示,
- portrait:固定界面为竖屏,打开旋转屏幕也不会改变当前状态。
- reversePortrait与正常的竖屏,方向相反显示,
- user:用户当前的首选方向,(打开系统屏幕旋转,界面才会跟着旋转)不支持reversePortrait属性
- fullUser 用户当前的首选方向,(打开系统屏幕旋转,界面才会跟着旋转)且同时还支持reversePortrait属性
- unspecified:由系统选择显示方向,不同的设备可能会有所不同。(打开系统屏幕旋转,界面会跟着旋转)
- sensor 屏幕方向跟随传感器,无论系统是否设置为自动转屏,activity页面都会跟随传感器而转屏。不支持reversePortrait属性
- fullSensor 屏幕方向全跟随传感器,无论系统是否设置为自动转屏,activity页面都会跟随传感器而转屏。且同时还支持reversePortrait属性
- sensorLandscape:横屏的旋转,不会出现竖屏的现象,根据传感器定位方向,旋转手机180度界面旋转。一般横屏游戏会是这个属性。
- sensorPortrait:竖屏的旋转,不会出现横屏的现象,根据传感器定位方向,旋转手机180度界面会旋转。
- nosensor:设置activity屏幕方向为不跟随传感器nosensor时,无论系统是否设置为自动转屏,activity页面都不会转屏。(锁定屏幕的意思)
- locked 固定方向,不跟随传感器,也不跟随屏幕旋转设置,无论系统是否设置为自动转屏,activity页面都不会转屏。(锁定屏幕的意思)
- behind 与前一个activity方向相同
复制代码
新手必读dex的if判断smali语法
- 新手必读smali背部分语法的意思(必背):条件判定
-
- 给你们写简单些,这下记住了吧
- eq等于 ne 不等于
-
- lt小于 gt大于
-
- ge大于等于 le小于等于
- z零的意思 e是等于的意思 n不的意思 l小的意思 g大的意思
- if-eq vA, vB, :cond_** 如果vA等于vB则跳转到:cond_**
- if-ne vA, vB, :cond_** 如果vA不等于vB则跳转到:cond_**
- if-lt vA, vB, :cond_** 如果vA小于vB则跳转到:cond_**
- if-ge vA, vB, :cond_** 如果vA大于等于vB则跳转到:cond_**
- if-gt vA, vB, :cond_** 如果vA大于vB则跳转到:cond_**
- if-le vA, vB, :cond_** 如果vA小于等于vB则跳转到:cond_**
- if-eqz vA, :cond_** 如果vA等于0则跳转到:cond_**
- if-nez vA, :cond_** 如果vA不等于0则跳转到:cond_**
- if-ltz vA, :cond_** 如果vA小于0则跳转到:cond_**
- if-gez vA, :cond_** 如果vA大于等于0则跳转到:cond_**
- if-gtz vA, :cond_** 如果vA大于0则跳转到:cond_**
- if-lez vA, :cond_** 如果vA小于等于0则跳转到:cond_**
- 3.跳转指令
- if-eq 等于则跳转 ==
- if-ne 不等于则跳转 !=
- if-lt 小于则跳转 <
- if-gt 大于则跳转 >
- if-ge 大于或等于则跳转 >=
- if-le 小于或等于则跳转 <=
- goto 无条件跳转
- switch 分支跳转
-
- “goto :label_**”直接跳转到:label_**
- goto的使用。
- 假如成功的源头是;switch_99298
- 因为它后面超过8位带宽。goto/不够用。所以用goto/16
- 也就是说改的时候。如果goto对应分支位数不足。语法不高亮那么就会出错。
- 【goto分为;goto goto/16 goto/32】
- 【goto在代码里的应用:无条件跳转
-
- "label:**"分支用于跳转的,就是执行它下面的一串代码
复制代码
论坛通用的字体代码
- [color=FF0000]中间填字[/color] 注颜色代码自己填
- [size=9]9代表字体大小[/size] 注只变字体不改色
- [color=FF0000][size=6]变大加颜色[/size][/color] 注变大加色
- [hide]隐藏[/hide] 这个貌似我还没试过
复制代码
满足你们好奇心补充arsc里语言包
安卓版本SDK,又称API
- 安卓平台 API 版本代码
- Android9 28 P
- Android 8.1 27 O_MR1
- Android 8.0 26 O
- Android 7.1和 7.1.2 25 N_MR1
- Android 7.0 24 N
- Android 6.0 23 M
- Android 5.1 22 LOLLIPOP_MR1
- Android 5.0 21 LOLLIPOP
- Android 4.4W 20 KITKAT_WATCH
- Android 4.4 19 KITKAT
- Android 4.3 18 JELLY_BEAN_MR2
- Android 4.2, 4.2.2 17 JELLY_BEAN_MR1
- Android 4.1, 4.1.1 16 JELLY_BEAN
- Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1
- Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
- Android 3.2 13 HONEYCOMB_MR2
- Android 3.1.x 12 HONEYCOMB_MR1
- Android 3.0.x 11 HONEYCOMB
- Android 2.3.3, 2.3.4 10 GINGERBREAD_MR1
- Android 2.3, 2.3.1, 2.3.2 9 GINGERBREAD
- Android 2.2.x 8 FROYO
- Android 2.1.x 7 ECLAIR_MR1
- Android 2.0.1 6 ECLAIR_0_1
- Android 2.0 5 ECLAIR
- Android 1.6 4 DONUT
- Android 1.5 3 CUPCAKE
- Android 1.1 2 BASE_1_1
- Android 1.0 1 BASE
复制代码
安卓APK路径说明
- 系统自带程序在SYSTEM/APP下,自行安装的程序是在DATA/APP下。
- 通过手机备份软件查看无root方式,已知问题部分厂商会加密。
- 找到备份文件wifiConfig.db(在SD卡/Backup/backupfiles文件夹下)注软件备份路径都是不一样的,这只是举例。
- 长按wifiConfig.db,选择重命名,把db改为txt,确定。
- 用mt管理器打开根目录下查看已链接WiFi密码
- data/misc/wifi/wpa_supplicant.conf,
- 就能在里面看到最近连接过的wifi和密码
- PSK为密码 SSID为广播也就是WiFi名称了
复制代码 |
-
查看全部评分
总评分:好评 +37
金币 +67
|