如何从一个具有不同内容的Android应用程序创build多个应用程序

我有两个程序。 首先是桌面应用程序(C#),另一个是Android应用程序。

C#编写一些文本文件,并把它们放在一些android应用程序文件夹中。 所以我们可以有不同的内容多个Android应用程序。 Android应用程序是预编译的。 和c#应用程序只是把testing文件(与7za),并重新打包(与zipalign)。

问题是,所有这些应用程序有一个单一的来源! 意味着相同的包名和相同的应用程序名称

如你所知,android认为相同的软件包名称相同的应用程序! 我怎么解决这个问题? 并使用不同的文本文件(内容)从单个Android应用程序创build单独的应用程序

更多细节:我有一个单一的Android应用程序(test.apk)。 我的C#应用​​程序应该编辑这个zip文件并重新打包。 将文本文件放在资产文件夹中工作正常。 但是通过这种方法,C#应用程序的输出都是一样的! 我不能单独安装在手机上,因为android操作系统相互replace它们。

  • 为什么不能MonoDroidfind我的程序集?
  • 在购买Soomla Unity3d插件的同时,Google玩错误
  • 在最近的NDK更新之后,ndk-build无法构buildSuperpoweredaudio库
  • GCC在-std = gnu ++ 0x和-std = c ++ 0x之间有什么区别,应该使用哪一个?
  • Xamarin.Forms SetHasNavigationBar false会导致PushAsync上跳转
  • Android std和stl支持
  • Xamarin.Android - 本地代码编译使逆向工程更难?
  • 使用STL和Android NDK C ++
  • 我发现自己处于类似的情况。

    我有一个应用程序,但为不同的客户(具有特定的定制,如资源,属性…)。 我最终决定用maven来pipe理整个事情。

    我所做的是在我的代码库中创build一个“config”文件夹,并在其中添加了一个客户文件夹,其中包含与他相关的属性,string,图片。

    我的结构是这样的:

    MyAppBase src/ build/ BaseAndroidManifest.xml ... config/ customerA/ logo.png customerA.xml customerA.properties customerB/ customerC/ ... 

    使用maven工件进行复制,移动,replace我然后设法按照以下方式构build客户特定的apk:

    1)创build一个所有代码复制到的临时客户特定源文件夹

     <copy todir="src_${customer}"> <fileset dir="src"/> </copy> 

    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> 

    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"/> 

    4)replace“模板”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"/> 

    5)使用客户别名签名

    6)build立APK

    7)删除临时客户文件夹

    所以,要build立一个客户特定的应用程序,我只需要:

     mvn install -Dcustomer=customerA -P release 

    希望这可能会给你一些input。

    我有一个类似的问题,我想在每个graphics不同分辨率的多个apks(单个apk与所有显示大小的图像太大)。

    我结束了创build一个自定义生成过程中,我插入了一个“预生成”的AntTask,基本上复制了正确的资源为构build和预处理源,使包已更新为每个apk ..

    找不到任何官方文档,但这应该是一个好的开始.. 使用ant到自动化构buildandroid

    您可以尝试分发一个无符号的.apk,然后使用C#应用程序中的不同键签名。 我使用signapk.jar来从命令行签署无符号的.apk。

    风险是您将私钥分发给您的客户。 如果这不是问题,那么从某种意义上说,他们正在用你的工具构build自己的应用程序,那么这可能是值得的。

    有关更多信息,请参阅以下行:

    如何签名APK Zip文件

    在Windows上不使用Eclipse的Android应用程序代码签名

    这有很好的讨论如何在您的代码中支持多个Android版本? ,它看起来在创build一个应用程序的多个版本。 答案中包含了一个明确的策略,以及所涉及的过程的细节。