【发布时间】:2020-05-27 04:03:26
【问题描述】:
作为一个实验,并且作为一种强迫自己了解 tts 在 Android 上的工作原理的方法,我认为将 TextToSpeech 类的源代码复制到我的项目中的一个新类中可能会很有趣,并且将它(以及它的包名)重命名为我的项目。
这当然会导致许多类以红色突出显示,并且需要重新附加并带入我的项目中。
所以我开始重复相同的过程——将每个缺失类的源代码复制到我项目中的一个新类中——这会导致新类中缺失更多类。
我期待这些错误会发生,但理论上我希望有可能将整个 android.tts.* “树”(或任何必要的部分,以使 TextToSpeech 类函数)移植到我的项目。
这是我的代码来说明:
MainActivity.java:
public class MainActivity extends AppCompatActivity {
// notice that this not android.speech.tts.TextToSpeech class, but a local copy of it.
MyTextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new MyTextToSpeech(getApplicationContext(), new MyTextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
if (i == TextToSpeech.SUCCESS) {
begin();
}
else {
Log.i("XXX", "init failed");
}
}
}, "com.google.android.tts");
}
private void begin() {
Log.i("XXX", "It seems to have initialized!");
}
}
我已经消除了我的“自定义”TextToSpeech 类中的大部分错误(请假设这个错误是唯一剩下的错误),但是有一个类我似乎无法纳入项目:ITextToSpeechService:
显然这是一个隐藏/内部“aidl”文件,其来源是here。
我尝试将它粘贴到一个名为“aidl”的新文件夹中(在this 回答之后),它“有效”,因为它存在于aidl 文件夹中而没有错误,但是当尝试使用 gradle\tasks 编译它时\other\compileDebugAidl,我收到了这个错误:
FAILURE:构建失败并出现异常。
- 出了什么问题: 任务 ':app:compileDebugAidl' 执行失败。
工人提出了 1 个异常: java.lang.RuntimeException:java.lang.RuntimeException:java.io.IOException:com.android.ide.common.process.ProcessException:执行进程时出错/Users/boober/Library/Android/sdk/build-tools/28.0 .3/aidl 带参数 {-p/Users/boober/Library/Android/sdk/platforms/android-29/framework.aidl -o/Users/boober/Desktop/SCRAP/TTSGraft/app/build/generated/aidl_source_output_dir/调试/输出 -I/Users/boober/Desktop/SCRAP/TTSGraft/app/src/main/aidl -I/Users/boober/Desktop/SCRAP/TTSGraft/app/src/debug/aidl -I/Users/boober/ .gradle/caches/transforms-2/files-2.1/1cd7eff88f5e86d0249af2958bf465f0/core-1.1.0/aidl -I/Users/boober/.gradle/caches/transforms-2/files-2.1/929ec10604c047a76453df3294ada60ae/versionedparcelable-11. aidl -d/var/folders/vz/d68y33c14pjc9m2vrkqp2kvc0000gn/T/aidl4956045951058849495.d /Users/boober/Desktop/SCRAP/TTSGraft/app/src/main/aidl/com/booberbunz/ttsgraft/ITextToSpeechService.aidl}
...它仍然无法在 MyTextToSpeech.java 中解析。
如何在本地将此文件放入我的项目中,以便不再出现如图所示的红色“无法解决错误”?
另外一个问题:这实际上不可能——将 tts 硬编码到项目中吗?
谢谢。
【问题讨论】:
标签: android android-studio compiler-errors android-source aidl