介绍 Android 封装 SDK使用前,先了解几个文件格式:
so 库:是 C 或 C++ 语言而打包成的库;
jar 包:里面包含了 class 文件与清单文件,不包括图片、页面等资源文件,是 Java 常用的方式;
aar 包:里面包含了所有资源,包括图片、页面等,是 Android 常用的方法;
了解完这三种文件格式,下面就来介绍一下用 AS 打 aar 包;
新建一个项目,完成后,点击 File ==> New ==> New Module ,如下图所示:
然后选择第二个 Android Library ,如下图所示:
然后完成即可,就可以看到,已经创建好了 Module ,如下图:
然后在 app 的 build.gradle 下添加下面的代码,应用 mylibrary :
implementation project(path: ':mylibrary')
如下图所示:
编译完成,为了测试 mylibrary 库,去添加一个 LibraryActivity ,里面的代码如下:
/**
* wuqingsen on 2019-11-21
* Mailbox:[email protected]
* annotation:
*/
public class LibraryActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_library);
}
}
新建 activity_library.xml 文件,代码如下:
代码添加完成,给出完整图片,方便观察:、
最后去 app 的 AndroidManifest.xml 文件中加入下面代码:
完整图片如下,不要加错了:
为了测试该 activity ,在 MainActivity ,加入跳转,代码如下:
public class MainActivity extends AppCompatActivity {
Button btn_SDK;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_SDK = findViewById(R.id.btn_SDK);
btn_SDK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, LibraryActivity.class);
startActivity(intent);
}
});
}
}
加入完成,运行,如下图所示:
可以看到,成功进入到的 SDK 中;
下面就来把 mylibrary 打包成 aar 格式的包,在 Terminal 中输入下面的命令,进行打包:
gradlew assembleRelease
打包成功,如下图所示:
然后去 mylibrary ==> build ==> outputs ==> aar 就可以看到我们打好的 aar 包了,如下图:
下面来测试一下这个 aar 文件是否可以正常使用,先将改 aar 文件放到 libs 文件夹下面,如下图:
再将 mylibrary 删除,点击 File ==> Project Structure ,方法如下图:
再去 app 下的 build.gradle 中添加如下代码:
implementation files('libs/mylibrary-release.aar')
如下图所示:
编译后,没有错误后,运行和上面 gif 图中效果一样就对了,OK 我报出了下面的错误:
Installation did not succeed.
The application could not be installed.
Installation failed due to: 'device 'DRGGAM0850203673' not found'
Retry
将手机上面的该 APP 卸载,再运行,OK 成功。
到这里, AS 封装一个 SDK 的简单实用就完成了,可以根据项目来改变 SDK 中的代码,以便别人使用。
如果有兴趣可以往下看;
打开我们的 mylibrary,可以看到里面包括 class 文件和 res 全部内容,如下图所示:
到这里就结束了。