替换布局文件夹和java文件夹中的文件(android studio)
如何替换正在运行的应用程序中的某些文件(主要活动文件),例如: /src/main/java/[com.package.name]/home.java /src/main/res/layout/home.xml 与其他文件一起: /src/main/assets/home.java /src/main/assets/home.xml 我试过:替换布局文件夹和java文件夹中的文件(android studio),java,file,android-studio,replace,path,Java,File,Android Studio,Replace,Path,如何替换正在运行的应用程序中的某些文件(主要活动文件),例如: /src/main/java/[com.package.name]/home.java /src/main/res/layout/home.xml 与其他文件一起: /src/main/assets/home.java /src/main/assets/home.xml 我试过: protected void onPostExecute(String result) { alertDialog.setMessage(resu
protected void onPostExecute(String result) {
alertDialog.setMessage(result);
alertDialog.show();
if (result.length() == 5) {
String sourcePath1 = "/src/main/assets/activity_home.xml";
File source1 = new File(sourcePath1);
String sourcePath2 = "/src/main/assets/home.java";
File source2 = new File(sourcePath2);
String destinationPath1 = "/src/main/res/layout/activity_home.xml";
File destination1 = new File(destinationPath1);
String destinationPath2 = "/src/main/java/cz/oscio/oscioosp/home.java";
File destination2 = new File(destinationPath2);
try {
FileUtils.copyFile(source1, destination1);
FileUtils.copyFile(source2, destination2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
但它不起作用,我怀疑是错误的文件路径。如果我尝试:
getAssets().open("activity_home.xml") //Cannot resolve method 'getAssets()'
但无论如何,这在/src/main/res/layout/
的情况下都没有帮助
编辑:它只能做一次-它会改变应用程序本身,更新代码
报告:
java.io.FileNotFoundException:源“/src/main/assets/activity\u home.xml”不存在
位于org.apache.commons.io.FileUtils.copyFile(FileUtils.java:636)
位于org.apache.commons.io.FileUtils.copyFile(FileUtils.java:606)
位于cz.oscio.oscioosp.logging.onPostExecute(logging.java:112)
位于cz.oscio.oscioosp.logging.onPostExecute(logging.java:33)
位于android.os.AsyncTask.finish(AsyncTask.java:651)
位于android.os.AsyncTask.-wrap1(AsyncTask.java)
位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
位于android.os.Handler.dispatchMessage(Handler.java:102)
在android.os.Looper.loop(Looper.java:148)位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
stacktrace很有说服力:
“/src/main/assets/activity_home.xml”不存在
。找不到该文件,因此对其进行处理将引发异常
您可以使用System.getProperty(“user.dir”)检查应用程序的当前目录代码>。但是,除非您使用某些特定的方法对其进行更改,否则该目录应该是应用程序的根目录
你的路径应该是正确的(据我所知),但正如我在评论中所说,你不应该以/
开始你的路径,因为路径将被解释为绝对路径,即从你的计算机根目录开始。相反,您的路径应该是src/main/assets/activity\u home.xml
您的路径以“/”或“/”开头?因为它将被不同的解释我建议我的路径从应用程序开始,所以我只是从应用程序文件夹。。。(比如C:/Users/Public/MYAPP/app/src/main/assets/home.xml),因此我使用了/src/main…我的意思是,如果您的路径以/
开头,它可能(可能)被解释为非相对路径,即从您的主目录开始。您是否尝试过放置绝对路径(C:/Users/Public/MYAPP/app/src/main/assets/home.xml)?不,这不是一个解决方案,因为此应用程序必须在手机上运行,我需要从(已安装应用程序的)apk文件夹开始。。。我的布局文件夹已经包含相同的命名文件,这不是问题吗?我想要一个新的来替换它…你如何从应用程序根文件夹中找到路径?我做错了吗?谢谢,src/main/assets/activity_home.xml
好多了:)@Jiří不客气。现在我意识到我应该在我的评论中更加清楚:我发布的第一条评论指出了与这个答案相同的东西(即,相对路径与绝对路径),那是18小时前的事了:祝你度过愉快的一天!不,一开始我没有检查我的if条件,我已经认为我的字符串错了。。。即使认为它是错误的,起初,由于false if条件(虽然我仍然不知道为什么它返回false,但.lenght()
帮助…导致System.out.println(result.lenght());
返回5和System.out.println(result);
返回完成…但现在它工作了:)