添加启动页#
2021/5/7
实验内容
1、为学号后一位同学编写一个简单app。
新建一个emptyactivity
在layout的activity_main.xml中添加如下代码
1 <LinearLayout
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:orientation="vertical">
5
6 <TextView
7 android:layout_width="wrap_content"
8 android:layout_height="wrap_content"
9 android:text="@string/str1"
10 android:textSize="40sp"/>
11
12 <ImageView
13 android:id="@+id/imageView"
14 android:layout_width="match_parent"
15 android:layout_height="wrap_content"
16 app:srcCompat="@drawable/back" />
17 </LinearLayout>
效果如下:添加了一个textview以及一个imageview
2、将学号前一位同学编写的app添加一个启动页,并在3秒后自动跳转到原先的启动页。
(1) 收到上一位同学发来的app-debug.apk
在cmd中使用以下指令
apktool d app-debug.apk -o ./decode -f
获取smail文件
从图中可以看出,包名是test9,com.example.test9,且其中只有一个MainActivity,且对应的ID为 0x7f0b001c
(2)根据这个apk创建一个新的项目,包名为test9(com.example.test9)
(3)新建empty activity fakelaunch 添加以下代码
final Intent intent=new Intent(fakelaunch.this,MainActivity.class);
Timer timer=new Timer();
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
startActivity(intent);
}
};
timer.schedule(timerTask,3000);
}
这里添加了一个timer,用它来进行等待3秒的操作
(4)在 /layout/activity_fakelaunch.xml中添加一个imageview,代码如下
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/back"
tools:ignore="MissingConstraints" />
启动页效果如下:
(5)因为启动页为项目主页,所以要在AndroidManifest.xml中进行修改,修改代码如下:
<activity android:name=".fakelaunch">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
</activity>
上面的代码中 就是将运行程序后,看到的首页设置成fakelaunch,这样在最后的效果中,是先运行fakelaunch启动页,再等待3秒,跳转到mainactivity。
(6)使用apktool对该项目进行反编译,生成对应的decode文件夹
(7)把以下文件,复制替换到上一个同学apk反编译后的decode文件中
(8)在layout.smali添加以下代码,修改句末i的值与上面几个都不同即可
(9)将复制过来的fakelaunch修改v0编号与上面(8)中i的值一致
(10)找到启动页的xml,将其复制到目标文件夹中
(11)将androidmanifest.xml文件做以下修改,即把运行主页设置成fakelaunch
(12)插入自己的图片,重新反编译该项目,把图片文件back.png和layout相关文件重新复制进去即可,为了方便,比较两个文件夹中的内容,可以把缺少的都复制进去。
(13)接下来就是打包生成fake.apk,然后生成一个有效期100天的使用RSA算法的rsa.keystore文件,然后使用jarsigner将rsa.keystore和fake文件合成。因为在前两次作业中都有,就不再展示过程了。
(14)将fake.apk安装至模拟器,查看运行效果