Mbt*_*925 9 c# android content-management-system
我有两个程序.首先是桌面应用程序(C#),另一个是Android应用程序.
C#one生成一些文本文件并将它们放入一些Android应用程序文件夹中.所以我们可以有多个不同内容的Android应用程序.Android应用程序是预编译的.并且c#app只是将测试文件放入(使用7za)并重新打包(使用zipalign).
问题是,所有这些应用都只有一个来源!意思是相同的包名和相同的应用名称!
如您所知,android将相同的包名称视为相同的应用程序!我怎么解决这个问题?并使用不同的文本文件(内容)从单个Android应用程序创建单独的应用程序
更多细节: 我有一个Android应用程序(test.apk).我的C#应用程序应编辑此zip文件并重新打包.将文本文件放在assets文件夹中工作正常.但是通过这种方法,C#app输出的apks都是一样的!我无法单独在移动设备上安装它们,因为Android操作系统会相互替换它们.
我发现自己处于类似的情况.
我有一个应用程序,但为不同的客户(具有特定的自定义,如资源,属性......).我最终决定使用maven管理整个事情.
我所做的是在我的代码库中创建一个"config"文件夹,在其中我已经为pro customer添加了一个包含属性,字符串,与他相关的图片的文件夹.
我的结构是这样的:
MyAppBase
src/
build/
BaseAndroidManifest.xml
...
config/
customerA/
logo.png
customerA.xml
customerA.properties
customerB/
customerC/
...
Run Code Online (Sandbox Code Playgroud)
使用maven工件进行复制,移动,替换我已经设法以下列方式构建客户特定的apk:
1)创建临时客户特定源文件夹,其中所有代码都复制到该文件夹
<copy todir="src_${customer}">
<fileset dir="src"/>
</copy>
Run Code Online (Sandbox Code Playgroud)
2)重命名包和导入
<!-- Rename main package -->
<move file="src_${customer}/ch/wizche/myapp" tofile="src_${customer}/ch/wizche/${customer}"/>
<!-- Replace package imports with the newly one -->
<replace dir="src_${customer}/" value="ch.wizche.${customer}">
<include name="**/*.java"/>
<replacetoken>ch.wizche.myapp</replacetoken>
</replace>
Run Code Online (Sandbox Code Playgroud)
3)根据客户替换特定资源
<!-- Copy images icon to the drawable folder -->
<copy file="./configs/${customer}/ic_launcher_l.png" tofile="./res/drawable-ldpi/ic_launcher.png" overwrite="true" verbose="true"/>
<copy file="./configs/${customer}/ic_launcher_m.png" tofile="./res/drawable-mdpi/ic_launcher.png" overwrite="true" verbose="true"/>
Run Code Online (Sandbox Code Playgroud)
4)替换"模板"AndroidManifest并注入客户版本,名称,......
<copy file="./BaseAndroidManifest.xml" tofile="./AndroidManifest.xml" overwrite="true" verbose="true"/>
<replace file="./AndroidManifest.xml" value="ch.wizche.${customer}" token="ch.wizche.myapp"/>
<replace file="./AndroidManifest.xml" value="android:versionCode="${versionCode}" token="android:versionCode="1"/>
Run Code Online (Sandbox Code Playgroud)
5)使用客户别名签名
6)建立APK
7)删除临时客户文件夹
因此,要构建客户特定的应用程序,我只需要:
mvn install -Dcustomer=customerA -P release
Run Code Online (Sandbox Code Playgroud)
希望这可能会给你一些投入.
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |